Всем привет!
Возникла необходимость реализовать копирование элемента инфоблока в другой раздел сразу после добавления этого элемента.
Реализовал копирование в обработке события OnAfterIBlockElementAdd.
Однако столкнулся с проблемой - при копировании элемента возникает новое событие OnAfterIBlockElementAdd и, соответственно процесс зацикливается.
Решения видел 2:
1) использовать передачу флага посредством COption::SetOptionString, таким образом в дочернем событии добавится возможность определять, что мы имеем дело с копией и прервать обработку;
2) использовать доп.свойство элемента, куда записывать признак копии.
Я остановился на втором способе, т.к. счел необходимым сохранения идентификатора родительского элемента.
Далее аналогичным образом реализовал изменение данных оригинала и всех копий при редактировании одного из элементов.
Однако, снова уткнулся в проблему возникновения дочерних событий OnAfterIBlockElementUpdate.
Элегантного решения пока не нашел, поэтому хотел спросить совета знатоков, возможно кто-то уже реализовывал подобное.
Спасибо!
Возникла необходимость реализовать копирование элемента инфоблока в другой раздел сразу после добавления этого элемента.
Реализовал копирование в обработке события OnAfterIBlockElementAdd.
Однако столкнулся с проблемой - при копировании элемента возникает новое событие OnAfterIBlockElementAdd и, соответственно процесс зацикливается.
Решения видел 2:
1) использовать передачу флага посредством COption::SetOptionString, таким образом в дочернем событии добавится возможность определять, что мы имеем дело с копией и прервать обработку;
2) использовать доп.свойство элемента, куда записывать признак копии.
Я остановился на втором способе, т.к. счел необходимым сохранения идентификатора родительского элемента.
Далее аналогичным образом реализовал изменение данных оригинала и всех копий при редактировании одного из элементов.
Однако, снова уткнулся в проблему возникновения дочерних событий OnAfterIBlockElementUpdate.
Элегантного решения пока не нашел, поэтому хотел спросить совета знатоков, возможно кто-то уже реализовывал подобное.
Спасибо!