Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Добавление свойств типа список к новому элементу

00 голосов
1
Нужно перенести элементы из одного инфоблока в инфоблок другого типа. Написал такой скриптик

Код
while ($arElement = $rsElements->getNextElement()){
        $arItem = $arElement->getFields();
        $arItem['PROPERTIES']  = $arElement->getProperties();
        $arItem['PRICE'] = CPrice::GetBasePrice($arItem['ID']);
        foreach ($arItem['PROPERTIES'] as $code => $arProp){
            $arItem['PROPERTY_VALUES'][$code][0] = array("VALUE" => array("TYPE"=>"LIST", "XML_ID"=>$arProp['VALUE_XML_ID']));
        }

        unset($arItem['IBLOCK_ID']);
        unset($arItem['SECTION_ID']);
        debug($arItem['PROPERTIES']);
        debug($arItem['PROPERTY_VALUES']);

        global $USER;
        $insert = array(
              "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
              "IBLOCK_SECTION_ID" => false,          // элемент лежит в корне раздела
              "IBLOCK_ID"      => $iblock_id,
              "PROPERTY_VALUES"=> $arItem['PROPERTY_VALUES'],
              "NAME"           => $arItem['NAME'],
              "ACTIVE"         => "Y",            // активен
              "PREVIEW_TEXT"   => array('VALUE' => $arItem['PREVIEW_TEXT'], 'TYPE' => $arItem['PREVIEW_TEXT_TYPE']),
              "DETAIL_TEXT"    => array('VALUE' => $arItem['DETAIL_TEXT'], 'TYPE' => $arItem['DETAIL_TEXT_TYPE']),
              "PREVIEW_PICTURE" => CFile::MakeFileArray($arItem['PREVIEW_PICTURE']),
              "DETAIL_PICTURE" => CFile::MakeFileArray($arItem['DETAIL_PICTURE'])
        );
        $el = new CIBlockElement;
        if($new_id = $new_id = $el->Add($insert)){
              debug("New ID: ".$new_id);
            CPrice::SetBasePrice($new_id, $arItem['PRICE']['PRICE'], $arItem['PRICE']['CURRENCY']);
        }
        else
          debug("Error: ".$el->LAST_ERROR);
        debug($new_id);
    }


в общем свойства ни в какую не хотят добавляться
вместо этой строчки
Код
$arItem['PROPERTY_VALUES'][$code][0] = array("VALUE" => array("TYPE"=>"LIST", "XML_ID"=>$arProp['VALUE_XML_ID']));

пробовал кучу разных вариаций, ни в какую свойства не добавляются. И доки не совсем исчерпывающие по этому поводу

свойства двух типов: список и привязка к элементам, немножественные

кто-то может подсказать, как правильно добавлять через CIBlockElement::Add() такие свойства -
как должен выглядеть массив значений и что в нем должно содержаться, и обязательно ли описывать каждое свойство.
спросил 05 Июнь, 13 от Koffka (120 баллов)

1 Ответ

00 голосов
Цитата
Дмитрий Зыков пишет:
Нужно перенести элементы из одного инфоблока в инфоблок другого типа.
Импорт/экспорт (csv или xml) не пробовали?
ответил 05 Июнь, 13 от smileplz (8,020 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
1 ответ
спросил 16 Март, 14 от Kiriel (2,010 баллов)
0 голосов
1 ответ
спросил 06 Март, 14 от Katka8 (100 баллов)
0 голосов
4 ответов
спросил 15 Янв, 14 от Kiriel (2,010 баллов)