Нужно перенести элементы из одного инфоблока в инфоблок другого типа. Написал такой скриптик
в общем свойства ни в какую не хотят добавляться
вместо этой строчки
пробовал кучу разных вариаций, ни в какую свойства не добавляются. И доки не совсем исчерпывающие по этому поводу
свойства двух типов: список и привязка к элементам, немножественные
кто-то может подсказать, как правильно добавлять через CIBlockElement::Add() такие свойства -
как должен выглядеть массив значений и что в нем должно содержаться, и обязательно ли описывать каждое свойство.
Код |
---|
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() такие свойства -
как должен выглядеть массив значений и что в нем должно содержаться, и обязательно ли описывать каждое свойство.