Как избавиться от зацикливания обработчиков событий в Битриксе
newsare.net
Привет, Хабр! Меня зовут Евгений Жуков, я работаю в Битриксе и отвечаю за правильную работу торгового каталога, а также инфоблоков — именно онКак избавиться от зацикливания обработчиков событий в Битриксе
Привет, Хабр! Меня зовут Евгений Жуков, я работаю в Битриксе и отвечаю за правильную работу торгового каталога, а также инфоблоков — именно они являются базой для товаров. Разбирая запросы партнеров, вижу, что часто описываемые ими проблемы — это не ошибки в коде наших модулей, а неправильное использование возможностей. Так, например, мы регулярно получаем пожелание — внедрить возможность отключения механизма событий.Как оказалось, это связано с одной распространенной задачей: при изменении одного элемента инфоблока нужно модифицировать другой. Она встречается в разных кейсах — логирование, деактивация основного товара, когда нет активных предложений, изменение даты активности связанного элемента.Никаких проблем, скажете вы. За 10 минут пишется обработчик, использующий метод CIBlockElement::Update, вешается на событие OnBeforeIBlockElementUpdate / OnAfterIBlockElementUpdate, вызывается тестовый пример, сервер падает... Epic fail в чистом виде... Читать далее Read more