Здравствуйте.
Решаю сейчас следующую задачу. При добавление нового элемента в инфоблок в событие OnBeforeIblockElementAdd происходит следующее: из полей добавляемого элемента формируется фильтр, который передается в CIblockElementGetList. В случае, если GetList ничего не возвращает - все окей, спокойно отпускаем событие, и новый элемент создается. В случае, если GetList что-либо вернул - обновляем поля у всех отобранных элементов, при этом добавление первоначального элемента Я отменяю через return fasle. Но когда оно отменяется - откатываются и все обновления для выборки из GetList. Я так понимаю, что происходит какой-то Rollback().
Есть ли какой-то кошерный способ найти выход из ситуации?
UP:
Пришла сейчас в голову такая идея - что если завершать транзакцию через CDatabase::Commit( ) перед отменой добавления элемента? Это путь самурая или нет?
Решаю сейчас следующую задачу. При добавление нового элемента в инфоблок в событие OnBeforeIblockElementAdd происходит следующее: из полей добавляемого элемента формируется фильтр, который передается в CIblockElementGetList. В случае, если GetList ничего не возвращает - все окей, спокойно отпускаем событие, и новый элемент создается. В случае, если GetList что-либо вернул - обновляем поля у всех отобранных элементов, при этом добавление первоначального элемента Я отменяю через return fasle. Но когда оно отменяется - откатываются и все обновления для выборки из GetList. Я так понимаю, что происходит какой-то Rollback().
Есть ли какой-то кошерный способ найти выход из ситуации?
UP:
Пришла сейчас в голову такая идея - что если завершать транзакцию через CDatabase::Commit( ) перед отменой добавления элемента? Это путь самурая или нет?