В инфоблоках 1С-Битрикс элемент может принадлежать нескольким разделам, а свойство — хранить несколько значений сразу. Разберём, как это настроить в админке и не наступить на частые грабли при выводе.
Привязка элемента к разделам: как это работает
Разделы (секции) образуют дерево внутри инфоблока, а элементы к этому дереву привязываются. По умолчанию элемент принадлежит одному разделу, но 1С-Битрикс позволяет привязать его сразу к нескольким — это удобно, когда товар должен показываться в разных категориях каталога.
За поведение отвечают две настройки в карточке инфоблока:
- «Элемент может принадлежать нескольким разделам» — разрешает множественную привязку;
- «Привязка к разделам обязательна» — запрещает сохранять элемент без выбранного раздела.
Технически основной раздел хранится в поле IBLOCK_SECTION_ID, а полный список привязок — в таблице b_iblock_section_element. Об этом важно помнить при выборках через CIBlockElement::GetList.
Где включить множественную привязку к разделам
Чтобы разрешить элементам находиться в нескольких разделах:
- Откройте Контент → Инфоблоки → Типы инфоблоков и выберите нужный инфоблок.
- Нажмите «Изменить» и перейдите на вкладку «Разделы».
- Установите флажок «Элемент может принадлежать нескольким разделам».
- При необходимости отметьте «Привязка к разделам обязательна».
- Сохраните инфоблок.
После этого в форме редактирования элемента вместо одиночного выбора появится дерево разделов с чекбоксами: можно отметить несколько узлов. Первый (верхний по сортировке) отмеченный раздел становится основным и попадает в IBLOCK_SECTION_ID.
Множественные свойства: включение и настройка
Множественное свойство хранит массив значений — например, список цветов, набор тегов или несколько прикреплённых файлов. Настраивается на вкладке «Свойства» инфоблока.
- Откройте инфоблок на редактирование, перейдите на вкладку «Свойства».
- В строке нужного свойства (или добавляя новое) поставьте флажок в колонке «Множ.».
- Для расширенной настройки нажмите на название свойства — откроется детальная форма, где задаются значение по умолчанию, количество строк для ввода и способ отображения.
- Сохраните инфоблок.
Множественность доступна почти для всех типов: Строка, Число, Список, Файл, Привязка к элементам, Привязка к разделам, Справочник и других.
Как множественные значения хранятся и выводятся
Значения множественных свойств лежат в таблице b_iblock_element_property — по одной строке на каждое значение. При выводе через API это влияет на способ получения данных.
Сравним хранение и доступ:
| Тип свойства | Хранение | Доступ в коде |
|---|---|---|
| Одиночное | Одна строка в БД | $props['CODE']['VALUE'] — строка |
| Множественное | Несколько строк в БД | $props['CODE']['VALUE'] — массив |
Чтобы получить все значения, используйте метод GetProperty или GetProperties у объекта результата GetList. Прямое обращение к полю PROPERTY_CODE_VALUE в GetList вернёт только одно (первое) значение — для множественных свойств этого недостаточно.
Выборка элементов по разделу с учётом множественной привязки
Когда элемент привязан к нескольким разделам, важно правильно фильтровать выборку. Ключевой параметр — SECTION_ID с флагом INCLUDE_SUBSECTIONS.
SECTION_IDв фильтре ищет элементы, привязанные к разделу любой из привязок (не только основной), если задан режим по всем разделам;INCLUDE_SUBSECTIONS = 'Y'добавляет элементы вложенных подразделов;- параметр
CHECK_PERMISSIONSучитывает права доступа при выборке.
Если нужно вывести элемент во всех его разделах в стандартном компоненте bitrix:news или bitrix:catalog, убедитесь, что в настройках компонента включён показ по всем привязкам, а не только по основному разделу. Иначе товар появится лишь в одной категории.
Частые ошибки
Типичные проблемы при работе с привязкой к разделам и множественными свойствами:
- Множественное свойство выводится как одно значение. Причина — обращение к
PROPERTY_*_VALUEвGetList. ИспользуйтеGetProperties()у элемента. - Элемент не показывается в дополнительной категории. Флажок «Элемент может принадлежать нескольким разделам» не включён, либо компонент настроен на вывод только по основному разделу.
- Потеря значений при импорте. При загрузке через CommerceML или CSV множественные свойства требуют корректного формата массива; одиночная строка перезапишет весь набор.
- Сброс основного раздела. После снятия всех чекбоксов и повторной привязки основным становится другой раздел — меняется
IBLOCK_SECTION_IDи, как следствие, ЧПУ элемента. - Долгие выборки. Фильтр по множественным свойствам без индексов на большом инфоблоке тормозит. Включите индексацию свойства или используйте фасетный индекс каталога.
- Дубли в выводе. При выборке по нескольким разделам без группировки один элемент может попасть в список несколько раз — добавьте
GROUP_BYили уникализацию поID.
Итог
Привязка к нескольким разделам и множественные свойства — штатные механизмы инфоблоков 1С-Битрикс, которые снимают ограничение «одно значение — одно поле».
- Множественная привязка включается на вкладке «Разделы», множественность свойства — колонкой «Множ.» на вкладке «Свойства».
- Множественные значения хранятся отдельными строками в БД и читаются через
GetProperties(), а не через поле*_VALUE. - При выборке по разделам учитывайте
INCLUDE_SUBSECTIONSи следите за дублями.
Правильная настройка этих опций сразу закрывает большинство задач каталога: товар в нескольких категориях, наборы характеристик и фильтруемые списки.