[OnBeforeUpdateItemProduct] - событие перед изменением товара
Здесь важно понимать что это событие работает со всеми сущностями из МС кроме модификаций (variant), для модификаций есть событие ниже.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnBeforeUpdateItemProduct',
'OnBeforeUpdateItemProductHandler'
);
function OnBeforeUpdateItemProduct(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$entity = $eventParams['entity']; //сущность в МойСклад, которая обрабатывается (три варианта значения: product / bundle / service)
$currentItem = $eventParams['currentItem']; //данные о текущем элементе инфоблока, подробнее ниже
$itemBx = $currentItem['BX']; //текущий элемент инфоблока, доступ к полям через массив
$item = $currentItem['MS']; //этот же товар из МС, доступ к полям через поля объекта
//это массив данных, который затем передается в \Bitrix\Catalog\Model\Product::update();
$productUpdate = $eventParams['productUpdate'];
//Отправляем \Bitrix\Main\EventResult::SUCCESS только в случае, если нужно поменять данные перед отправкой
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $productUpdate);
}
[OnBeforeUpdateItemVariant] - событие перед изменением товара (для модификаций)
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnBeforeUpdateItemProduct',
'OnBeforeUpdateItemProductHandler'
);
function OnBeforeUpdateItemProduct(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$entity = $eventParams['entity']; //сущность в МойСклад, которая обрабатывается (только variant)
$currentItem = $eventParams['currentItem']; //данные о текущем элементе инфоблока, подробнее ниже
$itemBx = $currentItem['BX']; //текущий элемент инфоблока, доступ к полям через массив
$item = $currentItem['MS']; //этот же товар из МС, доступ к полям через поля объекта
$parentItem = $eventParams['parentItem']; //данные о родительском товаре в битриксе
$parentItemId = $parentItem['parentId']; // ID родительского товара в битриксе
$parentItemProductParams = $parentItem['parentProductParams']; //данные родительского товара в торговом каталоге
//это массив данных, который затем передается в \Bitrix\Catalog\Model\Product::update();
$productUpdate = $eventParams['productUpdate'];
//Отправляем \Bitrix\Main\EventResult::SUCCESS только в случае, если нужно поменять данные перед отправкой
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $productUpdate);
}