Как программно отключить полнотекстовый поиск (ПТП) в 1С
Механика ПТП и симптомы деградации производительности
Подсистема Полнотекстовый поиск (ПТП) в 1С:Предприятие предназначена для быстрого поиска данных по всей базе (аналог поиска Google внутри конфигурации). Однако ее работа обеспечивается ресурсоемкими фоновыми заданиями: «Обновление индекса ПТП» и «Слияние индекса ПТП». В крупных базах данных (особенно при массовых загрузках документов или обмене с сайтом) эти регламентные задания потребляют до 100% ресурсов дисковой подсистемы (IOPS) и CPU сервера 1С, блокируя работу пользователей. Папка индекса (внутри каталога кластера srvinfo) может разрастаться до сотен гигабайт. Бизнес-риски: глобальные тормоза базы, жалобы на зависания при проведении документов (Lock Wait Timeout).
Симптоматика перегрузки индексом
| Место проявления | Симптом (Индикатор) |
|---|---|
| Консоль кластера 1С (Сеансы) | Постоянно висит активный фоновый сеанс 'Обновление индекса полнотекстового поиска'. |
| Диспетчер задач / Resource Monitor | Процесс rphost.exe постоянно пишет/читает огромные объемы данных на диск. |
| Размер каталога кластера | Папка reg_1541\ занимает десятки/сотни ГБ. |
Алгоритм отключения и очистки подсистемы ПТП
Сценарий 1: Программное отключение (Код 1С)
Самый надежный способ выключить функционал — использовать методы глобального контекста. Создайте обработку или выполните код в консоли кода.
Отключение ПТП для всей конфигурации
ПолнотекстовыйПоиск.УстановитьИспользование(Ложь);
Физическое удаление файлов индекса с диска (Освобождение места)
ПолнотекстовыйПоиск.ОчиститьИндекс();Сценарий 2: Отключение через интерфейс (БСП)
Если в конфигурации внедрена Библиотека Стандартных Подсистем (БП, УТ, ERP):
- Перейдите в раздел НСИ и администрирование -> Общие настройки.
- В секции "Поиск данных" снимите галочку Полнотекстовый поиск данных.
- Система автоматически отключит регламентные задания.
Сценарий 3: Управление Регламентными Заданиями
Если поиск нужен, но мешает работать днем, отключите автоматическое обновление индекса и перенесите его на ночь.
- Откройте Администрирование -> Поддержка и обслуживание -> Регламентные и фоновые задания.
- Найдите задания: Обновление индекса ППД и Слияние индекса ППД.
- Либо снимите галочку "Включено", либо настройте расписание: например, слияние раз в сутки в 02:00 ночи.
Типовые ошибки администраторов
- Удаление папки 1Cv8FTxt через файловую систему (ОС): Если удалить файлы индекса руками (Delete) при работающей службе 1С, платформа выдаст фатальную ошибку «Ошибка эксклюзивной блокировки файла индекса» или упадет процесс rphost. Очистку нужно делать ТОЛЬКО методом
ОчиститьИндекс()или останавливая службу сервера. - Отключение ПТП в базах ДО (Документооборот): В конфигурации '1С:Документооборот' глобальный поиск — критически важная функция (поиск по текстам сканов и писем). Ее отключение сделает базу почти бесполезной для делопроизводителей. Здесь нужно настраивать расписание, а не отключать.
Проблема может быть не только в ПТП, но и в неоптимальных SQL-запросах, взаимных блокировках (Deadlocks) или настройках СУБД (PostgreSQL/MS SQL). Эксперты ITSTM проведут технологический анализ (ЦКК) вашей системы, найдут 'бутылочные горлышки' и ускорят работу базы в 2-3 раза.
Частые вопросы (FAQ)
В чем разница между 'Обновлением' и 'Слиянием' индекса?
Обновление — добавляет новые/измененные данные в основной индекс (происходит часто и быстро). Слияние — это дефрагментация (упаковка) разрозненных индексов в один монолитный файл для ускорения поиска (очень тяжелая операция, лучше делать ночью).
После отключения ПТП перестанет работать кнопка 'Найти' в списках?
Нет. Локальный поиск по колонкам динамического списка (Ctrl+F) работает на уровне SQL-запросов (конструкция LIKE или индексированные поля СУБД). ПТП отвечает только за глобальную строку поиска ('поиск везде').
Почему размер базы растет, даже если ПТП отключен?
Платформа все равно регистрирует изменения объектов в специальной таблице (очередь индексации), готовясь к тому, что ПТП могут включить. Чтобы эта очередь не пухла, периодически выполняйте ПолнотекстовыйПоиск.ОчиститьИндекс(), даже если использование ПТП установлено в 'Ложь'.
Можно ли исключить конкретный справочник из ПТП?
Да. В конфигураторе в свойствах конкретного объекта (Справочника, Документа) есть свойство 'Полнотекстовый поиск'. Установите его в 'Не использовать'.