Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

Заполнение габаритов товара, после обмена с 1С, из свойств элемента инфоблока.

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Заполнение габаритов товара, после обмена с 1С, из свойств элемента инфоблока.

Если Ваш интернет-магазин интегрирован с 1С, скорее всего столкнулись с такой проблемой: 1С не умеет выгружать параметры товара: Вес, Ширина, Высота, Глубина.
Туповатый вариант, но может кому-то пригодится. Просто оставлю его здесь.

Обновляем габариты на хитах пользователей. Суть в том, что когда пользователь переходит в корзину, обновить габариты из свойств.
Таким образом, постепенно (по мере покупок) все товары освежатся.

На примере двух свойств: ширины и высоты, остальное добавьте по необходимости.

В result_modifier.php корзины:
Код
foreach ($arResult['BASKET_ITEM_RENDER_DATA'] as $DATUM) {
    $product = $DATUM['PRODUCT_ID'];
    $iblock = CIBlockElement::GetIBlockByID($product);

    $props = CIBlockElement::GetProperty(
        $iblock,
        $product,
        false,
        [
           'CODE' => ['VYSOTA', 'SHIRINA']
         ]
    );

    $height = null;
    $width = null;

    while ($prop = $props->Fetch()) {
        switch ($prop['CODE']) {
            case 'VYSOTA':
                $height = (float)$prop['VALUE'];
                break;
            case 'SHIRINA':
                $width = (float)$prop['VALUE'];
                break;
        }
    }

    $catalogFields = [];

    // Переводим из сантиметров в миллиметры
    if ($height !== null && $height > 0) {
        $catalogFields['HEIGHT'] = $height * 10;
    }

    if ($width !== null && $width > 0) {
        $catalogFields['WIDTH'] = $width * 10;
    }

    if (!empty($catalogFields)) {
        CCatalogProduct::Update(
            $product, $catalogFields
        );
    }
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Загрузить файлы
 

Блог-note Заметки по 1С-Битрикс