Нужно реализовать весьма извращенческий фильтр. Во избежание туманных формулировок сразу буду спрашивать на "живом" примере.
Есть инфолок "Организации", одно из его свойств - привязка к элементам иболка "Типы". В "Типах" есть разные уровни и подтипы:
учебно-воспитательного назначения -> образования и подготовки кадров -> общеобразовательные -> колледжи
учебно-воспитательного назначения -> образования и подготовки кадров -> общеобразовательные -> школы
учебно-воспитательного назначения -> образования и подготовки кадров -> общеобразовательные -> гимназии
учебно-воспитательного назначения -> образования и подготовки кадров -> профессиональные -> ВУЗы
учебно-воспитательного назначения -> образования и подготовки кадров -> дошкольного образования
...
т.е. привязка к элементам своего же инфоблока.
К организации может быть привязан "Тип" любого уровня. Причем привязка идет по XML_ID (т.к. иблок заполняется через импорт)
Вопрос:
Нужно вывести элементы инфоблока "Организации" с фильтром, охватывающим все уровни "Типов" (см. картинку), т.е. в каждом селекте выводятся "Типы" определенного уровня. Если "Тип" "Организации" имеет родителей, то список "Организаций" должен фильтроваться и по ним. Еще нужно перехватывать родителя при выборе пункта в селекте и соответственно этому значению фильтровать список в нижних селектах.
Есть ли смысл насиловать фильтрацию? Или стоит к организациям добавить еще несколько полей-родителей, которые будут заполняться обработчиком OnAfterIBlockPropertyAdd при добавлении элемента инфоблока (по ID типа). И уже по этим свойствам фильтровать спсибок организаций.
Или с какой стороны вообще можно подойти к решению задачи?
Есть инфолок "Организации", одно из его свойств - привязка к элементам иболка "Типы". В "Типах" есть разные уровни и подтипы:
учебно-воспитательного назначения -> образования и подготовки кадров -> общеобразовательные -> колледжи
учебно-воспитательного назначения -> образования и подготовки кадров -> общеобразовательные -> школы
учебно-воспитательного назначения -> образования и подготовки кадров -> общеобразовательные -> гимназии
учебно-воспитательного назначения -> образования и подготовки кадров -> профессиональные -> ВУЗы
учебно-воспитательного назначения -> образования и подготовки кадров -> дошкольного образования
...
т.е. привязка к элементам своего же инфоблока.
К организации может быть привязан "Тип" любого уровня. Причем привязка идет по XML_ID (т.к. иблок заполняется через импорт)
Вопрос:
Нужно вывести элементы инфоблока "Организации" с фильтром, охватывающим все уровни "Типов" (см. картинку), т.е. в каждом селекте выводятся "Типы" определенного уровня. Если "Тип" "Организации" имеет родителей, то список "Организаций" должен фильтроваться и по ним. Еще нужно перехватывать родителя при выборе пункта в селекте и соответственно этому значению фильтровать список в нижних селектах.
Есть ли смысл насиловать фильтрацию? Или стоит к организациям добавить еще несколько полей-родителей, которые будут заполняться обработчиком OnAfterIBlockPropertyAdd при добавлении элемента инфоблока (по ID типа). И уже по этим свойствам фильтровать спсибок организаций.
Или с какой стороны вообще можно подойти к решению задачи?