Фильтрация товаров в модуле двухступенчатая (это тесно связано с логикой работы с торговыми предложениями - см. опцию «Режим работы ТП»). На первом этапе фильтруются товары (это выполняется 1 раз), на втором - для каждого отфильтрованного товара фильтруются предложения (это выполняется столько раз, сколько найдено товаров). Это очень важный момент для понимания и правильной их настройки, поэтому ниже приводится более подробное описание работы фильтров.

Предположим, что вся фильтрация в профиле должна основываться на двух свойствах "Выгрузка" - одно в инфоблоке товаров, другое в инфоблоке торговых предложений.

ЭТАП 1. Фильтрация товаров
Здесь мы может настроить фильтр исключительно по товарам (т.е. ищем только товары основного инфоблока). Но при этом можно заметить, что доступна фильтрация товаров по свойствам торговых предложений. Например: ищем товары, у которых "Выгрузка" равно "123", "Выгрузка" равно "456" и у которых есть такие ТП, у которых "Выгрузка" равно "789". Модуль найдет подходящие ТП (это как промежуточный результат работы), а потом найдет товары, к которым относятся эти найденные ТП, т.е. конечная выборка будет по товарам, а не предложениям. В интерфейсе модуля первые два пункта - голубые, третье - зеленое. Т.е. это все фильтр по товарам, хоть тут и фигурируют торговые предложения.

ЭТАП 2. Фильтрация торговых предложений (ТП)
Тут нужно рассмотреть этап, когда товары отфильтрованы, и выбран любой из них (они выбираются поочередно, и фильтр срабатывает для каждого из них). Теперь модуль ищет для этого товара торговые предложения, которые нужно выгрузить (по умолчанию это просто те ТП, которые активны, т.е. по умолчанию задан фильтр «Активность» - «Да»). Тут в дело вступает фильтр по ТП, т.е. фильтр идет только по предложениям.

Таким образом, чтобы правильно настроить фильтр, нужно понимать какие сущности должен найти фильтр - если он ищет товары (даже несмотря на то что условия при этом можно добавить и по ТП), то это фильтр по товарам, а если же нам нужно чтобы фильтр в результате работы находил нужные ТП - то это уже фильтр по торговым предложениям.

Некоторые нюансы

Обычной является ситуация, когда на сайте есть товары с торговыми предложениями и при этом в самих товарах нет ни цен ни остатков, в таком случае будьте внимательны, добавляя в фильтр по товарам проверку по общему остатку - т.к. фактически общий остаток у товаров с ТП равен нулю!

При этом поле «Доступность» может работать правильно, но в зависимости от настроек модуля «Торговый каталог».

Также нужно помнить, что фильтрация по свойствам ТП в фильтре по товарам создает большую нагрузку на сервер, и уже при нескольких таких условиях способна значительно увеличить время обработки (особенно при большом количестве товаров и ТП) и даже привести к неработоспособности модуля, если сложные условия при большом количестве товаров увеличат время фильтрации более чем максимальное время выполнения скриптов в настройках PHP. При этом функционал «Просмотр инфоблоков» дает примерно понимание того, насколько быстро работает фильтр - если просмотр инфоблоков работает быстро, значит и фильтрация работает быстро.

Если Вы еще не пробовали применять в фильтре логику «В списке» и «Не в списке» - попробуйте, это очень удобно (работает не для всех типов свойств и полей).


Ещё раз. Кратко.

  1. По всем товарам Вашего каталога работает только «Фильтр для отбора товаров», он может фильтровать товары как по свойствам товаров, так и по свойствам предложений. Т.е., как бы глупо это не казалось, этот фильтр может найти товары (именно товары, это не опечатка!) по свойствам ТП (именно ТП, это не опечатка!). В примеру, мы можем настроить фильтр чтобы найти все товары, у которых есть ТП зелёного цвета. На выборку самих ТП это никак не повлияет. Мы нашли товар, у которого есть зелёные ТП, но этот фильтр не ограничит выгрузку только зелёным ТП.
  2. Когда первый фильтр обработал, в дело вступает второй. Т.е. модуль нашёл 100 товаров с зелёным ТП и для каждого из них будет применять «Фильтр для отбора торговых предложений». И здесь требуется настроить фильтр так, чтобы для конкретного товара были отобраны заданные ТП.


Возврат к списку