В процессе эксплуатации крупных баз данных на платформе 1С:Предприятие 8.3, таких как 1С:ERP или 1С:Комплексная автоматизация, системные администраторы часто сталкиваются с проблемой «зависшего» полнотекстового поиска. Типичная ситуация: пользователь инициирует очистку или обновление индекса, процесс прерывается из-за ошибки (например, нехватки прав или сбоя сети), и система блокирует любые дальнейшие действия с индексом, выдавая сообщение: «Очистка индекса невозможна, пока идет его построение». Рассмотрим подробно, как выйти из этого замкнутого круга и восстановить работоспособность поиска.
Прежде чем переходить к активным действиям, проанализируем ситуацию. Механизм полнотекстового поиска (ППД) в 1С работает через фоновые процессы. Когда мы нажимаем кнопку «Обновить индекс», система запускает регламентное задание. Если база имеет внушительный объем (например, более 200 Гб), этот процесс может занимать десятки часов. Если в это время происходит программный сбой или принудительное завершение сеанса, в метаданных системы остается флаг, указывающий на то, что индексирование всё еще выполняется. Для контроля и завершения зависших процессов можно использовать инструмент для управления регламентными и фоновыми заданиями.
Важно понимать, что обычное Тестирование и Исправление (ТИИ) здесь не поможет. Как мы выяснили в ходе обсуждения, ТестированиеИИсправление никаким образом не затрагивает таблицы и файлы полнотекстового поиска. Индекс ППД — это внешняя по отношению к таблицам данных структура, поэтому тратить время на реиндексацию таблиц SQL в данном контексте бессмысленно.
Это наиболее «мягкий» способ, который позволяет остановить зациклившиеся процессы без прямого вмешательства в файловую систему. Выполним следующие шаги:
Блокировка регламентных заданий включена. Это необходимо, чтобы система не пыталась автоматически перезапустить процесс индексации сразу после перезагрузки.1C:Enterprise Server. Это гарантированно завершит все зависшие потоки, которые могли удерживать файлы индекса.Управление полнотекстовым поиском и нажмем кнопку Очистить индекс. Теперь, когда регламентные задания заблокированы, система не должна выдавать ошибку о текущем построении.Обновить индекс. Учтите, что для базы объемом 220 Гб этот процесс может занять очень длительное время (от нескольких часов до суток).Если программные методы не помогают и ошибка доступа к файлам сохраняется в журнале регистрации, проанализируем состояние папок на сервере приложений. Индекс ППД хранится не в SQL-базе, а в специальных файлах на диске сервера.
Посмотрим на алгоритм радикальной очистки:
1cv8.C:\Program Files\1cv8\srvinfo\reg_XXXX\GUID_вашей_базы.1Cv8FTxt. Именно здесь лежат файлы полнотекстового индекса.1Cv8FTxt. Внимание: удаляйте только содержимое этой папки, не трогайте другие файлы конфигурации базы!Иногда интерфейсные формы блокируются из-за ошибок в коде самих обработок управления. В такой ситуации мы можем программно изменить режим работы поиска. Выясним, как это сделать с помощью внешней обработки или консоли кода:
// Отключаем полнотекстовый поиск программно
ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Выключен);
// Принудительно очищаем индекс
ПолнотекстовыйПоиск.ОчиститьИндекс();
// Включаем поиск обратно
ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Включен);
// Запускаем фоновое обновление
ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Истина);
Использование метода ОбновитьИндекс с параметрами позволяет запустить процесс порционно. Первый параметр (Ложь) указывает, что мы не делаем полное слияние немедленно, а второй (Истина) позволяет выполнять индексацию только для измененных данных, что может быть быстрее.
Проанализируем сообщение из журнала регистрации об «отсутствии доступа пользователя к каталогам». Это критический момент. Если учетная запись, под которой работает служба 1cv8 (например, USR1CV8), не имеет прав на запись/удаление в папке srvinfo, то процесс индексации никогда не завершится успешно. Он будет постоянно «зацикливаться» на попытке финализировать файлы индекса.
Убедимся в следующем:
USR1CV8 даны полные права (Full Control) на папку 1Cv8FTxt и все вложенные объекты.Чтобы в будущем избежать многодневных ожиданий при обновлении поиска на базе в 220 Гб, рекомендуется выполнить оптимизацию. Рассмотрим, что можно сделать:
В форме Управление полнотекстовым поиском есть список всех объектов метаданных, включенных в индекс. Проанализируем, действительно ли пользователям нужен поиск по всем документам за последние 10 лет? Часто можно существенно ускорить работу, сняв флаг Полнотекстовый поиск - Использовать у следующих объектов:
Такая настройка значительно сократит размер файлов в папке 1Cv8FTxt и уменьшит время, необходимое на «Слияние» индексов, которое чаще всего и является причиной «зависания» процесса на больших объемах данных. Для выявления наиболее тяжелых таблиц и объектов метаданных можно применить инструмент для анализа распределения объемов базы данных.