Индекс полнотекстового поиска 1С: отключение, очистка и перестроение
Содержание
Заполнение индекса поиска отключают в двух местах. В конфигураторе у объекта метаданных ставят свойство Полнотекстовый поиск = Не использовать — тогда его данные перестают попадать в индекс. А сам механизм для всей базы выключают в режиме 1С:Предприятие: Все функции → Стандартные → Управление полнотекстовым поиском, или из кода методом ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска().
Обычно об этом вспоминают, когда файловая база долго стартует, диск забивается папкой индекса, а фоновое обновление тормозит работу. Ниже — как отключить заполнение, очистить индекс и вернуть его, если поиск всё-таки нужен.
Как устроен поисковый индекс в базе 1С
Полнотекстовый поиск — механизм платформы 1С:Предприятие 8.3, общий для всех конфигураций. Он ищет слово сразу по справочникам, документам и другим объектам. Чтобы поиск работал быстро, платформа строит отдельный индекс — набор файлов вне таблиц базы.
Кто участвует в процессе:
- 📦 Объекты метаданных. У каждого справочника, документа, регистра и у их реквизитов есть свойство
Полнотекстовый поиск. От него зависит, что попадёт в индекс. - 🔄 Обновление индекса. Новые и изменённые данные сначала копятся в очереди, а в индекс попадают при обновлении. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) это делают регламентные задания.
- 🧩 Слияние индекса. Обновление создаёт дополнительную часть индекса. Слияние сводит её с основной. Это самая тяжёлая операция по диску и процессору.
- 📁 Файлы индекса. В файловой базе они лежат в каталоге базы, в папке, имя которой начинается с
1Cv8FTxt. В клиент-серверной — в каталоге данных кластера на рабочем сервере.
Отсюда главный вывод. «Отключить заполнение» можно на трёх уровнях: исключить отдельные объекты, запретить поиск во всей базе или остановить только регламентное обновление. Результат у них разный.
| Уровень | Где делается | Что происходит |
|---|---|---|
| Свойство объекта | Конфигуратор | Объект не индексируется, остальные ищутся |
| Режим поиска базы | 1С:Предприятие или код | Поиск и индексация выключены целиком |
| Регламентные задания | 1С:Предприятие, консоль кластера | Индекс перестаёт обновляться, но остаётся на диске |
Отключение индексации объектов в конфигураторе
Этот способ точечный. Он подходит, когда индекс раздувают несколько объектов — например, регистр с миллионами записей или справочник с длинными текстовыми реквизитами.
Пошагово
- Сделайте резервную копию:
Администрирование → Выгрузить информационную базув конфигураторе. - Откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - Найдите объект в дереве метаданных и откройте его свойства (
Alt+Enterили двойной щелчок). - В палитре свойств найдите
Полнотекстовый поиски выберитеНе использовать. - То же можно сделать для отдельных реквизитов и табличных частей объекта — у них своё свойство с тем же названием.
- Сохраните изменения и выполните
Конфигурация → Обновить конфигурацию базы данных(F7).
Типовая конфигурация, которая стоит на поддержке, по умолчанию закрыта для изменения. Чтобы поменять свойство, придётся включить возможность изменения. Это усложнит будущие обновления: при каждом обновлении конфигурации изменённые объекты придётся сравнивать и объединять.
Как не трогать типовую конфигурацию
Если базу обновляете регулярно, править свойства в основной конфигурации не стоит. Безопаснее отключить механизм целиком в пользовательском режиме (следующий раздел) или перенести обновление индекса на ночь. Так конфигурация остаётся типовой, а обновления ставятся без ручного объединения.
💡 Какие объекты реально раздувают индекс, видно по составу базы. Обычно это регистры сведений с историей, журналы обмена, справочники с файлами и описаниями. Справочники «Номенклатура» и «Контрагенты», наоборот, лучше оставить — по ним и ищут чаще всего.
Выключение поиска для всей базы и настройки запуска
Когда поиск по базе никому не нужен, проще выключить его целиком. Конфигурацию при этом не меняют.
Через стандартную функцию платформы
- Запустите базу в режиме 1С:Предприятие под пользователем с полными правами.
- Если в главном меню нет пункта «Все функции», включите его: в параметрах программы отметьте флажок
Отображать команду «Все функции». - Откройте
Все функции → Стандартные → Управление полнотекстовым поиском. - Запретите полнотекстовый поиск кнопкой выключения на форме.
На этой же форме видна дата актуальности индекса и есть команды обновления и очистки. Форма платформенная, поэтому выглядит одинаково в любой конфигурации.
Через настройки типовой конфигурации
В конфигурациях на БСП есть своя настройка. В Бухгалтерии 3.0 и ЗУП 3.1 она находится в разделе Администрирование → Общие настройки, в группе про полнотекстовый поиск. Снимите флажок использования поиска — программа сама выключит регламентное обновление индекса.
Этот путь лучше стандартной функции. Типовая конфигурация «знает» о выключении и не включит обновление обратно.
Из встроенного языка
Для администраторов многих баз удобен код. Его можно выполнить во внешней обработке:
// Выключить полнотекстовый поиск в базе
ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Запретить);
// Удалить накопленный индекс
ПолнотекстовыйПоиск.ОчиститьИндекс();
// Проверить результат
Сообщить(ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска());
Чтобы вернуть поиск, передайте РежимПолнотекстовогоПоиска.Разрешить и выполните ПолнотекстовыйПоиск.ОбновитьИндекс().
Регламентные задания и запуск файловой базы
В файловом варианте регламентные задания выполняются в сеансах пользователей. Поэтому тяжёлое обновление или слияние индекса ощущается как «база тормозит после запуска».
Если поиск нужен, но обновление мешает днём, не выключайте его. Перенесите регламентные задания на ночь: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Найдите задания по слову «полнотекстов» и поменяйте расписание.
Удаление файлов индекса из каталога базы
Ручная очистка нужна, когда индекс повреждён: поиск выдаёт ошибки, а штатная очистка не срабатывает. Ещё один повод — папка индекса выросла до десятков гигабайт, а места на диске не осталось.
Удалять файлы можно только когда в базе нет ни одного сеанса. Иначе файлы заняты, а работающие пользователи получат ошибки поиска.
Файловая база
- Попросите всех выйти из базы. Проверьте, что сеансов не осталось (в конфигураторе:
Администрирование → Активные пользователи). - Откройте каталог базы — путь виден в списке баз окна запуска.
- Найдите папку с именем, начинающимся на
1Cv8FTxt. - Переименуйте её, например, в
1Cv8FTxt_old. Удалять сразу не нужно — оставьте возможность отката. - Запустите базу и убедитесь, что она открывается и работает.
- Если поиск оставляете, запустите полное обновление индекса через «Управление полнотекстовым поиском». Старую папку после этого удалите.
Клиент-серверная база
Файлы индекса лежат на рабочем сервере, в каталоге данных кластера. Обычно это папка вида ...\srvinfo\reg_1541\<идентификатор базы>\. Идентификатор базы — это GUID, его видно в свойствах базы в консоли администрирования.
Для серверной базы безопаснее сначала очистить индекс штатно — через форму управления поиском или методом ПолнотекстовыйПоиск.ОчиститьИндекс(). Ручная правка каталога кластера — крайняя мера. Она делается при остановленной службе агента сервера 1С, а остановка оборвёт сеансы всех пользователей всех баз этого сервера. Планируйте такое на нерабочее время.
Командная строка и консоль кластера
Отдельного параметра запуска, который выключал бы индексацию, у 1cv8.exe нет. Но командная строка нужна, чтобы выполнить выключение без ручного входа в каждую базу.
Пакетный запуск обработки
Сохраните код из раздела выше во внешнюю обработку
(в модуль формы, при открытии) и запустите её параметром /Execute:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE ^
/F"D:\Bases\Buh" /N"Администратор" /P"пароль" ^
/Execute"D:\Tools\ftsearch_off.epf" /DisableStartupMessages
Номер платформы и пути замените на свои. Для серверной базы вместо /F укажите /S"сервер\имя_базы". Так можно пройтись циклом по списку баз в bat-файле.
Блокировка регламентных заданий в серверной базе
Если цель — чтобы индекс перестал обновляться, а поиск по уже построенному индексу работал, достаточно заблокировать регламентные задания:
- 🖥️ Консоль администрирования серверов 1С. Откройте свойства информационной базы и отметьте
Блокировка регламентных заданий включена. - ⌨️ Утилита
rac. У команды изменения свойств базы есть параметр запрета регламентных заданий. Точный синтаксис для вашей версии смотрите в справке:rac help infobase.
Минус способа: блокируются все регламентные задания базы, а не только поисковые. Перестанут работать загрузка курсов валют, обмены по расписанию и прочее. Для продуктивной базы это обычно неприемлемо — подходит для копий и тестовых баз.
Проверка: виноват ли индекс
Перед отключением убедитесь, что проблема действительно в индексе. Иначе выключите полезный поиск, а тормоза останутся.
Где смотреть:
- 📅 Дата актуальности индекса — на форме «Управление полнотекстовым поиском». Если дата отстаёт на дни, обновление не работает.
- 📜 Журнал регистрации —
Администрирование → Обслуживание → Журнал регистрации. Отберите события по регламентным заданиям и посмотрите время их выполнения. - 💾 Размер папки
1Cv8FTxtв каталоге файловой базы. Сравните с размером файла1Cv8.1CD.
Что изменится после отключения
Для разработчика выключенный поиск — заметное облегчение на тестовых копиях. Копия базы, развёрнутая из .dt, не тратит время на перестроение индекса. Каталог базы меньше, бэкапы копируются быстрее.
Что получаете и что теряете:
| Поиск включён | Поиск выключен | |
|---|---|---|
| Поле поиска в списках и общий поиск | Ищет по всем реквизитам | Работает только простой отбор по колонкам |
| Нагрузка на диск | Регулярные обновления и слияния | Нет |
| Размер каталога базы | Плюс папка индекса | Только данные |
Восстановление из .dt | Индекс строится заново | Ничего не строится |
💡 На рабочей базе бухгалтерии поиск по всем реквизитам пригождается часто: найти документ по номеру входящего счёта или по фразе из комментария. Поэтому на рабочих базах чаще переносят обновление на ночь, а полностью выключают поиск — на копиях для разработки и тестирования.
Порядок для тестовой копии
Типичный сценарий разработчика выглядит так:
- Загрузите
.dtрабочей базы в новую файловую базу. - Сразу запустите обработку, выключающую поиск, — пакетно через
/Execute, как показано выше. - Проверьте, что папка
1Cv8FTxtв каталоге копии не растёт. - Работайте с копией: тесты, отладка, проверка обновлений.
На копии для проверки обновления конфигурации это особенно заметно. Обновление идёт без параллельной индексации, и замер времени получается честным — без лишней нагрузки на диск.
Если позже поиск понадобится, включите его тем же путём и запустите полное обновление индекса. На крупной базе первое построение занимает от десятков минут до нескольких часов — запускайте его вечером.