Почему поиск в 1С не находит данные по части слова и как правильно настроить механизмы поиска?

Программист 1С v8.3 (Управляемые формы)
← На главную

Часто пользователи и администраторы 1С сталкиваются с ситуацией, когда поиск в списках или справочниках (например, в «Номенклатуре») работает некорректно: система находит данные только в том случае, если поисковый запрос совпадает с началом слова. Если же пользователь вводит часть слова из середины или конца, программа выдает пустой результат — для этой задачи есть поиск по части слова и исправление раскладки. Рассмотрим подробно, почему это происходит и какие шаги необходимо предпринять для исправления ситуации.

Разграничение механизмов поиска в 1С

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

  1. Полнотекстовый поиск (ПП): используется в глобальном поиске (Ctrl+Shift+F) или через специальную форму «Полнотекстовый поиск». Он работает на основе заранее построенного индекса.
  2. Поиск «При вводе по строке»: это тот механизм, который срабатывает при наборе текста в поле выбора. Именно здесь чаще всего возникают проблемы с поиском «по части слова» или когда требуется поиск и замена битых ссылок справочников — для этого подойдёт обработка поиска и замены дублей и ссылок.

Программная настройка поиска по любой части слова

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

Нам необходимо найти в конфигураторе нужный объект, перейти в его Модуль менеджера и создать процедуру ОбработкаПолученияДанныхВыбора (в этом поможет консоль кода + ИИ-помощник). Рассмотрим пример реализации:


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    
    // Устанавливаем способ поиска «Любая часть»
    // Это заставит систему искать подстроку в любом месте наименования или кода
    Параметры.СпособПоискаСтроки = СпособПоискаСтрокиПриВводеПоСтроке.ЛюбаяЧасть;
    
КонецПроцедуры

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

Особенности синтаксиса полнотекстового поиска

Если же проблема касается общего полнотекстового поиска, важно помнить о его синтаксических особенностях. Проанализируем, как система строит поисковые запросы. По умолчанию 1С ищет слова целиком. Чтобы поиск «подхватил» часть слова, необходимо использовать специальный символ-маску — звездочку *.

Например, при поиске слова «Профиль»:

Техническое обслуживание и обновление поискового индекса

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

  1. Переключение версии индекса: В современных версиях платформы 8.3 доступны две версии индекса. Проанализируем настройки: Версия 2 работает быстрее и корректнее с морфологией русского языка. Если у вас стоит Версия 1, попробуйте переключиться на вторую.
  2. Полная очистка и перестроение: Недостаточно просто нажать «Обновить индекс». Если данные «сломались» после обновления конфигурации, рекомендуется сначала нажать «Очистить индекс», а затем запустить «Полное обновление».
  3. Регламентные задания: Убедимся, что регламентное задание ОбновлениеИндексаПолнотекстовогоПоиска работает в фоновом режиме. Если база файловая, индекс обновляется только когда запущен сеанс, выполняющий регламентные задания.

Механическая очистка индекса на уровне файлов

Иногда штатные средства 1С не могут очистить индекс из-за блокировок файлов операционной системой. Рассмотрим радикальный, но эффективный метод для файловых баз. Проанализируем состав каталога вашей информационной базы. В ней находится папка с именем 1Cv8FTxt. Именно в ней физически хранятся данные поиска.

Чтобы выполнить «глубокую» очистку:

Влияние свойств метаданных

Если поиск не работает только для одного конкретного справочника, проверим его свойства в конфигураторе. Проанализируем вкладку «Основные» у объекта метаданных. Там есть свойство Полнотекстовый поиск. Если там выбрано значение Не использовать, то никакие обновления индекса не помогут — данные этого справочника просто не попадают в поисковую базу. Также проверьте свойство Полнотекстовый поиск у конкретных реквизитов (например, Наименование или Артикул) — для этого подойдёт обработка очистки наименований и артикулов.

Очистка кэша как универсальное средство

Не стоит забывать и о локальном кэше пользователя. Иногда настройки формы поиска «залипают» в локальных файлах на компьютере. Выполним очистку кэша: самый простой способ — удалить базу из списка в стартере 1С и добавить её заново (при этом путь к базе остается прежним, а папка с временными файлами создается новая). Это часто помогает, если проблема наблюдается только у одного конкретного сотрудника.

Резюме: Для исправления поиска по части слова мы должны в первую очередь проверить программный код в ОбработкаПолученияДанныхВыбора, убедиться в правильности настроек Полнотекстового поиска в меню «Администрирование» и, при необходимости, выполнить полную перегенерацию индекса с предварительным удалением физических файлов индекса.

← На главную