В одной из предыдущих статей был описан механизм полнотекстового поиска в 1С Предприятие.
Несмотря на все свои достоинства, он имеет один очень крупный недостаток. В нём практически отсутствуют средства для настройки фильтрации данных. Можно только либо включить или отключить добавление всех объектов данного типа в полнотекстовый индекс, либо воспользоваться стандартным механизмом разграничения прав доступа.
К счастью в подавляющем большинстве случаев этого вполне достаточно. Но, если нет возникает необходимость реализовать соответствующий функционал уже при помощи программирования.
При формировании списка результатов поиска на сервере перед отображением в отчёте по поиску есть возможность получить доступ к свойствам и реквизитам найденного объекта. Опираясь на это можно организовать фильтрацию данных отображаемых в отчёте.
Например:
1 2 3 |
Если Результат.Значение.Город = Перечисления.Города.Вологда Тогда РезультатыПоиска.Добавить(Результат.Значение) КонецЕсли; |
Однако здесь требуется осторожность.
Дело в том, что как правило, в полнотекстовом индексе хранятся, и, следовательно, попадают в результаты поиска, объекты самых различных типов. Если свойство или реквизит, по которому производится фильтрация у данного конкретного объекта отсутствует формирование данных для отчёта по поиску будет прервано по критической ошибке.
Чтобы это предотвратить можно воспользоваться одним из двух методов:
- Производить фильтрацию только по тем свойствам и реквизитам, которые имеются у всех объектов конфигурации;
- Перед проверкой условия отбора проверять тип данных объекта.
Добавить комментарий