Найти тему

Заполнение размеров товара в 1С-Битрикс после обмена с 1С.

При выгрузке из 1С размеры товара часто приходят в множественное свойство "Реквизиты".
А все службы доставки используют данные для расчета стоимость из вкладки торгового каталога.

Данные должны быть вот тут.
Данные должны быть вот тут.

Для того, что бы загрузить их во вкладку Торгового каталога, можно воспользоваться таким скриптом.

Скрипт:
CModule::IncludeModule('iblock');
Cmodule::IncludeModule('catalog');
$iBlockID = 66; // ID инфоблока с товарами
$addProps = CIBlockElement::GetList(
Array("ID" => "ASC"),
Array("IBLOCK_ID" => $iBlockID),
false,
false,
Array(
'ID',
)
);
while ($ar_fields = $addProps->Fetch()) {
$db_props = CIBlockElement::GetProperty(
$iBlockID,
$ar_fields['ID'],
array("sort" => "asc"),
Array("CODE" => "CML2_TRAITS") // код свойства с реквизитами
);
while ($ar_props = $db_props->Fetch()) {
switch ($ar_props["DESCRIPTION"]) {
case 'Длина':
$length = $ar_props['VALUE'] * 10; //умножаем на 10, потому что в 1С все хранится в СМ, а нам нужны ММ.
break;
case 'Высота':
$height = $ar_props['VALUE'] * 10;
break;
case 'Ширина':
$width = $ar_props['VALUE'] * 10;
break;
}
}
$arFields = array('WIDTH' => $width, 'HEIGHT' => $height, 'LENGTH' => $length);
CCatalogProduct::Update($ar_fields['ID'], $arFields);
echo "Записали размеры для " . $ar_fields['ID'];
$arFields = array();
}

Вставляете его например в командную PHP строку, указываете ID нужного инфоблока, и запускаете.
Можно повесить данный скрипт на крон, что бы он переодически выполнялся и проходил по всем товарам, либо доработать его и повесить на событие изменения и добавления товара.
В общем, вариантов использования много.