Часто пользователи и администраторы 1С сталкиваются с ситуацией, когда поиск в списках или справочниках (например, в «Номенклатуре») работает некорректно: система находит данные только в том случае, если поисковый запрос совпадает с началом слова. Если же пользователь вводит часть слова из середины или конца, программа выдает пустой результат — для этой задачи есть поиск по части слова и исправление раскладки. Рассмотрим подробно, почему это происходит и какие шаги необходимо предпринять для исправления ситуации.
Прежде всего, проанализируем ситуацию и поймем, что в платформе 1С существуют два принципиально разных механизма поиска, которые часто путают — для удобной настройки фильтров в списках есть инструмент быстрой фильтрации данных в списках. Выясним причину их различия, так как методы решения для них будут отличаться:
Разберем ситуацию, когда поиск не работает именно при наборе текста в поле. В современных конфигурациях на управляемых формах за это отвечает специальный обработчик в модуле менеджера объекта. Посмотрим на пример кода, который позволяет принудительно установить поиск по любой части строки — для этого пригодится расширение настройки правил поиска и ввода данных.
Нам необходимо найти в конфигураторе нужный объект, перейти в его Модуль менеджера и создать процедуру ОбработкаПолученияДанныхВыбора (в этом поможет консоль кода + ИИ-помощник). Рассмотрим пример реализации:
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
// Устанавливаем способ поиска «Любая часть»
// Это заставит систему искать подстроку в любом месте наименования или кода
Параметры.СпособПоискаСтроки = СпособПоискаСтрокиПриВводеПоСтроке.ЛюбаяЧасть;
КонецПроцедуры
Именно использование свойства СпособПоискаСтрокиПриВводеПоСтроке.ЛюбаяЧасть решает проблему, когда система упорно ищет только по началу строки. Если в вашей конфигурации это значение установлено в Начало, то поиск по середине слова работать не будет.
Если же проблема касается общего полнотекстового поиска, важно помнить о его синтаксических особенностях. Проанализируем, как система строит поисковые запросы. По умолчанию 1С ищет слова целиком. Чтобы поиск «подхватил» часть слова, необходимо использовать специальный символ-маску — звездочку *.
Например, при поиске слова «Профиль»:
Проф — скорее всего, ничего не найдет.Проф* — найдет все слова, начинающиеся на «Проф».*офиль — стандартный механизм полнотекстового поиска может работать с ограничениями, так как индекс строится преимущественно по началам слов.Выясним, что делать, если программные настройки верны, но поиск все равно выдает устаревшие или неполные данные. В этом случае проблема кроется в самом поисковом индексе. Рассмотрим шаги по его восстановлению:
Версия 2 работает быстрее и корректнее с морфологией русского языка. Если у вас стоит Версия 1, попробуйте переключиться на вторую.ОбновлениеИндексаПолнотекстовогоПоиска работает в фоновом режиме. Если база файловая, индекс обновляется только когда запущен сеанс, выполняющий регламентные задания.Иногда штатные средства 1С не могут очистить индекс из-за блокировок файлов операционной системой. Рассмотрим радикальный, но эффективный метод для файловых баз. Проанализируем состав каталога вашей информационной базы. В ней находится папка с именем 1Cv8FTxt. Именно в ней физически хранятся данные поиска.
Чтобы выполнить «глубокую» очистку:
1Cv8FTxt вручную.Если поиск не работает только для одного конкретного справочника, проверим его свойства в конфигураторе. Проанализируем вкладку «Основные» у объекта метаданных. Там есть свойство Полнотекстовый поиск. Если там выбрано значение Не использовать, то никакие обновления индекса не помогут — данные этого справочника просто не попадают в поисковую базу. Также проверьте свойство Полнотекстовый поиск у конкретных реквизитов (например, Наименование или Артикул) — для этого подойдёт обработка очистки наименований и артикулов.
Не стоит забывать и о локальном кэше пользователя. Иногда настройки формы поиска «залипают» в локальных файлах на компьютере. Выполним очистку кэша: самый простой способ — удалить базу из списка в стартере 1С и добавить её заново (при этом путь к базе остается прежним, а папка с временными файлами создается новая). Это часто помогает, если проблема наблюдается только у одного конкретного сотрудника.
Резюме: Для исправления поиска по части слова мы должны в первую очередь проверить программный код в ОбработкаПолученияДанныхВыбора, убедиться в правильности настроек Полнотекстового поиска в меню «Администрирование» и, при необходимости, выполнить полную перегенерацию индекса с предварительным удалением физических файлов индекса.