При работе с расширенными информационными блоками Битрикса (Инфоблоки +) есть важная особенность.
Ключевая проблема
При использовании обработчика OnBeforeIBlockElementUpdate для редактирования элемента, если вы изменяете хотя бы одно свойство, необходимо указать в параметрах все свойства элемента. В противном случае остальные свойства будут затёрты.
Причина
Проблема связана с массивом PROPERTY_VALUES. Если не использовать метод $el->Update($ID, $arParams) прямо в обработчике, обработчик переопределяет $arParams['PROPERTY_VALUES'], оставляя в нём только изменение из самого обработчика. Впоследствии при вызове Update() в другом месте свойства будут сброшены.
Вывод
События — полезный инструмент, но требуют внимательного обращения и не должны использоваться бездумно.
