ГлавнаяБлогИнфоблоки +, события [bitrix api]

Инфоблоки +, события [bitrix api]

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
6 марта 2010 г.
1 мин чтения

При работе с расширенными информационными блоками Битрикса (Инфоблоки +) есть важная особенность.

Ключевая проблема

При использовании обработчика OnBeforeIBlockElementUpdate для редактирования элемента, если вы изменяете хотя бы одно свойство, необходимо указать в параметрах все свойства элемента. В противном случае остальные свойства будут затёрты.

Причина

Проблема связана с массивом PROPERTY_VALUES. Если не использовать метод $el->Update($ID, $arParams) прямо в обработчике, обработчик переопределяет $arParams['PROPERTY_VALUES'], оставляя в нём только изменение из самого обработчика. Впоследствии при вызове Update() в другом месте свойства будут сброшены.

Вывод

События — полезный инструмент, но требуют внимательного обращения и не должны использоваться бездумно.