Индекс полнотекстового поиска 1С: отключение, очистка и перестроение

· 9 мин

Содержание

Заполнение индекса поиска отключают в двух местах. В конфигураторе у объекта метаданных ставят свойство Полнотекстовый поиск = Не использовать — тогда его данные перестают попадать в индекс. А сам механизм для всей базы выключают в режиме 1С:Предприятие: Все функции → Стандартные → Управление полнотекстовым поиском, или из кода методом ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска().

Обычно об этом вспоминают, когда файловая база долго стартует, диск забивается папкой индекса, а фоновое обновление тормозит работу. Ниже — как отключить заполнение, очистить индекс и вернуть его, если поиск всё-таки нужен.

Как устроен поисковый индекс в базе 1С

Полнотекстовый поиск — механизм платформы 1С:Предприятие 8.3, общий для всех конфигураций. Он ищет слово сразу по справочникам, документам и другим объектам. Чтобы поиск работал быстро, платформа строит отдельный индекс — набор файлов вне таблиц базы.

Кто участвует в процессе:

  • 📦 Объекты метаданных. У каждого справочника, документа, регистра и у их реквизитов есть свойство Полнотекстовый поиск. От него зависит, что попадёт в индекс.
  • 🔄 Обновление индекса. Новые и изменённые данные сначала копятся в очереди, а в индекс попадают при обновлении. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) это делают регламентные задания.
  • 🧩 Слияние индекса. Обновление создаёт дополнительную часть индекса. Слияние сводит её с основной. Это самая тяжёлая операция по диску и процессору.
  • 📁 Файлы индекса. В файловой базе они лежат в каталоге базы, в папке, имя которой начинается с 1Cv8FTxt. В клиент-серверной — в каталоге данных кластера на рабочем сервере.

Отсюда главный вывод. «Отключить заполнение» можно на трёх уровнях: исключить отдельные объекты, запретить поиск во всей базе или остановить только регламентное обновление. Результат у них разный.

УровеньГде делаетсяЧто происходит
Свойство объектаКонфигураторОбъект не индексируется, остальные ищутся
Режим поиска базы1С:Предприятие или кодПоиск и индексация выключены целиком
Регламентные задания1С:Предприятие, консоль кластераИндекс перестаёт обновляться, но остаётся на диске

Отключение индексации объектов в конфигураторе

Этот способ точечный. Он подходит, когда индекс раздувают несколько объектов — например, регистр с миллионами записей или справочник с длинными текстовыми реквизитами.

Пошагово

  1. Сделайте резервную копию: Администрирование → Выгрузить информационную базу в конфигураторе.
  2. Откройте конфигурацию: Конфигурация → Открыть конфигурацию.
  3. Найдите объект в дереве метаданных и откройте его свойства (Alt+Enter или двойной щелчок).
  4. В палитре свойств найдите Полнотекстовый поиск и выберите Не использовать.
  5. То же можно сделать для отдельных реквизитов и табличных частей объекта — у них своё свойство с тем же названием.
  6. Сохраните изменения и выполните Конфигурация → Обновить конфигурацию базы данных (F7).

Типовая конфигурация, которая стоит на поддержке, по умолчанию закрыта для изменения. Чтобы поменять свойство, придётся включить возможность изменения. Это усложнит будущие обновления: при каждом обновлении конфигурации изменённые объекты придётся сравнивать и объединять.

Как не трогать типовую конфигурацию

Если базу обновляете регулярно, править свойства в основной конфигурации не стоит. Безопаснее отключить механизм целиком в пользовательском режиме (следующий раздел) или перенести обновление индекса на ночь. Так конфигурация остаётся типовой, а обновления ставятся без ручного объединения.

💡 Какие объекты реально раздувают индекс, видно по составу базы. Обычно это регистры сведений с историей, журналы обмена, справочники с файлами и описаниями. Справочники «Номенклатура» и «Контрагенты», наоборот, лучше оставить — по ним и ищут чаще всего.

Выключение поиска для всей базы и настройки запуска

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

Через стандартную функцию платформы

  1. Запустите базу в режиме 1С:Предприятие под пользователем с полными правами.
  2. Если в главном меню нет пункта «Все функции», включите его: в параметрах программы отметьте флажок Отображать команду «Все функции».
  3. Откройте Все функции → Стандартные → Управление полнотекстовым поиском.
  4. Запретите полнотекстовый поиск кнопкой выключения на форме.

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

Через настройки типовой конфигурации

В конфигурациях на БСП есть своя настройка. В Бухгалтерии 3.0 и ЗУП 3.1 она находится в разделе Администрирование → Общие настройки, в группе про полнотекстовый поиск. Снимите флажок использования поиска — программа сама выключит регламентное обновление индекса.

Этот путь лучше стандартной функции. Типовая конфигурация «знает» о выключении и не включит обновление обратно.

Из встроенного языка

Для администраторов многих баз удобен код. Его можно выполнить во внешней обработке:

// Выключить полнотекстовый поиск в базе
ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Запретить);

// Удалить накопленный индекс
ПолнотекстовыйПоиск.ОчиститьИндекс();

// Проверить результат
Сообщить(ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска());

Чтобы вернуть поиск, передайте РежимПолнотекстовогоПоиска.Разрешить и выполните ПолнотекстовыйПоиск.ОбновитьИндекс().

Регламентные задания и запуск файловой базы

В файловом варианте регламентные задания выполняются в сеансах пользователей. Поэтому тяжёлое обновление или слияние индекса ощущается как «база тормозит после запуска».

Если поиск нужен, но обновление мешает днём, не выключайте его. Перенесите регламентные задания на ночь: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Найдите задания по слову «полнотекстов» и поменяйте расписание.

Удаление файлов индекса из каталога базы

Ручная очистка нужна, когда индекс повреждён: поиск выдаёт ошибки, а штатная очистка не срабатывает. Ещё один повод — папка индекса выросла до десятков гигабайт, а места на диске не осталось.

Удалять файлы можно только когда в базе нет ни одного сеанса. Иначе файлы заняты, а работающие пользователи получат ошибки поиска.

Файловая база

  1. Попросите всех выйти из базы. Проверьте, что сеансов не осталось (в конфигураторе: Администрирование → Активные пользователи).
  2. Откройте каталог базы — путь виден в списке баз окна запуска.
  3. Найдите папку с именем, начинающимся на 1Cv8FTxt.
  4. Переименуйте её, например, в 1Cv8FTxt_old. Удалять сразу не нужно — оставьте возможность отката.
  5. Запустите базу и убедитесь, что она открывается и работает.
  6. Если поиск оставляете, запустите полное обновление индекса через «Управление полнотекстовым поиском». Старую папку после этого удалите.

Клиент-серверная база

Файлы индекса лежат на рабочем сервере, в каталоге данных кластера. Обычно это папка вида ...\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Индекс строится зановоНичего не строится

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

Порядок для тестовой копии

Типичный сценарий разработчика выглядит так:

  1. Загрузите .dt рабочей базы в новую файловую базу.
  2. Сразу запустите обработку, выключающую поиск, — пакетно через /Execute, как показано выше.
  3. Проверьте, что папка 1Cv8FTxt в каталоге копии не растёт.
  4. Работайте с копией: тесты, отладка, проверка обновлений.

На копии для проверки обновления конфигурации это особенно заметно. Обновление идёт без параллельной индексации, и замер времени получается честным — без лишней нагрузки на диск.

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

Частые вопросы

Удалится ли что-то из данных, если очистить индекс?
Нет. Индекс хранится отдельно от таблиц базы. Очистка удаляет только файлы поиска, документы и справочники остаются на месте.
Попадает ли индекс в выгрузку .dt?
Нет, в файл выгрузки индекс не входит. После загрузки .dt его строят заново, если поиск в базе включён.
Нужно ли отключать поиск перед обновлением конфигурации?
Нет. Обновление конфигурации и индекс поиска друг от друга не зависят. Достаточно, чтобы во время обновления не выполнялось слияние индекса.
Почему поиск в списке работает, хотя полнотекстовый поиск выключен?
В списках есть простой поиск по колонкам, он не использует индекс. Выключение затрагивает только поиск по всем реквизитам сразу.
Можно ли выключить поиск только для части пользователей?
Нет. Режим полнотекстового поиска задаётся для всей базы. Ограничить можно состав индекса — свойством объектов в конфигураторе, — но не круг пользователей, которые ищут.
Помогает ли очистка кэша /ClearCache при проблемах с индексом?
Нет. Параметр /ClearCache чистит локальный кэш клиента на компьютере пользователя, а индекс поиска хранится в каталоге базы или на сервере.