Когда каталог приходит в магазин не руками контент-менеджера, а обменом из 1С, умный фильтр приходится настраивать иначе. Свойства уже созданы автоматически, значения — тоже, а вот флаги для фильтрации и фасетный индекс никто за вас не проставит. Разберём, как довести загруженный каталог до состояния, в котором фильтр работает корректно и быстро.
Чем загруженный каталог отличается от ручного
При создании инфоблока и свойств вручную вы сразу задаёте нужные параметры: тип свойства, множественность, флаг участия в умном фильтре. При обмене из 1С по протоколу CommerceML 2 свойства создаются модулем обмена автоматически на основе характеристик и реквизитов номенклатуры. Битрикс генерирует их «как есть»: обычно это строковые свойства или привязки к справочникам, а флаг SMART_FILTER у них по умолчанию выключен.
Отсюда две типичные ситуации после первой загрузки: фильтр либо пуст (ни одно свойство не помечено для фильтрации), либо показывает лишние поля вроде артикула, ГТД или технических кодов. Кроме того, значения свойств могут храниться как простые строки, а не как элементы справочника — а простую строку в удобный фильтр-«чекбокс» превратить сложнее, чем список.
Приводим свойства в порядок
Откройте Контент → Каталог → Инфоблоки, выберите нужный инфоблок и перейдите на вкладку Свойства. Здесь оцените, что именно приехало из 1С:
- Тип свойства. Для фильтра идеальны свойства типа «Список» или «Привязка к элементам инфоблока» (справочник) — по ним фильтр строит аккуратные чекбоксы. Строковые свойства тоже фильтруются, но при большом разбросе значений выглядят громоздко.
- Множественность. Цвет, размер, материал часто должны быть множественными (
MULTIPLE = Y), иначе товар с несколькими значениями попадёт в фильтр лишь по одному из них. - Числовые характеристики. Вес, диагональ, объём выгодно хранить как число — тогда в фильтре появится ползунок диапазона «от–до».
Если 1С отдаёт значения строками, а вам нужен чистый справочник, настройте в модуле обмена сопоставление или переведите свойство в тип «Справочник (Highload-блок)». Так одинаковые по смыслу значения («Красный», «красный», «RED») не расползутся на десятки отдельных пунктов фильтра.
Включаем свойства в умный фильтр
Флаг участия в фильтре ставится в карточке свойства: откройте свойство и включите опцию «Показывать в умном фильтре» (в структуре свойства это поле SMART_FILTER = Y). Тут же выбирается тип отображения в публичной части:
| Тип отображения | Когда подходит |
|---|---|
| Флажки (чекбоксы) | Списки и справочники: бренд, цвет, материал |
| Выпадающий список | Длинные списки, где важна компактность |
| Числовой интервал | Числовые свойства: вес, мощность, диагональ |
| Календарь | Свойства типа «Дата» |
| Цвета / картинки | Цвет и подобные свойства со значками |
Отмечать в фильтре стоит только то, по чему покупатель реально выбирает: 5–12 характеристик на раздел. Артикул, штрихкод, ГТД, служебные признаки из 1С в фильтр включать не нужно — они лишь загромождают панель и раздувают индекс. Порядок вывода задаётся полем сортировки свойства (SORT).
Фасетный индекс — обязательный шаг
Умный фильтр в актуальных версиях Битрикса работает через фасетный индекс — отдельную таблицу, где заранее посчитаны связки «товар — значение свойства». Без индекса фильтр либо не заработает, либо будет опрашивать основные таблицы каталога на каждый клик, что медленно.
Индекс создаётся в настройках инфоблока на вкладке Свойства кнопкой «Изменить» в блоке фасетного индекса, либо в разделе Настройки → Настройки продукта → Настройки модулей → Информационные блоки. После первой загрузки и после каждого изменения набора фильтруемых свойств индекс нужно пересоздать полностью.
- Включите нужные свойства в фильтр (шаг выше).
- Запустите пересчёт фасетного индекса и дождитесь 100%.
- Проверьте фильтр в публичной части: значения должны появиться, счётчики — совпасть с числом товаров.
Автообновление индекса после обмена
Главная особенность загруженного каталога — он меняется постоянно: приходят новые товары, обновляются цены и остатки, появляются новые значения свойств. Фасетный индекс умеет обновляться инкрементально при изменении элементов, но по умолчанию тяжёлые операции откладываются в очередь и выполняются агентами или на cron.
Чтобы новые товары сразу попадали в фильтр, проверьте два момента:
- Агенты и очередь. Убедитесь, что агенты модуля
iblockвыполняются — при работе через cron за это отвечаетbitrix/php_interface/cron_events.php. Если агенты «на хитах» отключены, а cron не настроен, индекс перестанет догоняться. - Новые свойства. Если 1С привезла принципиально новую характеристику, её всё равно придётся вручную пометить
SMART_FILTER = Yи пересчитать индекс — автоматически новые свойства в фильтр не добавляются.
Разумная практика — раз в период (например, после крупных сезонных выгрузок) вручную запускать полный пересчёт индекса, чтобы гарантированно убрать рассинхронизацию.
Разделы, товары и торговые предложения
При обмене из 1С структура каталога обычно двухуровневая: товары и привязанные к ним торговые предложения (SKU) — например, один товар «Футболка», а цвет и размер вынесены в предложения. Умный фильтр это поддерживает, но свойства для фильтрации нужно помечать в том инфоблоке, где они физически хранятся: цвет и размер — в инфоблоке торговых предложений, бренд и материал — чаще в инфоблоке товаров.
Проверьте также привязку разделов: новые разделы из 1С наследуют настройки фильтра инфоблока, но если вы настраивали индивидуальный фильтр для отдельного раздела (через параметры компонента bitrix:catalog.smart.filter), для свежесозданных разделов эти настройки не применятся автоматически. После расширения структуры каталога стоит пройтись по ключевым посадочным разделам и убедиться, что фильтр на них отображает нужный набор свойств.
Проверка и типовые ошибки
После настройки прогоните короткий чек-лист прямо в витрине:
- Фильтр показывает 5–12 осмысленных характеристик, без технических полей из 1С.
- Счётчики у значений совпадают с реальным числом товаров — расхождение означает устаревший индекс.
- Множественные свойства (цвет, размер) корректно фильтруют товары со всеми их значениями.
- Числовые ползунки берут минимум и максимум из фактических данных, а не из «мусорных» значений.
Частые причины «фильтр не работает после загрузки»: не пересчитан фасетный индекс; значения пришли строками с разным регистром и пробелами; свойство помечено в фильтр не в том инфоблоке (товары вместо предложений); отключены агенты, и новые товары не индексируются. Почти все они лечатся сопоставлением значений на стороне 1С и повторным пересчётом индекса.
Итог
Настройка фильтра для загруженного каталога — это не разовое действие, а связка из четырёх шагов: привести свойства к пригодному для фильтрации виду, пометить нужные из них флагом умного фильтра, построить фасетный индекс и обеспечить его автообновление после каждого обмена с 1С. Отдельно держите в голове двухуровневую структуру «товары — предложения» и не трогайте свойства, которыми управляет выгрузка.
Если каталог большой, обмен идёт часто, а фильтр после очередной выгрузки то и дело «слетает», мы помогаем навести порядок: настраиваем сопоставление свойств в обмене, оптимизируем фасетный индекс и автоматизируем его пересчёт. Обращайтесь — разберём ваш конкретный каталог и сделаем фильтр стабильным и быстрым.
Частые вопросы
Почему после загрузки из 1С умный фильтр пустой?
Модуль обмена создаёт свойства, но не включает их в фильтр. Нужно вручную пометить нужные свойства флагом «Показывать в умном фильтре» и пересчитать фасетный индекс.
Нужно ли пересчитывать фасетный индекс после каждого обмена?
Полный пересчёт после каждой выгрузки не обязателен — индекс обновляется инкрементально агентами. Полный пересчёт нужен только когда вы меняете набор фильтруемых свойств или заметили рассинхронизацию счётчиков.
Можно ли удалять лишние свойства, которые привезла 1С?
Свойства, которыми управляет обмен, удалять не стоит — при следующей выгрузке они пересоздадутся. Просто не включайте их в умный фильтр, а чистить состав лучше на стороне 1С.
Значения свойства пришли строками и дублируются — как быть?
Настройте сопоставление значений в модуле обмена или переведите свойство в тип «Справочник» либо Highload-блок, чтобы одинаковые по смыслу значения не расползались на отдельные пункты фильтра.
Где помечать свойства цвета и размера при наличии торговых предложений?
В инфоблоке торговых предложений (SKU), потому что именно там эти свойства физически хранятся. Свойства уровня товара — бренд, материал — помечаются в инфоблоке товаров.
Новые товары из выгрузки не появляются в фильтре — почему?
Скорее всего не выполняются агенты модуля инфоблоков или не настроен cron, из-за чего инкрементальное обновление индекса не отрабатывает. Проверьте очередь агентов и запустите полный пересчёт.
Появилась новая характеристика из 1С — она сама добавится в фильтр?
Нет. Новое свойство нужно вручную пометить флагом умного фильтра и пересчитать фасетный индекс — автоматически новые свойства в фильтр не включаются.
Когда лучше запускать полный пересчёт индекса на большом каталоге?
В часы низкой посещаемости и вне окна сеанса обмена с 1С, так как пересчёт создаёт заметную нагрузку на базу данных и может пересечься с выгрузкой.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.