Папка 1Cv8FTxt и служебные данные: как устроено хранение полнотекстового индекса 1С
Содержание
Индекс полнотекстового поиска 1С хранится не в таблицах базы, а в отдельной папке 1Cv8FTxt. В файловом варианте она лежит рядом с файлом 1Cv8.1CD, в клиент-серверном — на сервере 1С, в каталоге информационной базы внутри srvinfo\reg_1541\<GUID базы>. В самой СУБД остаются только служебные данные: режим поиска, очередь изменённых объектов и признаки, какие реквизиты индексировать.
Отсюда частая путаница: администратор делает бэкап SQL-базы, разворачивает его на новом сервере, а поиск ничего не находит. Индекс в бэкап не попал — его надо построить заново. Поэтому полезно знать, где физически лежит каждая часть полнотекстового поиска и какую из них можно безопасно удалить или перестроить при сбое.
Файловая база: папка индекса рядом с 1Cv8.1CD
В файловом варианте всё просто. Откройте каталог информационной базы — тот, что указан в списке баз в окне запуска 1С. Внутри увидите:
- 📄
1Cv8.1CD— сам файл базы с данными; - 📁
1Cv8FTxt— индекс полнотекстового поиска; - 📄
1Cv8tmp.1CD— временный файл, появляется во время работы и при тестировании; - 📁 прочие служебные папки и файлы журналов.
Папка 1Cv8FTxt создаётся платформой автоматически, когда индекс строится первый раз. Внутри — набор файлов словаря и индекса. Открывать их вручную бессмысленно: формат внутренний, редактировать нечего.
Как быстро найти каталог базы
- Запустите 1С и выделите базу в списке.
- Внизу окна запуска показан путь вида
File="D:\Bases\Buh". - Перейдите в этот каталог в проводнике.
Если папки 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С:Предприятие — включение и управление
Стандартная функция платформы: Все функции → Стандартные → Управление полнотекстовым поиском. Пункт «Все функции» включается в параметрах главного меню (флажок «Отображать команду “Все функции”»).
В этом окне:
- включается и выключается полнотекстовый поиск в базе;
- видна дата актуальности индекса;
- есть кнопки обновления и очистки индекса;
- флажок разрешения слияния индекса.
В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) тот же механизм вынесен в Администрирование → Общие настройки, группа полнотекстового поиска. Там есть флажок использования поиска и ссылка на управление индексом.
Регламентные задания — когда обновлять
Индекс обновляется не мгновенно, а по расписанию. В типовых конфигурациях за это отвечают два регламентных задания:
| Задание | Что делает | Типичное расписание |
|---|---|---|
| Обновление индекса ППД | Добавляет в индекс записанные объекты из очереди | Каждые 1–5 минут в рабочее время |
| Слияние индекса ППД | Объединяет части индекса в одну, ускоряет поиск | Раз в сутки ночью |
Расписание меняется в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В клиент-серверной базе проверьте также, что в свойствах базы в консоли кластера не стоит блокировка регламентных заданий — иначе индекс не обновится вообще.
Как перестроить индекс полнотекстового поиска после сбоя
Признаки повреждения индекса: поиск находит удалённые объекты, не находит новые, падает с ошибкой или зависает на одной базе, тогда как в других всё работает.
Способ 1. Через стандартную функцию (без остановки работы)
- Откройте
Все функции → Стандартные → Управление полнотекстовым поиском. - Нажмите «Очистить индекс ».
- Нажмите «Обновить индекс» и дождитесь окончания.
- Убедитесь, что дата актуальности стала текущей.
Пока индекс строится, полнотекстовый поиск у пользователей не работает , а нагрузка на сервер растёт. Большую базу перестраивайте вечером.
Способ 2. Программно, фоновым заданием
Для больших баз удобнее запускать перестроение из обработки на сервере:
&НаСервере
Процедура ПерестроитьИндексНаСервере()
ПолнотекстовыйПоиск.ОчиститьИндекс();
ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Ложь);
ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Ложь);
КонецПроцедуры
Второй вызов ОбновитьИндекс с первым параметром Истина выполняет слияние. Второй параметр Ложь означает «обработать всю очередь, а не порцию».
Способ 3. Удаление папки индекса
Когда индекс повреждён настолько, что очистка падает с ошибкой, удаляют саму папку 1Cv8FTxt.
Удалять папку можно только когда к базе никто не подключён. В клиент-серверном варианте завершите сеансы базы в консоли кластера и установите блокировку начала сеансов. Работа пользователей оборвётся — делайте это вне рабочего времени.
- Завершите все сеансы и заблокируйте вход в базу.
- Переименуйте
1Cv8FTxtв1Cv8FTxt_old(переименование надёжнее удаления: есть откат). - Снимите блокировку и запустите обновление индекса способом 1 или 2.
- После успешного построения удалите
1Cv8FTxt_old.
| Способ | Когда | Риски |
|---|---|---|
| Стандартная функция | Индекс работает, но выдаёт мусор | Поиск недоступен на время построения |
| Программно | Большая база, нужен контроль и журнал | Нужны права администратора и навыки |
| Удаление папки | Очистка падает с ошибкой | Нужна остановка работы пользователей |
Как ускорить полнотекстовый поиск и уменьшить индекс
Практические приёмы, которые дают заметный эффект:
- 🎯 Исключите лишнее из индекса. Технические реквизиты, хранилища значений, длинные служебные строки в индексе не нужны. В своей конфигурации или в расширении поставьте им «Не использовать».
- 🌙 Сливайте индекс каждую ночь. Без слияния индекс дробится на куски, поиск по ним идёт медленнее, а папка растёт.
- 💾 Держите каталог на быстром диске. Индекс читается при каждом поиске. На SSD отклик в разы быстрее, чем на HDD.
- 🛡️ Добавьте папку в исключения антивируса. Проверка файлов индекса на лету тормозит обновление и иногда блокирует файлы.
- 📏 Следите за свободным местом. При полном перестроении нужен запас — примерно ещё один объём текущего индекса.
- ⏱️ Не ставьте обновление чаще раза в минуту. На загруженной базе частые запуски конкурируют с проведением документов.
В конфигурациях на БСП есть извлечение текста из присоединённых файлов для поиска. Если пользователи прикрепляют много сканов и PDF, именно эта часть раздувает индекс. Отключите её, если поиск по содержимому файлов не нужен.
Частые ошибки администраторов
Несколько ситуаций, на которых спотыкаются чаще всего:
- ❌ Искать индекс в SQL. Его там нет. Если в СУБД база занимает 50 ГБ, а на сервере 1С папка базы ещё 15 ГБ — это нормально, это индекс и служебные файлы.
- ❌ Чистить
srvinfoцеликом «для порядка». Вместе с индексами уйдут реестр кластера и настройки. Удалять можно только папку1Cv8FTxtконкретной базы и только по процедуре выше. - ❌ Путать индекс с кэшем. Очистка кэша клиента (
/ClearCacheили удаление папок в%APPDATA%\1C\1cv8) на полнотекстовый поиск не влияет никак. - ❌ Держать базу без поиска после обновления платформы. При переходе на другую версию платформы индекс иногда перестраивается автоматически. Проверьте дату актуальности на следующий день после обновления.