Перейти к основному содержимому

Событие перед изменением товара

[OnBeforeUpdateItemProduct] - событие перед изменением товара

Событие срабатывает перед обновлением полей товара торгового каталога через \Bitrix\Catalog\Model\Product::update(). Работает со всеми сущностями из МС кроме модификаций (variant). Для модификаций есть отдельное событие ниже.

Параметры события

ПараметрТипОписание
entitystringСущность: product, bundle, service
currentItemarrayДанные о текущем элементе (содержит BX и MS)
productCurrentItemarrayТекущие поля товара в торговом каталоге
productUpdatearrayМассив данных для передачи в Product::update()

Структура currentItem

[
'BX' => [ // элемент инфоблока Битрикс
'ID' => 1234,
'IBLOCK_ID' => 5,
'NAME' => 'Название товара',
'XML_ID' => 'abc123externalcode',
'ACTIVE' => 'Y',
// ... другие поля элемента инфоблока
],
'MS' => $itemMs // объект из МойСклад
]

Структура productCurrentItem

[
'ID' => 1234,
'TYPE' => 1, // 1 = простой, 3 = с ТП, 6 = комплект
'QUANTITY' => 10.0,
'WEIGHT' => 500.0, // вес в граммах
'WIDTH' => 0.0,
'LENGTH' => 0.0,
'HEIGHT' => 0.0,
'MEASURE' => 5, // ID единицы измерения
'VAT_ID' => 1, // ID ставки НДС
'VAT_INCLUDED' => 'Y', // НДС включен в цену
'UF_PRODUCT_GROUP' => 0, // маркировка
'BARCODE_LIST' => [...] // штрихкоды (если загружены)
]

Структура productUpdate

Содержит только изменённые поля:

[
'WEIGHT' => 750.0, // вес
'WIDTH' => 10.0, // ширина
'LENGTH' => 20.0, // длина
'HEIGHT' => 5.0, // высота
'MEASURE' => 6, // единица измерения
'TYPE' => 3, // тип товара (TYPE_SKU если есть модификации)
'VAT_ID' => 2, // ставка НДС
'VAT_INCLUDED' => 'N', // НДС не включен
]

Возвращаемое значение

Верните EventResult::SUCCESS с модифицированным массивом $productUpdate.

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $productUpdate);

[OnBeforeUpdateItemVariant] - событие перед изменением товара (для модификаций)

Аналогично OnBeforeUpdateItemProduct, но срабатывает только для модификаций (variant). Дополнительно передаёт данные о родительском товаре.

Параметры события

ПараметрТипОписание
entitystringВсегда variant
currentItemarrayДанные о текущем элементе (содержит BX и MS)
parentItemarrayДанные о родительском товаре
productCurrentItemarrayТекущие поля товара (торг. предложения) в торговом каталоге
productUpdatearrayМассив данных для передачи в Product::update()

Структура parentItem

[
'parentId' => 5678, // ID родительского товара в Битрикс
'parentProductParams' => [ // данные родительского товара в торговом каталоге
'ID' => 5678,
'TYPE' => 3,
'QUANTITY' => 0.0,
'WEIGHT' => 500.0,
'WIDTH' => 10.0,
'LENGTH' => 20.0,
'HEIGHT' => 5.0,
'MEASURE' => 5,
'VAT_ID' => 1,
'VAT_INCLUDED' => 'Y',
'UF_PRODUCT_GROUP' => 0,
]
]

Возвращаемое значение

Верните EventResult::SUCCESS с модифицированным массивом $productUpdate.

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $productUpdate);