Код |
---|
// вместо хедера require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); // Парамеры //////////////////////////////////////////////////////////////////////////////////////////////////////////// $IBLOCK_ID = 5; // id инфоблока $arPropsCode = [ // масссив Код старого свойства => Код нового свойства 'C_WATER_SUPPLY' => 'CS_WATER', 'C_SEWERAGE_SUPPLY' => 'CS_SEWERAGE', 'C_GAS_SUPPLY' => 'CS_GAS', ]; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// CModule::IncludeModule("iblock"); $arFilter = Array( 'IBLOCK_ID'=> $IBLOCK_ID, ); $arProps4Adding = []; foreach ($arPropsCode as $PROPCODE=>$newlistPROPCODE) { $arGroup = array('PROPERTY_'.$PROPCODE); $db_res = CIBlockElement::GetList(Array(), $arFilter, $arGroup); $arValueLists = []; while($arElement = $db_res->GetNext()) { if ($arElement['PROPERTY_'.$PROPCODE.'_VALUE']) { $arValueLists[] = $arElement['PROPERTY_'.$PROPCODE.'_VALUE']; } } if (count($arValueLists)) { $arProps4Adding[$PROPCODE] = [ 'CODE' => $newlistPROPCODE, 'LIST' => $arValueLists ]; } } if ($arProps4Adding) { $ibp = new CIBlockProperty; foreach ($arProps4Adding as $PROPCODE=>$arNewProp) { // получаем информацию о свойствах $properties = \CIBlockProperty::GetList(Array(), array('CODE'=>$PROPCODE)); if ($prop_fields = $properties->Fetch()) { $arFields = Array( 'NAME' => $prop_fields['NAME'], 'ACTIVE' => 'Y', 'SORT' => $prop_fields['SORT'], 'CODE' => $arNewProp['CODE'], 'PROPERTY_TYPE' => 'L', // список 'IBLOCK_ID' => $IBLOCK_ID ); foreach ($arNewProp['LIST'] as $arList) { $arFields['VALUES'][] = Array( 'VALUE' => $arList, 'DEF' => 'N', 'SORT' => '100' ); } } // добавление echo '<pre>'.print_r((array)$arFields,true).'</pre>'; // для работы раскомментировать эту строку //$PropID = $ibp->Add($arFields); echo $PropID; } } |
Для реальной работы необходимо раскоментировать строку $PropID = $ibp->Add($arFields); в противном случае изменения будут подготовлены но не будут внесены в БД.