Поиск в 1С не находит новые данные: как перестроить индекс

· 9 мин

Содержание

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

Частое заблуждение — считать, что поиск «сломался», раз он не видит вчерашний документ. Чаще всего индекс просто не обновлялся: регламентное задание выключено или в файловой базе его некому было запустить. Механизм общий для платформы, поэтому шаги одинаковы для Бухгалтерии, ЗУП, УТ и других конфигураций.

Как понять, что индекс полнотекстового поиска устарел или повреждён

Полнотекстовый поиск ищет не по самим таблицам базы, а по отдельному индексу. Индекс — это набор файлов, которые платформа пополняет по мере изменения данных. Пока индекс не обновлён, новые и изменённые записи в поиске не видны.

Признаки устаревшего индекса:

  • 🔍 поиск находит старые документы, но не находит созданные сегодня;
  • 📅 в форме управления поиском дата актуальности индекса отстаёт на дни или недели;
  • ⚠️ рядом с датой стоит отметка, что индекс не актуален.

Признаки повреждённого индекса:

  • ❌ при поиске появляется ошибка, а не пустой результат;
  • 🔁 обновление индекса падает с ошибкой или зависает на одном месте;
  • 🧩 поиск находит удалённые объекты, ссылки ведут на «битые» записи.

Устаревший индекс лечится обычным обновлением. Повреждённый — очисткой и полной перестройкой.

Проверьте, включён ли поиск вообще. В форме управления поиском есть переключатель «Включить / Выключить». Если поиск выключен, обновлять индекс бесполезно: платформа его не использует.

Подготовка: что проверить перед перестройкой индекса

Обычное обновление индекса безопасно. Его можно запускать при работающих пользователях — данные базы оно не меняет, только дописывает индекс.

Полная перестройка — другое дело. Пока индекс пуст и строится заново, поиск в базе не работает . На базе в десятки гигабайт это может занять часы.

Перед перестройкой проверьте:

  1. Размер базы и время. Запускайте вечером или в выходной, если база большая.
  2. Место на диске. Индекс по объёму сопоставим с заметной долей базы, а при слиянии временно нужно ещё столько же.
  3. Права. Для работы с индексом нужны административные права в информационной базе.
  4. Кто работает в базе. Для удаления каталога индекса на диске нужно, чтобы файлы не были заняты. Это значит — завершить сеансы.
Перед полной перестройкой индекса
Выполнено: 0 / 5

Обновление индекса полнотекстового поиска в файловой базе

Для файловой базы есть три способа. Идите от первого к третьему: каждый следующий радикальнее.

Способ 1. Стандартная форма платформы

Форма есть в любой конфигурации на 8.3, даже самописной.

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

Если после обновления поиск по-прежнему ошибается, в этой же форме нажмите «Очистить индекс », а затем снова «Обновить индекс». Это и есть полная перестройка штатными средствами.

Способ 2. Через раздел «Администрирование» типовой конфигурации

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть своя форма с теми же действиями и настройками расписания. Ищите её в Администрирование → Обслуживание (в старых релизах раздел назывался «Поддержка и обслуживание»), в группе про полнотекстовый поиск.

Там же обычно включается сам поиск и извлечение текстов из прикреплённых файлов. Действия по индексу совпадают со стандартной формой: обновить, очистить, проверить актуальность.

Способ 3. Удаление каталога индекса

Этот способ нужен, когда «Очистить индекс» падает с ошибкой — файлы индекса испорчены.

  1. Завершите все сеансы и закройте 1С у всех пользователей.
  2. Откройте каталог файловой базы (тот, где лежит 1Cv8.1CD).
  3. Найдите внутри каталог индекса — его имя начинается с 1Cv8FTxt.
  4. Переместите его в другое место, а не удаляйте сразу. Если что-то пойдёт не так, его можно вернуть.
  5. Запустите базу и выполните «Обновить индекс» — платформа построит индекс с нуля.
  6. Убедитесь, что поиск работает, и только после этого удалите старую копию.

Не трогайте файл 1Cv8.1CD — это сама база данных. Удалять или переносить можно только каталог индекса.

Как проверить, что индекс построен

Не ограничивайтесь сообщением об окончании. Сделайте две проверки:

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

Перестройка индекса в клиент-серверном варианте 1С

В клиент-серверной базе индекс хранится не у пользователя и не в СУБД, а на сервере 1С. Он лежит в каталоге кластера, в подкаталоге конкретной базы:

<каталог службы 1С>\srvinfo\reg_1541\<идентификатор базы>\1Cv8FTxt

reg_1541 соответствует порту менеджера кластера по умолчанию. Если кластер работает на другом порту, номер будет другим. Идентификатор базы — это GUID; узнать его можно в консоли администрирования серверов, в свойствах информационной базы.

Обычное обновление на сервере

Сначала пробуйте то же, что и в файловом варианте: форма «Управление полнотекстовым поиском» или раздел администрирования конфигурации. Индекс обновляет рабочий процесс сервера, поэтому клиенту не нужен мощный компьютер.

Если индекс на сервере повреждён

Когда штатная очистка не проходит, приходится работать с каталогом на сервере. Файлы индекса держит открытыми рабочий процесс, поэтому просто так их не удалить.

  1. Предупредите пользователей и выберите окно обслуживания.
  2. В консоли администрирования серверов установите для базы блокировку начала сеансов.
  3. Завершите сеансы этой базы.
  4. Если файлы всё равно заняты, остановите службу «Агент сервера 1С:Предприятия». Остановка службы оборвёт сеансы во всех базах кластера, не только в этой. Делайте это только в окно обслуживания.
  5. Перенесите каталог 1Cv8FTxt нужной базы в резервное место.
  6. Запустите службу, снимите блокировку сеансов, выполните «Обновить индекс».

На сервере с несколькими рабочими серверами индекс относится к тому серверу, где выполняется задание. Проверьте в консоли, на каком сервере кластера лежит реестр базы, и работайте с каталогом именно там.

Обновление из кода

Если обновление нужно запускать из своей обработки или по своему расписанию, у платформы есть методы менеджера ПолнотекстовыйПоиск. Пример для внешней обработки, выполняется на сервере:

&НаСервере
Процедура ПерестроитьИндексНаСервере()

    Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска()
        <> РежимПолнотекстовогоПоиска.Разрешить Тогда
        ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(
            РежимПолнотекстовогоПоиска.Разрешить);
    КонецЕсли;

    ПолнотекстовыйПоиск.ОчиститьИндекс();
    ПолнотекстовыйПоиск.ОбновитьИндекс(Истина); // Истина — со слиянием индексов

    Сообщить("Индекс актуален: " + ПолнотекстовыйПоиск.ИндексАктуален()
        + ", дата актуальности: " + ПолнотекстовыйПоиск.ДатаАктуальности());

КонецПроцедуры

Для ежедневного обновления очистка не нужна — достаточно ОбновитьИндекс(). Очистку оставляйте для случаев, когда индекс испорчен.

Автоматическое обновление индекса: регламентные задания

Ручное обновление — разовая мера. Чтобы поиск всегда видел свежие данные, индекс должен обновляться сам.

В типовых конфигурациях за это отвечают два регламентных задания — обновление индекса и слияние индекса полнотекстового поиска. Найти их можно в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.

ЗаданиеЧто делаетРазумное расписание
Обновление индексадописывает в индекс изменениякаждые 1–15 минут в рабочее время
Слияние индексаобъединяет основной и дополнительный индексраз в сутки, ночью

Проверьте у каждого задания три вещи: флажок «Включено», расписание и дату последнего запуска с результатом.

Особенность файлового варианта

В файловой базе нет сервера, который запускал бы задания по расписанию. Регламентные задания выполняет один из открытых клиентских сеансов. Если база ночью закрыта, ночного слияния не будет.

Отсюда типичная картина: днём поиск работает, а утром индекс отстаёт. Решения — держать открытый сеанс на одном компьютере или запускать обновление вручную в начале дня.

Журнал регистрации и ошибки индексации

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

В клиент-серверном варианте добавьте технологический журнал на сервере, если журнал регистрации молчит. Он покажет исключения рабочего процесса при доступе к файлам индекса.

Диагностика: выберите симптом

Ошибка «нет места на диске» во время слияния — частая причина испорченного индекса. Слиянию нужно временное место примерно на размер индекса.

Как ускорить полнотекстовый поиск и индексацию

Скорость поиска упирается в размер индекса и диск, на котором он лежит.

Сократите то, что попадает в индекс

У каждого объекта метаданных и реквизита в конфигураторе есть свойство «Полнотекстовый поиск» со значениями «Использовать» и «Не использовать». Исключите из индекса то, по чему никто не ищет: служебные регистры, технические реквизиты, длинные строки неограниченной длины.

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

Следите за извлечением текстов

Если в базе включено извлечение текстов из прикреплённых файлов, содержимое документов Word, PDF и таблиц тоже попадает в индекс. При тысячах вложений индекс растёт в разы. Если поиск по содержимому файлов не нужен, выключите извлечение текстов в разделе администрирования.

Железо и обслуживание

  • 💾 Держите каталог индекса на SSD — индексация активно читает и пишет мелкие файлы.
  • 🛡️ Добавьте каталог 1Cv8FTxt в исключения антивируса: проверка каждого файла замедляет обновление и может его прервать.
  • 🌙 Слияние запускайте ночью, а обновление — часто и небольшими порциями. Частое небольшое обновление нагружает систему меньше, чем одно большое раз в неделю.
  • 📏 Следите за местом: держите свободным хотя бы двойной размер каталога индекса.

Когда полнотекстовый поиск лучше выключить

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

Частые вопросы

Можно ли обновлять индекс, пока пользователи работают в базе?
Да. Обычное обновление не мешает работе и не требует монопольного режима. Ограничения есть только у полной перестройки: пока индекс строится заново, поиск недоступен.
Сколько времени занимает перестройка индекса?
Зависит от объёма данных и диска. Небольшая база индексируется за минуты, база в десятки гигабайт с вложениями — часами. Поэтому полную перестройку планируют на вечер или выходной.
Индекс переносится вместе с выгрузкой .dt?
Нет. В выгрузку попадают данные, но не индекс. После загрузки .dt в новую базу индекс нужно построить заново.
Нужно ли перестраивать индекс после обновления конфигурации?
Обычно нет — платформа дополнит индекс сама. Если после обновления поиск стал ошибаться или не находит объекты новых разделов, выполните очистку и обновление индекса.
Почему в копии базы поиск не работает, а в рабочей работает?
Индекс хранится отдельно от данных. При копировании файловой базы без каталога индекса или при развёртывании копии на другом сервере индекса там просто нет — его нужно построить.