Полнотекстовый поиск не находит данные — восстанавливаем индекс
Содержание
Если поиск в 1С перестал находить свежие документы и справочники, дело почти всегда в индексе полнотекстового поиска, а не в SQL Server и не в «слетевшей» конфигурации. Чтобы восстановить полнотекстовый поиск в 1С:Предприятие, индекс нужно обновить или построить заново — это делается штатной обработкой Управление полнотекстовым поиском (Все функции → Стандартные). Переустанавливать платформу не требуется.
Полнотекстовый поиск (сокращённо ППД) — механизм самой платформы 8.3. Он ведёт собственный индекс и к полнотекстовому поиску СУБД отношения не имеет. Поэтому служба Full-Text Search в Microsoft SQL Server здесь не нужна: её можно вообще не включать, поиск в 1С от неё не зависит.
Что проверить в первую очередь
Прежде чем что-то перестраивать, стоит понять, на каком шаге сломался поиск. Симптомы разные, и лечатся они по-разному.
Сначала уточните, что именно не работает . Полнотекстовый поиск — это поиск по всем данным базы (документам, справочникам, их реквизитам) через общую строку поиска, а не фильтр внутри одного списка. Если «не ищет» строка фильтра в конкретном журнале — это не про индекс, там дело в настройке отбора. Ниже речь только про общий полнотекстовый поиск по базе.
Открыть управление поиском проще всего так. Нажмите значок главного меню (в интерфейсе «Такси» это кнопка Сервис и настройки вверху справа) → Настройки → Параметры → поставьте галочку Отображать команду «Все функции». После этого в главном меню появится пункт Все функции, а в нём — раздел Стандартные и обработка Управление полнотекстовым поиском.
В конфигурациях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, Управление торговлей 11) та же настройка часто продублирована в разделе Администрирование. Если команды Все функции под рукой нет, ищите переключатель поиска именно там, в блоке настроек обслуживания.
Параллельно загляните в журнал регистрации (Администрирование → Обслуживание → Журнал регистрации). Отфильтруйте записи по регламентному заданию обновления индекса. Повторяющиеся ошибки в журнале сразу покажут, что задание падает, а не просто давно не запускалось, — а это два разных диагноза с разным лечением.
Где лежит индекс и почему SQL Server ни при чём
Это ключевой момент, на котором спотыкаются чаще всего. Индекс полнотекстового поиска хранит сама 1С, а не СУБД:
- 🗂 Файловая база. Индекс лежит в каталоге информационной базы, рядом с файлом данных. При копировании базы его можно переносить вместе с ней или строить заново на новом месте.
- 🖥 Клиент-серверная база. Индекс хранится на стороне кластера серверов 1С. Microsoft SQL Server (или PostgreSQL) держит только сами данные — индекс поиска он не ведёт.
Отсюда вывод: включать службу Full-Text Search в SQL Server для работы поиска в 1С не нужно. Если кто-то советует «настроить полнотекстовый поиск в SQL» — это про другой механизм, к встроенному поиску 1С он отношения не имеет.
Проверить, какой у базы режим работы, можно в окне запуска 1С: в списке баз у файловой указан путь к папке, у клиент-серверной — имя сервера и имя базы на сервере.
Обновление индекса вручную: быстрый способ
В 9 случаях из 10 помогает обычное обновление. Порядок действий:
- Откройте обработку
Управление полнотекстовым поиском(путь — в разделе выше). - Убедитесь, что переключатель режима стоит в положении
Разрешить. Если он выключен, поиск не работает в принципе. - Посмотрите на статус индекса. Если написано, что индекс неактуален, нажмите
Обновить индекс. - Дождитесь окончания. На большой базе первое обновление идёт долго — платформа разбирает все объекты, по которым разрешён поиск.
После обновления проверьте поиск по строке, которой раньше не находилось. Если документ нашёлся — проблема была в устаревшем индексе, и дальше можно не читать.
Обновление идёт частями: платформа индексирует только изменившиеся с прошлого раза данные, поэтому повторный запуск на свежем индексе проходит быстро. Долгим бывает лишь первое построение или полная перестройка.
Если предпочитаете делать это кодом (например, из внешней обработки администратора), доступны методы глобального контекста:
// Разрешить поиск, если он был выключен
УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Разрешить);
// Проверить актуальность и обновить при необходимости
Если НЕ ПолнотекстовыйПоиск.ИндексАктуален() Тогда
ПолнотекстовыйПоиск.ОбновитьИндекс();
КонецЕсли;
Обновление индекса можно запускать, когда пользователи работают в базе: монопольный доступ для этого не нужен. А вот полная перестройка нагружает сервер, поэтому её лучше делать в нерабочее время.
Регламентное задание, которое обновляет индекс само
Чтобы не обновлять индекс руками каждую неделю, в 1С есть регламентное задание Обновление индекса полнотекстового поиска. Когда поиск «отстаёт от жизни», причина обычно в нём.
Где его найти:
- Клиент-серверная база. В конфигурации —
Администрирование → Обслуживание → Регламентные и фоновые задания. Либо в консоли администрирования кластера, в списке регламентных заданий базы. - Файловая база. Там же, в разделе обслуживания. Но есть нюанс: в файловом варианте регламентные задания выполняются только в сеансе клиента. Если в базе никто не работает, индекс не обновляется. Это и есть частая причина, почему в файловой базе поиск постоянно отстаёт.
Что проверить в задании:
- Включено ли оно (
Включено= да). - Когда последний раз выполнялось успешно и нет ли ошибок в журнале регистрации.
- Настроено ли расписание — хотя бы раз в сутки, а для активных баз чаще.
Если задание отключено — включите его и задайте расписание. Если оно падает с ошибкой, причина чаще всего в поврежденном индексе: его нужно перестроить (следующий раздел), после чего задание начнёт отрабатывать.
Полная перестройка: очистить и построить индекс заново
Когда обновление не помогает, поиск выдаёт ошибки или находит частично — индекс повреждён. Его чистят целиком и строят с нуля.
В обработке Управление полнотекстовым поиском:
- Нажмите
Очистить индекс— платформа удалит текущий индекс. - Затем
Обновить индекс— поиск построит индекс заново по всем объектам.
Кодом то же самое:
ПолнотекстовыйПоиск.ОчиститьИндекс();
ПолнотекстовыйПоиск.ОбновитьИндекс();
Перед полной перестройкой на рабочей базе убедитесь, что это не совпадает с пиковой нагрузкой. Пока индекс строится заново, поиск у пользователей будет находить не всё. На крупной базе процесс занимает от десятков минут до нескольких часов.
Важно, чего делать не нужно:
- ❌ Не переустанавливайте платформу — индекс поиска от этого не восстановится.
- ❌ Не удаляйте базу и не «пересоздавайте» информационную базу ради поиска.
- ❌ Не трогайте SQL Server и его службы — поиск 1С там не хранится.
Отдельно про кэш платформы. Иногда советуют «почистить кэш, и поиск заработает». Кэш платформы (временные файлы сеанса) и индекс полнотекстового поиска — это разные вещи. Очистка кэша помогает от глюков форм и справки, но на индекс поиска она не влияет. Если всё же хотите почистить кэш — закройте все сеансы этой базы и удалите её каталог кэша по пути вида %LOCALAPPDATA%\1C\1cv8\<идентификатор базы>. На поиск это не повлияет, но лишним не будет при общих тормозах.
Поиск сломался после обновления платформы или конфигурации
Два частых сценария, когда поиск перестаёт работать «на ровном месте».
После обновления платформы 1С. Формат индекса между версиями платформы может меняться. Если вы перешли на платформу с номером заметно новее прежнего, старый индекс иногда перестаёт читаться. Лечится полной перестройкой (очистить → обновить). Это нормальная разовая операция после крупного обновления.
Номер платформы смотрите в окне О программе (в «Такси» — через значок главного меню, пункт О программе). Сравнивайте версии по номеру: если индекс строился на платформе с номером ниже текущего и поиск сбоит — перестройте индекс на актуальной платформе один раз, дальше он будет жить в новом формате.
После обновления конфигурации. Список объектов и реквизитов, по которым работает поиск, задаётся в конфигураторе — у каждого объекта есть свойство полнотекстового поиска. Если после обновления конфигурации поиск перестал находить данные в каком-то справочнике или документе, проверьте в конфигураторе, что для нужных реквизитов полнотекстовый поиск разрешён. Это настройка уровня конфигурации, пользователь её не меняет.
| Что изменилось | Что сделать |
|---|---|
| Обновили платформу на более новую | Очистить и построить индекс заново |
| Обновили конфигурацию | Обновить индекс; проверить настройку поиска у реквизитов в конфигураторе |
| Перенесли файловую базу в другую папку | Построить индекс заново на новом месте |
| Перевели базу из файловой в клиент-серверную | Включить режим поиска и обновить индекс на сервере |
Обслуживание поиска в клиент-серверной базе
В клиент-серверном варианте за обновление индекса отвечает сервер 1С, а не компьютер пользователя. Из-за этого добавляется пара мест, где всё может застрять.
Регламентные и фоновые задания выполняются на рабочем сервере кластера. Если индекс не обновляется, проверьте, что сервер в принципе назначен выполнять фоновые задания — это задаётся в требованиях назначения функциональности рабочего сервера в консоли администрирования кластера. На типовой установке с одним сервером всё работает из коробки, но в кластере из нескольких серверов задания могут быть «отключены» на том узле, куда вы смотрите.
Через консоль администрирования кластера удобно:
- Открыть список регламентных заданий базы и найти задание обновления индекса.
- Посмотреть дату и результат последнего выполнения.
- Снять зависшее фоновое задание, если оно висит без прогресса, и запустить обновление заново.
Не перезапускайте рабочий процесс или службу сервера «для профилактики», пока идёт рабочий день. Перезапуск оборвёт сеансы всех пользователей базы. Снять одно зависшее фоновое задание безопаснее, чем трогать процесс целиком.
Если под рукой только утилита администрирования rac, список сеансов и заданий смотрят через неё. Конкретные подкоманды и параметры лучше уточнить в её собственной справке (rac help), чтобы не запускать наугад то, что затронет работающих пользователей.
Саму перестройку индекса в клиент-серверной базе делают всё той же обработкой Управление полнотекстовым поиском из режима 1С:Предприятие — отдельного «пересоздания через консоль» для индекса поиска нет. Консоль кластера управляет сеансами и заданиями, но не строит индекс напрямую.
Регулярное обслуживание, чтобы поиск не ломался
Полнотекстовый поиск — механизм неприхотливый, но ему нужно свежее состояние индекса. Пройдитесь по короткому списку и настройте всё один раз.
На клиент-серверной базе обновление индекса идёт в фоне на сервере и пользователям не мешает. Достаточно, чтобы регламентное задание было включено с разумным расписанием — ручное вмешательство больше не понадобится.