Папка 1Cv8FTxt и служебные данные: как устроено хранение полнотекстового индекса 1С

· 9 мин

Содержание

Индекс полнотекстового поиска 1С хранится не в таблицах базы, а в отдельной папке 1Cv8FTxt. В файловом варианте она лежит рядом с файлом 1Cv8.1CD, в клиент-серверном — на сервере 1С, в каталоге информационной базы внутри srvinfo\reg_1541\<GUID базы>. В самой СУБД остаются только служебные данные: режим поиска, очередь изменённых объектов и признаки, какие реквизиты индексировать.

Отсюда частая путаница: администратор делает бэкап SQL-базы, разворачивает его на новом сервере, а поиск ничего не находит. Индекс в бэкап не попал — его надо построить заново. Поэтому полезно знать, где физически лежит каждая часть полнотекстового поиска и какую из них можно безопасно удалить или перестроить при сбое.

Файловая база: папка индекса рядом с 1Cv8.1CD

В файловом варианте всё просто. Откройте каталог информационной базы — тот, что указан в списке баз в окне запуска 1С. Внутри увидите:

  • 📄 1Cv8.1CD — сам файл базы с данными;
  • 📁 1Cv8FTxt — индекс полнотекстового поиска;
  • 📄 1Cv8tmp.1CD — временный файл, появляется во время работы и при тестировании;
  • 📁 прочие служебные папки и файлы журналов.

Папка 1Cv8FTxt создаётся платформой автоматически, когда индекс строится первый раз. Внутри — набор файлов словаря и индекса. Открывать их вручную бессмысленно: формат внутренний, редактировать нечего.

Как быстро найти каталог базы

  1. Запустите 1С и выделите базу в списке.
  2. Внизу окна запуска показан путь вида File="D:\Bases\Buh".
  3. Перейдите в этот каталог в проводнике.

Если папки 1Cv8FTxt там нет — индекс ни разу не обновлялся или поиск в базе отключён.

Размер 1Cv8FTxt легко сравнить с размером 1Cv8.1CD. Для базы бухгалтерии с несколькими годами документов индекс в 20–40% от размера базы — обычная картина. Если индекс больше самой базы, скорее всего, давно не выполнялось слияние.

Копирование и перенос файловой базы

При копировании базы на другой компьютер папку 1Cv8FTxt переносить не обязательно. Без неё база откроется, а индекс построится заново при первом обновлении. На большой базе это займёт от нескольких минут до часа, зато вы гарантированно получите целый индекс без «хвостов» старых ошибок.

Клиент-серверный вариант: индекс живёт на сервере 1С

В клиент-серверной базе данные лежат в СУБД (MS SQL, PostgreSQL), а индекс полнотекстового поиска — в файловой системе сервера 1С:Предприятия. Путь по умолчанию в Windows:

C:\Program Files\1cv8\srvinfo\reg_1541\<GUID информационной базы>\1Cv8FTxt

Здесь:

  • srvinfo — рабочий каталог кластера (его можно задать при установке службы иначе);
  • reg_1541 — каталог кластера, где 1541 — порт менеджера кластера;
  • <GUID информационной базы> — папка конкретной базы.

В Linux корень обычно /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/, дальше структура та же.

Как понять, какой GUID у нужной базы

В каталоге reg_1541 лежит файл 1CV8Clst.lst — реестр кластера. Это текстовый файл: откройте его копию в блокноте и найдите имя базы. Рядом с именем указан её GUID. Папка с таким именем и есть каталог базы.

Не редактируйте сам 1CV8Clst.lst и не сохраняйте его из блокнота — повреждение реестра кластера ломает доступ ко всем базам сервера.

Если в кластере несколько рабочих серверов

Индексом занимается сервис полнотекстового поиска кластера. На какой машине он работает, определяют требования назначения функциональности в свойствах рабочего сервера. Индекс ищите на том рабочем сервере, где этот сервис запущен. При переносе функциональности на другой сервер индекс там построится заново.

Что учесть при бэкапе

Что копируетеИндекс попадает?Что делать после восстановления
Бэкап SQL-базы средствами СУБДНетОбновить индекс полностью
Выгрузка .dt из конфигуратораНетОбновить индекс полностью
Копия каталога файловой базы целикомДаНичего, если копия целая
Только файл 1Cv8.1CDНетОбновить индекс полностью

Что хранится в самой базе данных

Таблицы СУБД, где лежали бы «слова индекса», нет. В базе хранится то, что нужно платформе для управления индексом:

  • ⚙️ режим полнотекстового поиска — разрешён он в базе или запрещён;
  • 🧾 очередь изменений — список объектов, которые записали после последнего обновления индекса;
  • 🗂️ признаки индексации в метаданных конфигурации — какие объекты и реквизиты попадают в индекс;
  • 🕒 дата актуальности индекса.

Эти данные находятся в служебных таблицах платформы. Их имена и структура — внутреннее устройство 1С, и менять их запросами в SQL нельзя. Последствия — от расхождения индекса до неработающей базы. Всё нужное доступно через встроенные средства.

Как посмотреть состояние без SQL

Платформа даёт объект ПолнотекстовыйПоиск. В консоли запросов или обработке, выполняемой на сервере, можно получить:

Режим = ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска();
Актуален = ПолнотекстовыйПоиск.ИндексАктуален();
ДатаИндекса = ПолнотекстовыйПоиск.ДатаАктуальности();

Сообщить("Режим: " + Режим);
Сообщить("Индекс актуален: " + Формат(Актуален, "БЛ=Нет; БИ=Да"));
Сообщить("Дата актуальности: " + Формат(ДатаИндекса, "ДЛФ=DT"));

Если ИндексАктуален() возвращает «Нет» — в очереди есть изменения, ещё не попавшие в индекс. Это нормально между запусками регламентного задания. Плохо, если дата актуальности застыла на неделе назад.

Настройки: конфигуратор, режим 1С:Предприятие и регламентные задания

Настройки полнотекстового поиска разнесены по трём местам.

В конфигураторе — что индексировать

У объектов метаданных (справочников, документов, регистров) и у их реквизитов есть свойство «Полнотекстовый поиск» со значениями «Использовать» и «Не использовать». Оно хранится в конфигурации базы.

  1. Откройте конфигуратор и дерево конфигурации.
  2. Выделите объект или реквизит и откройте палитру свойств.
  3. Найдите свойство «Полнотекстовый поиск» (раздел «Полнотекстовый поиск» или поиск по палитре).

В типовых конфигурациях свойство уже настроено разработчиком. Менять его в поставочной конфигурации без расширения или снятия с поддержки не стоит — потом это мешает обновлению.

В режиме 1С:Предприятие — включение и управление

Стандартная функция платформы: Все функции → Стандартные → Управление полнотекстовым поиском. Пункт «Все функции» включается в параметрах главного меню (флажок «Отображать команду “Все функции”»).

В этом окне:

  • включается и выключается полнотекстовый поиск в базе;
  • видна дата актуальности индекса;
  • есть кнопки обновления и очистки индекса;
  • флажок разрешения слияния индекса.

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

Регламентные задания — когда обновлять

Индекс обновляется не мгновенно, а по расписанию. В типовых конфигурациях за это отвечают два регламентных задания:

ЗаданиеЧто делаетТипичное расписание
Обновление индекса ППДДобавляет в индекс записанные объекты из очередиКаждые 1–5 минут в рабочее время
Слияние индекса ППДОбъединяет части индекса в одну, ускоряет поискРаз в сутки ночью

Расписание меняется в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В клиент-серверной базе проверьте также, что в свойствах базы в консоли кластера не стоит блокировка регламентных заданий — иначе индекс не обновится вообще.

Как перестроить индекс полнотекстового поиска после сбоя

Признаки повреждения индекса: поиск находит удалённые объекты, не находит новые, падает с ошибкой или зависает на одной базе, тогда как в других всё работает.

Способ 1. Через стандартную функцию (без остановки работы)

  1. Откройте Все функции → Стандартные → Управление полнотекстовым поиском.
  2. Нажмите «Очистить индекс ».
  3. Нажмите «Обновить индекс» и дождитесь окончания.
  4. Убедитесь, что дата актуальности стала текущей.

Пока индекс строится, полнотекстовый поиск у пользователей не работает , а нагрузка на сервер растёт. Большую базу перестраивайте вечером.

Способ 2. Программно, фоновым заданием

Для больших баз удобнее запускать перестроение из обработки на сервере:

&НаСервере
Процедура ПерестроитьИндексНаСервере()
    ПолнотекстовыйПоиск.ОчиститьИндекс();
    ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Ложь);
    ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Ложь);
КонецПроцедуры

Второй вызов ОбновитьИндекс с первым параметром Истина выполняет слияние. Второй параметр Ложь означает «обработать всю очередь, а не порцию».

Способ 3. Удаление папки индекса

Когда индекс повреждён настолько, что очистка падает с ошибкой, удаляют саму папку 1Cv8FTxt.

Удалять папку можно только когда к базе никто не подключён. В клиент-серверном варианте завершите сеансы базы в консоли кластера и установите блокировку начала сеансов. Работа пользователей оборвётся — делайте это вне рабочего времени.

  1. Завершите все сеансы и заблокируйте вход в базу.
  2. Переименуйте 1Cv8FTxt в 1Cv8FTxt_old (переименование надёжнее удаления: есть откат).
  3. Снимите блокировку и запустите обновление индекса способом 1 или 2.
  4. После успешного построения удалите 1Cv8FTxt_old.
СпособКогдаРиски
Стандартная функцияИндекс работает, но выдаёт мусорПоиск недоступен на время построения
ПрограммноБольшая база, нужен контроль и журналНужны права администратора и навыки
Удаление папкиОчистка падает с ошибкойНужна остановка работы пользователей

Как ускорить полнотекстовый поиск и уменьшить индекс

Практические приёмы, которые дают заметный эффект:

  • 🎯 Исключите лишнее из индекса. Технические реквизиты, хранилища значений, длинные служебные строки в индексе не нужны. В своей конфигурации или в расширении поставьте им «Не использовать».
  • 🌙 Сливайте индекс каждую ночь. Без слияния индекс дробится на куски, поиск по ним идёт медленнее, а папка растёт.
  • 💾 Держите каталог на быстром диске. Индекс читается при каждом поиске. На SSD отклик в разы быстрее, чем на HDD.
  • 🛡️ Добавьте папку в исключения антивируса. Проверка файлов индекса на лету тормозит обновление и иногда блокирует файлы.
  • 📏 Следите за свободным местом. При полном перестроении нужен запас — примерно ещё один объём текущего индекса.
  • ⏱️ Не ставьте обновление чаще раза в минуту. На загруженной базе частые запуски конкурируют с проведением документов.

В конфигурациях на БСП есть извлечение текста из присоединённых файлов для поиска. Если пользователи прикрепляют много сканов и PDF, именно эта часть раздувает индекс. Отключите её, если поиск по содержимому файлов не нужен.

Диагностика: выберите симптом

Частые ошибки администраторов

Несколько ситуаций, на которых спотыкаются чаще всего:

  • ❌ Искать индекс в SQL. Его там нет. Если в СУБД база занимает 50 ГБ, а на сервере 1С папка базы ещё 15 ГБ — это нормально, это индекс и служебные файлы.
  • ❌ Чистить srvinfo целиком «для порядка». Вместе с индексами уйдут реестр кластера и настройки. Удалять можно только папку 1Cv8FTxt конкретной базы и только по процедуре выше.
  • ❌ Путать индекс с кэшем. Очистка кэша клиента (/ClearCache или удаление папок в %APPDATA%\1C\1cv8) на полнотекстовый поиск не влияет никак.
  • ❌ Держать базу без поиска после обновления платформы. При переходе на другую версию платформы индекс иногда перестраивается автоматически. Проверьте дату актуальности на следующий день после обновления.

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

Можно ли перенести индекс в другой каталог отдельно от базы?
В файловом варианте нет: папка 1Cv8FTxt всегда лежит в каталоге базы. В клиент-серверном индекс находится в рабочем каталоге кластера, который задаётся при установке службы сервера 1С.
Нужно ли включать папку 1Cv8FTxt в резервную копию?
Не обязательно. Индекс восстанавливается из данных базы. Копировать его имеет смысл, только если перестроение большой базы занимает часы и простой поиска критичен.
Почему индекс весит больше самой базы?
Чаще всего давно не выполнялось слияние или в индекс попадает текст присоединённых файлов. Запустите слияние, а если не поможет — очистите и обновите индекс.
Влияет ли полнотекстовый поиск на скорость проведения документов?
Сама запись документа только ставит его в очередь — это быстро. Нагрузку создаёт регламентное обновление индекса, поэтому его не стоит запускать слишком часто.
Работает ли полнотекстовый поиск в базе, опубликованной на веб-сервере?
Да. Поиск выполняется на стороне сервера 1С или в каталоге файловой базы, веб-клиент лишь передаёт запрос.