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

Массово изменить коэффициент единицы измерения в каталоге

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Массово изменить коэффициент единицы измерения в каталоге

Задача: всем товарам каталога или товарам определённого раздела изменить коэффициент единицы измерения.
Автоматическая установка коэффициента для товаров при обновлении, например, устанавливать коэффициент равным 2, если цена товара превышает определенное значение:
Код
<?php
use Bitrix\Main\EventManager;
use Bitrix\Main\Loader;

EventManager::getInstance()->addEventHandler("iblock", "OnBeforeIBlockElementUpdate", "setMeasureRatioBasedOnPrice");

function setMeasureRatioBasedOnPrice(&$arFields) {
    if ($_REQUEST['mode'] == 'import') {
        Loader::includeModule('catalog');

        $elementID = $arFields['ID'];
        if (!$elementID) {
            return;
        }

        // Получим актуальную цену товара
        $res = \Bitrix\Catalog\ProductTable::getList([
            'filter' => ['ID' => $elementID],
            'select' => ['PRICE']
        ]);
        if ($item = $res->fetch()) {
            $price = floatval($item['PRICE']);

            // Устанавливаем коэффициент в зависимости от цены
            $newRatio = ($price > 1000) ? 2 : 1;

            // Получаем ID коэффициента
            $curElementRatio = \Bitrix\Catalog\MeasureRatioTable::getList([
                'filter' => [
                    '=PRODUCT_ID' => $elementID,
                ],
                'limit' => 1,
                'select' => ['ID'],
            ])->fetch();

            if ($curElementRatio) {
                // Обновляем коэффициент
                \Bitrix\Catalog\MeasureRatioTable::update($curElementRatio['ID'], [
                    'RATIO' => $newRatio,
                ]);
            }
        }
    }
}
?>
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Загрузить файлы
 

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