Иногда возникает необходимость создания обработчиков для highload инфоблоков (например, программная установка UF_XML_ID, без которого не будет работать тип свойств инфоблоков "Справочник"), но в документации данный момент пока не раскрыт достаточно ясно, поэтому выкладываю тут верный вариант написания обработчиков.
Правильный вызов регистрации обработчика на примере HL-блока BrandReference с Compatibility (1я версия
обработчиков):
\Bitrix\Main\EventManager::getInstance()->registerEventHandlerCompatible(
'',
'BrandReferenceOnBeforeUpdate',
'your.module.id',
'\\YourModule\\ClassName',
'YourHandlerMethodName'
);
...
public static function YourHandlerMethodName($arr1, $fields){
// $arr1 - массив с ID=>$id
// $fields - массив полей
}
Без Compatibility (2я версия обработчиков):
\Bitrix\Main\EventManager::getInstance()->registerEventHandler(
'',
'BrandReferenceOnBeforeUpdate',
'your.module.id',
'\\YourModule\\ClassName',
'YourHandlerMethodName'
);
...
public static function YourHandlerMethodName(\Bitrix\Main\Entity\Event $event){
// $event - экземпляр класса Entity\Event, как с ним работать можно найти в этом же посте выше и на просторах интернета без проблем
}