Фильтрация сразу по двум инфоблокам, как лучше реализовать?

Для реализации фильтрации сразу по двум инфоблокам в 1C-Bitrix у вас есть несколько вариантов. Вот несколько наиболее распространенных решений.

  1. Использование фильтра в компоненте catalog.section.
  • Создайте новый фильтр в настройках компонента catalog.section.
  • Укажите необходимые параметры фильтрации, такие как тип инфоблока и свойства.
  • Для фильтрации по двум инфоблокам, выберите оба типа инфоблоков в настройках фильтра.
  • Установите необходимые условия фильтрации.
  1. Использование комплексного компонента.
  • Создайте новый комплексный компонент, который будет объединять два компонента catalog.section.
  • В настройках комплексного компонента укажите какой из компонентов будет отвечать за фильтрацию по первому инфоблоку, а какой за второй.
  • В каждом из компонентов catalog.section укажите нужные условия фильтрации для каждого инфоблока.
  1. Использование ORM запроса в коде.
  • С помощью ORM (объектно-реляционное отображение) вы можете создать SQL запрос, который будет фильтровать элементы по нужным инфоблокам и условиям.
  • В вашем коде создайте ORM запрос с условием фильтрации по типу инфоблока и нужным свойствам.
  • Объедините два таких запроса с использованием оператора UNION или JOIN в зависимости от ваших требований.
  1. Использование функции CIBlockElement::GetList в коде.
  • В вашем коде вызовите функцию CIBlockElement::GetList и передайте ей параметры фильтрации.
  • Укажите в фильтре условия для типа инфоблока и необходимых свойств.
  • Для фильтрации по двум инфоблокам, создайте два отдельных вызова функции GetList с разными типами инфоблоков.

Все эти варианты имеют свои преимущества и недостатки, и выбор зависит от ваших конкретных требований и предпочтений. Чтобы выбрать подходящее решение, изучите документацию 1C-Bitrix и проведите тесты для проверки эффективности и функциональности реализации.