При переходе конфигураций на новые версии платформы, особенно при ступенчатой миграции с устаревших версий (например, с 8.1 через 8.2 на 8.3), разработчики и администраторы часто сталкиваются с резким падением производительности. Одной из типичных проблем становится существенное замедление поиска по журналам документов, а попытка открыть стандартную форму Управление полнотекстовым поиском приводит к глухому зависанию клиентского приложения 1С. Разберем по шагам, почему это происходит, как восстановить работоспособность механизмов поиска и правильно перестроить индексные данные.
Многие пользователи удивляются тому, что интерфейс перестает отвечать сразу в момент открытия формы управления, хотя никаких команд запуска обновления индекса еще не отдавалось. Проанализируем внутреннее устройство этого механизма.
При инициализации формы система автоматически выполняет диагностические вызовы платформы, в частности метод ПолнотекстовыйПоиск.ПолучитьСостояниеПереиндексации(), а также проверяет дату и статус актуальности файлов индекса. Если база данных была сконвертирована, долгое время не обслуживалась или индексные файлы повреждены, чтение огромных или фрагментированных служебных файлов полностью блокирует основной поток пользовательского интерфейса. В файловом режиме работы ситуация усугубляется тем, что дисковые операции над поврежденной структурой выполняются монопольно, создавая видимость полного зависания процесса 1cv8.exe.
Если зависание длится некоторое время, но не приводит к падению программы с ошибкой нехватки памяти, наиболее простое решение — дождаться завершения системной проверки. Снятие процесса через диспетчер задач только усугубляет повреждение индекса. Разберем правильный порядок действий при восстановлении индекса ППД (полнотекстового поиска данных):
Обратите внимание на важный нюанс файлового режима: рекомендация запустить индексацию и продолжать параллельно работать во втором окне здесь практически неприменима. Обновление индекса накладывает файловые блокировки как на служебные каталоги, так и на основной файл 1Cv8.1CD, из-за чего параллельные сеансы будут регулярно зависать при попытке записи данных.
Если форма намертво виснет и дождаться ее открытия невозможно, выполним сброс индекса вручную в обход графического интерфейса. В файловой информационной базе индексные таблицы хранятся отдельно от основных данных конфигурации.
1cv8.exe завершены.1Cv8.1CD..ftx и .ind.В ситуациях, когда интерактивная форма недоступна или операцию необходимо автоматизировать, обратимся к встроенному языку платформы 1С. Создадим внешнюю обработку или выполним код в контексте внешнего подключения. Рассмотрим программный алгоритм полной переиндексации:
// Полная очистка существующего индекса полнотекстового поиска
ПолнотекстовыйПоиск.Очистить();
// Запуск полного обновления индекса (параметр Истина указывает на полное перестроение)
ПолнотекстовыйПоиск.Обновить(Истина);
// Выполнение слияния порций индекса для максимального быстродействия поиска
ПолнотекстовыйПоиск.СлияниеИндекса();
Если информационная база содержит большой объем текстовых данных, а аппаратные ресурсы ограничены (особенно при работе 32-разрядного клиента, имеющего жесткий лимит оперативной памяти на процесс), полнотекстовый поиск можно полностью отключить программно:
ПолнотекстовыйПоиск.УстановитьРежим(РежимПолнотекстовогоПоиска.НеИспользовать);
Ступенчатый переход между платформами 8.1, 8.2 и 8.3 часто оставляет скрытые ошибки в структуре таблиц. Обязательно выполним регламентное обслуживание базы данных:
bin установленной платформы 1С, и устраним найденные физические ошибки файла 1Cv8.1CD.Проанализируем специфику работы обычных форм, о которых шла речь в исходной проблеме. В обычных формах поиск в списках и журналах документов (по комбинации клавиш Ctrl+F или при наборе текста в колонке) по умолчанию опирается не на полнотекстовый индекс, а на стандартные индексы СУБД по реквизитам таблиц.
Если тормозит именно поиск по колонкам журнала («Номер», «Дата», «Контрагент»), проверим метаданные в Конфигураторе:
Индексировать или Индексировать с дополнительным упорядочиванием.Не использовать.Комплексный подход — очистка каталога 1Cv8FTxt, тестирование с реиндексацией таблиц и включение индексов у ключевых реквизитов журнала — позволяет полностью устранить зависания и вернуть высокую скорость работы программы.