Событие перед изменением элемента инфоблока

\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?