Как добавить неактивные элементы в результат поиска 1С-Битрикс

Многие владельцы интернет-магазинов на 1С-Битрикс сталкиваются с необходимостью включения в поиск неактивных товаров и услуг, чтобы пользователи могли их купить. В стандартном варианте, по умолчанию, из информационного модуля в индекс попадают только активные позиции.

Причиной выявленных ограничений является фильтр, прописанный в исходном коде и управляющий индексацией информационных блоков. Наша задача обеспечить доступ к неактивным элементам и нестандартное использование флага активности, задействуя только обработчики событий и не внося изменений в исходный код.

Реализация

Самым простым и безопасным решением является подмена стандартного обработчика события индексации на адаптированный к нашим требованиям, в нем не будет ограничений по активности элементов.

Производитель указывает, что для переиндексации необходимо обеспечить соответствующий метод. Он должен регистрироваться в системе событий как обработчик события OnReIndex модуля "search".

Регистрация выглядит следующим образом:

 

2020-11-06_13-12-08.png

Наша задача сделать отмену. Для этого проводим регистрацию обработчика события OnBeforeProlog. В нем отменяется стандартный обработчик переиндексации и подключается кастомизированный:

 

2020-11-06_13-31-51.png

Таким образом происходит регистрация обработчика и он становится новым методом класса, наследуемым от CIBlock. В нем полностью сохранен исходный код, с той лишь разницей, что в условиях выборки по элементам отсутствует фильтр активности. Исходный код выглядит так:

2020-11-06_13-37-26.png

В измененном коде отсутствует строка AND BE.ACTIVE='Y'. Теперь достаточно после переиндексации информационного модуля в поиске появятся неактивные элементы. 


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