При выгрузке из 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 нужного инфоблока, и запускаете.
Можно повесить данный скрипт на крон, что бы он переодически выполнялся и проходил по всем товарам, либо доработать его и повесить на событие изменения и добавления товара.
В общем, вариантов использования много.