Событие перед изменением элемента инфоблока
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnBeforeUpdateItem',
'OnBeforeUpdateItemHandler'
);
function OnBeforeUpdateItemHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$entity = $eventParams['entity']; //сущность в МойСклад, которая обрабатывается (четыер варианта значения: product / variant / bundle / service)
$currentItem = $eventParams['currentItem']; //данные о текущем элементе, подробнее ниже
$itemBx = $currentItem['BX']; //текущий элемент инфоблока, доступ к полям через массив
$item = $currentItem['MS']; //этот же товар из МС, доступ к полям через поля объекта
//это массив данных, которые затем передаются в CiblockElement::Update();
$arUpdateItemFields = $eventParams['arUpdateItemFields'];
//можно модифицировать массив '$arUpdateItemFields' и затем его вернуть в качестве успеха события
//например сделаем элемент не активным
//$arUpdateItemFields['ACTIVE'] = 'N';
//Отправляем \Bitrix\Main\EventResult::SUCCESS для записи изменений в элемента инфоблока
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arUpdateItemFields);
}
Last updated
Was this helpful?