Не нашел ответа нигде и галки такой нет. Просьба к уважаемому сообществу ткнуть носом или посоветовать обработчик события, напишу сам. Дезактивируем раздел -- все дети дезактивируются. Включаем раздел -- все дети активируются. СПАСИБО.
31.10.2016 10:51:07
Но смотря какая задача в целом стоит. Может вам достаточно при получении элементов или разделов использовать в фильтре параметр SECTION_GLOBAL_ACTIVE => Y для элементов, и GLOBAL_ACTIVE для разделов. А так, если по хорошему к задаче подойти, то в событии до обновления OnBeforeIBlockSectionUpdate посмотреть текущее значение для раздела и если сейчас раздел активен, а в переданном arParams есть ACTIVE => N, то это надо сохранить, и уже в событии после обновления OnAfterIBlockSectionUpdate проверять переданный arParams , и если в нем все по прежнему ACTIVE = N и ранее сохранили, что у раздела было ACTIVE = Y, тогда проверять дочерние элементы и разделы. Потом, если вы деактивируете дочерние разделы, то для них также это событие вызывается будет. Поэтому либо ставить флаг, что вы сами обновляете все дочерние разделы и элементы и не выполнять для них этот обработчик, либо рекурсивно для каждого раздела только его подразделы и элементы деактивировать - не смотреть еще глубже. Лучше первый вариант, чтобы запросы не делать каждый раз, а разом получить все что внутри текущего изменямого. И потом, вам наверно надо отслеживать изменение, добавление разделов и элементов внутри деактиварованного. Тогда нужно каждый раз запрос делать, смотреть какой родительский раздел и не деактивирован ли он, чтобы кто-то не добавил активный элемент в деактивированный раздел. А это уже проверять в событиях OnBeforeIBlockSectionUpdate, OnBeforeIBlockElementUpdate, OnBeforeIBlockElementAdd, OnBeforeIBlockSectionAddКак-то так.
А все-таки жаль: иногда над победами нашими
встают пьедесталы, которые выше побед. Булат Окуджава |
||||
|
|
|||