Как выгрузить вес торговых предложений из 1С?

Вопрос

Выгрузка веса торговых предложений не поддерживается стандартным модулем обмена для 1С-Битрикс. Как записать вес из характеристики в торговое предложение при обмене с сайтом?

Ответ

В этом случае, вы можете доработать стандартный обмен, для передачи веса из своего реквизита в системное свойство на сайте.

Используйте наиболее близкое событие, которое можно применить для этой задачи, например OnBeforeIBlockElementUpdate.

Запишите код в /bitrix/php_interface/init.php, и выполните полный обмен данными:

AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", array("Exchange", "changeWeight"));
class Exchange {
    public static function changeWeight($id, $arFields) {
        static $handler = true;
        if ($handler) {
            $arItem = CIBlockElement::GetList(
                false,
                array('ID' => $id),
                false,
                false,
                array('ID', 'PROPERTY_MASSA_KG') // символьный код реквизита
            )->fetch();
            if ($arItem['PROPERTY_MASSA_KG_VALUE']) {
                $weightFields = array("WEIGHT" => $arItem['PROPERTY_MASSA_KG_VALUE']);
                $handler = false;
                CCatalogProduct::Update($id, $weightFields);
                $handler = true;
            }
        }
    }
}