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

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При переходе конфигураций на новые версии платформы, особенно при ступенчатой миграции с устаревших версий (например, с 8.1 через 8.2 на 8.3), разработчики и администраторы часто сталкиваются с резким падением производительности. Одной из типичных проблем становится существенное замедление поиска по журналам документов, а попытка открыть стандартную форму Управление полнотекстовым поиском приводит к глухому зависанию клиентского приложения 1С. Разберем по шагам, почему это происходит, как восстановить работоспособность механизмов поиска и правильно перестроить индексные данные.

Выясним причину: почему форма зависает еще до нажатия кнопок

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

При инициализации формы система автоматически выполняет диагностические вызовы платформы, в частности метод ПолнотекстовыйПоиск.ПолучитьСостояниеПереиндексации(), а также проверяет дату и статус актуальности файлов индекса. Если база данных была сконвертирована, долгое время не обслуживалась или индексные файлы повреждены, чтение огромных или фрагментированных служебных файлов полностью блокирует основной поток пользовательского интерфейса. В файловом режиме работы ситуация усугубляется тем, что дисковые операции над поврежденной структурой выполняются монопольно, создавая видимость полного зависания процесса 1cv8.exe.

Способ 1. Штатная очистка и перестроение индекса через интерфейс

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

  1. Откроем форму Управление полнотекстовым поиском и дождемся, пока интерфейс станет активным (не прерывая процесс).
  2. Нажмем кнопку Очистить. Это действие полностью удалит устаревшие и некорректные индексные файлы, освободив дисковое пространство.
  3. Нажмем кнопку Обновить индекс. Система начнет последовательный обход метаданных и формирование новых таблиц поиска. Во время этой операции нельзя аварийно закрывать 1С.

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

Способ 2. Ручная очистка файлов индекса на уровне файловой системы

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

  1. Завершим все активные пользовательские сеансы и закроем конфигуратор. Убедимся через диспетчер задач, что процессы 1cv8.exe завершены.
  2. Перейдем в каталог информационной базы, где расположен файл 1Cv8.1CD.
  3. Найдем служебный каталог с именем 1Cv8FTxt. В нем содержатся индексные файлы с расширениями .ftx и .ind.
  4. Удалим папку 1Cv8FTxt целиком или очистим все ее содержимое.
  5. Запустим 1С:Предприятие в режиме 1С:Предприятие. Теперь форма управления откроется мгновенно, так как состояние поиска сброшено. После этого выполним штатное обновление индекса.

Способ 3. Программное управление полнотекстовым поиском

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


// Полная очистка существующего индекса полнотекстового поиска
ПолнотекстовыйПоиск.Очистить();

// Запуск полного обновления индекса (параметр Истина указывает на полное перестроение)
ПолнотекстовыйПоиск.Обновить(Истина);

// Выполнение слияния порций индекса для максимального быстродействия поиска
ПолнотекстовыйПоиск.СлияниеИндекса();

Если информационная база содержит большой объем текстовых данных, а аппаратные ресурсы ограничены (особенно при работе 32-разрядного клиента, имеющего жесткий лимит оперативной памяти на процесс), полнотекстовый поиск можно полностью отключить программно:

ПолнотекстовыйПоиск.УстановитьРежим(РежимПолнотекстовогоПоиска.НеИспользовать);

Способ 4. Проверка целостности базы после миграции с 8.1

Ступенчатый переход между платформами 8.1, 8.2 и 8.3 часто оставляет скрытые ошибки в структуре таблиц. Обязательно выполним регламентное обслуживание базы данных:

  1. Создадим резервную копию информационной базы.
  2. Запустим утилиту проверки целостности chdbfl.exe, расположенную в каталоге bin установленной платформы 1С, и устраним найденные физические ошибки файла 1Cv8.1CD.
  3. Запустим Конфигуратор, перейдем в меню Администрирование -> Тестирование и исправление.
  4. В списке проверок обязательно отметим флажками пункты Реиндексация таблиц информационной базы и Пересоздание данных полнотекстового поиска, после чего нажмем Выполнить.

Разграничение полнотекстового и стандартного поиска в обычных формах

Проанализируем специфику работы обычных форм, о которых шла речь в исходной проблеме. В обычных формах поиск в списках и журналах документов (по комбинации клавиш Ctrl+F или при наборе текста в колонке) по умолчанию опирается не на полнотекстовый индекс, а на стандартные индексы СУБД по реквизитам таблиц.

Если тормозит именно поиск по колонкам журнала («Номер», «Дата», «Контрагент»), проверим метаданные в Конфигураторе:

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

Комплексный подход — очистка каталога 1Cv8FTxt, тестирование с реиндексацией таблиц и включение индексов у ключевых реквизитов журнала — позволяет полностью устранить зависания и вернуть высокую скорость работы программы.

← На главную