Индекс полнотекстового поиска 1С 8.3: что настраивают в Конфигураторе, а что в режиме Предприятия
Содержание
Заполнение индекса поиска в 1С 8.3 делится на две части. В Конфигураторе вы отмечаете, какие объекты и реквизиты попадают в полнотекстовый поиск: свойство Полнотекстовый поиск = Использовать. А сам индекс заполняется уже в режиме 1С:Предприятие: кнопкой «Обновить индекс» в форме управления поиском, регламентным заданием или методом ПолнотекстовыйПоиск.ОбновитьИндекс().
Отсюда частая путаница. Человек ищет в Конфигураторе кнопку «Заполнить индекс» и не находит её: там такой команды нет. Конфигуратор задаёт состав индекса, а наполняет его платформа во время работы базы.
Зачем базе индекс полнотекстового поиска
Полнотекстовый поиск — это общий поиск по всей базе и поиск в списках там, где конфигурация его использует. Вы вводите «Ромашка 2024» или кусок ИНН и получаете все документы и элементы справочников, где встречаются эти слова. Без индекса так искать нельзя: платформе пришлось бы читать каждую таблицу целиком.
Индекс — служебная «картотека» слов. В нём лежит, какое слово в каком объекте и реквизите встретилось. Сами данные учёта в индекс не копируются, поэтому его можно удалить и построить заново без потерь.
Что даёт индекс на практике:
- 🔎 поиск по словам из любых включённых в индекс реквизитов;
- 📄 поиск в комментариях документов и в наименованиях, а не только по коду и номеру;
- 🗂 поиск по тексту присоединённых файлов, если конфигурация извлекает из них текст;
- ⚡ быстрый ответ даже на базе в десятки гигабайт.
Чего индекс не делает: он не ускоряет отчёты, проведение и обычные отборы списка. Если медленно работает «Оборотно-сальдовая ведомость», индекс тут ни при чём.
Подготовка: где хранится индекс и сколько ему нужно места
Индекс лежит рядом с базой, а не внутри её таблиц.
| Вариант базы | Где лежит индекс |
|---|---|
| Файловая | Папка 1Cv8FTxt в каталоге базы, рядом с 1Cv8.1CD |
| Клиент-серверная | Каталог кластера на рабочем сервере: srvinfo\reg_1541\<GUID базы>\1Cv8FTxt |
Путь для клиент-серверной базы указан для порта по умолчанию 1541. Если кластер заведён на другом порту, в имени папки reg_ будет он.
Перед первым заполнением проверьте три вещи:
- Место на диске. Индекс большой базы занимает гигабайты. Ориентир — от 10 до 30% размера данных, но всё зависит от числа текстовых реквизитов. Оставьте запас хотя бы в размер самой базы.
- Антивирус. Добавьте папку
1Cv8FTxtв исключения. Иначе антивирус проверяет каждый файл индекса на запись, и обновление идёт в разы медленнее или обрывается. - Права. Для клиент-серверной базы у учётной записи службы сервера 1С должны быть права на запись в каталог кластера. Обычно это выполнено сразу после установки, но ломается, если каталог перенесли на другой диск вручную.
Сетевой диск для файловой базы — плохое место для индекса. Запись тысяч мелких файлов по сети идёт медленно, а обрыв связи часто оставляет индекс повреждённым.
Настройка полнотекстового поиска в Конфигураторе
В Конфигураторе решается, что попадёт в индекс. Свойство есть у объектов метаданных и у их реквизитов.
Как включить поиск для объекта
- Откройте Конфигуратор, меню
Конфигурация → Открыть конфигурацию. - В дереве метаданных найдите справочник или документ, например
Справочники → Контрагенты. - Откройте палитру свойств объекта: правая кнопка мыши →
Свойстваили клавишаAlt+Enter. - Найдите свойство
Полнотекстовый поиски выберитеИспользовать. - Раскройте реквизиты объекта и проверьте то же свойство у каждого реквизита, по которому нужно искать.
Если у объекта стоит Использовать, а у реквизита Не использовать, текст этого реквизита в индекс не попадёт. И наоборот: включённый реквизит у выключенного объекта не индексируется.
Что не надо включать
- ❌ Числовые суммы и даты: искать по ним полнотекстовым поиском бессмысленно, а индекс растёт.
- ❌ Служебные реквизиты с GUID и хешами.
- ❌ Табличные части с тысячами строк на документ, если по ним никто не ищет.
Типовая конфигурация на поддержке
В типовых БП 3.0, ЗУП 3.1 и УТ 11 нужные объекты уже размечены разработчиком. Менять свойство у объекта на поддержке можно только после включения возможности изменения, а это усложняет каждое обновление.
Не снимайте конфигурацию с поддержки ради одного свойства поиска. Если правка всё же нужна, сделайте её в расширении: в расширении можно заимствовать объект и изменить у него свойство полнотекстового поиска. После правки сохраните изменения и обновите конфигурацию базы данных (F7).
Обновление конфигурации базы данных с изменением структуры требует, чтобы другие пользователи вышли из базы. Планируйте такие правки на нерабочее время.
Как заполнить индекс поиска: три способа
После настройки в Конфигураторе индекс надо построить. Его не заполняет сам Конфигуратор — запустите базу в режиме 1С:Предприятие.
| Способ | Когда подходит | На что обратить внимание |
|---|---|---|
| Форма управления в БСП | Типовые БП, ЗУП, УТ, КА, ERP | Нужны права администратора |
| Стандартная функция платформы | Любая конфигурация, в том числе самописная | Доступна через «Все функции» |
| Встроенный язык | Обработки, регламентные задания, автоматизация | Нужен доступ к Конфигуратору или внешняя обработка |
Способ 1. Через настройки типовой конфигурации
В конфигурациях на БСП (Библиотеке стандартных подсистем):
- Откройте
Администрирование → Общие настройки. - Найдите группу про полнотекстовый поиск и включите флажок использования поиска.
- Перейдите по ссылке настройки поиска рядом с флажком.
- В открывшейся форме нажмите «Обновить индекс».
В той же форме видно дату последнего обновления и актуален ли индекс. Там же есть «Очистить индекс » — она нужна при сбоях, об этом ниже.
Способ 2. Через стандартную функцию платформы
Если конфигурация самописная или в ней нет такой настройки:
- Включите пункт меню «Все функции»:
Сервис и настройки (кнопка с шестерёнкой) → Параметры → Отображать команду «Все функции». - Откройте
Все функции → Стандартные → Управление полнотекстовым поиском. - Убедитесь, что полнотекстовый поиск разрешён, и нажмите «Обновить индекс».
Здесь же есть «Очистить индекс» и флажок, разрешающий слияние индексов.
Способ 3. Кодом на встроенном языке
Пригодится для внешней обработки или своего регламентного задания. Код выполняется на сервере:
&НаСервере
Процедура ОбновитьИндексНаСервере()
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска()
<> РежимПолнотекстовогоПоиска.Разрешить Тогда
ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(
РежимПолнотекстовогоПоиска.Разрешить);
КонецЕсли;
// Первый параметр - слияние индексов, второй - обработка порциями
ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Истина);
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Индекс актуален: " + ?(ПолнотекстовыйПоиск.ИндексАктуален(), "да", "нет")
+ ", дата актуальности: " + Формат(ПолнотекстовыйПоиск.ДатаАктуальности(), "ДЛФ=DT");
Сообщение.Сообщить();
КонецПроцедуры
Параметр «порциями» = Истина обрабатывает данные частями. Один вызов может не проиндексировать всё. Поэтому в задании вызов повторяют по расписанию, пока ИндексАктуален() не вернёт Истина.
Первое заполнение большой базы может идти часами. Запускайте его вечером или в выходной, когда пользователи не создают тысячи новых записей.
Автоматическое обновление индекса по расписанию
Индекс устаревает с каждым новым документом. Новый контрагент не найдётся в поиске, пока индекс не обновят. Поэтому обновление ставят на расписание.
В БСП для этого есть два регламентных задания:
- 🔄 обновление индекса — дописывает изменения за последний период, работает часто;
- 🧩 слияние индексов — объединяет накопившиеся мелкие части в основной индекс, работает реже.
Где их найти: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В списке отфильтруйте по слову «индекс».
Ориентиры расписания:
| Задание | Типичная частота | Почему так |
|---|---|---|
| Обновление индекса | Раз в 1–15 минут в рабочее время | Новые записи находятся почти сразу |
| Слияние индексов | Раз в сутки ночью | Слияние тяжёлое, идёт дольше и грузит диск |
Зачем вообще слияние. При каждом обновлении платформа дописывает маленький дополнительный индекс. Через неделю их сотни, и поиск начинает спотыкаться: ему приходится опрашивать каждую часть. Слияние собирает всё обратно в один основной индекс.
Где регламентные задания не запустятся сами
- Клиент-серверная база . Задания выполняет кластер. Проверьте, что в свойствах информационной базы в консоли администрирования не стоит флажок блокировки регламентных заданий.
- Файловая база. Отдельного сервера нет. Задания выполняются, только пока в базу зашёл пользователь, и обычно в его сеансе. Если базу никто не открывает ночью, слияние ночью не случится. Для файловых баз удобнее ставить слияние на обеденное время.
Индекс не обновляется или поиск не находит: диагностика
Начинайте с формы управления полнотекстовым поиском: дата актуальности сразу покажет, работает ли обновление. Дальше — по симптомам.
Полная перестройка индекса через удаление папки
Это крайняя мера, когда форма управления выдаёт ошибку и очистить индекс штатно не получается.
Перед удалением папки все пользователи должны выйти из базы. Для клиент-серверной базы может понадобиться остановить службу сервера 1С: тогда оборвутся сеансы всех баз кластера, а не только этой. Делайте это в нерабочее время и предупредите пользователей заранее.
Порядок для файловой базы:
- Убедитесь, что в базе никого нет.
- Переименуйте папку
1Cv8FTxtв1Cv8FTxt_old— не удаляйте сразу. - Запустите базу в режиме 1С:Предприятие и выполните «Обновить индекс».
- Проверьте, что поиск находит записи. После этого старую папку можно удалить.
Для клиент-серверной базы порядок тот же, только папка лежит в каталоге кластера на рабочем сервере. Если кластер из нескольких рабочих серверов, проверьте каталог на каждом.
Как ускорить заполнение и поиск
- ⚙️ Держите индекс на SSD, а не на медленном HDD или сетевой папке.
- ✂️ Отключите индексирование реквизитов, по которым не ищут: индекс меньше — обновление быстрее.
- 🌙 Тяжёлое слияние — только ночью или в выходные.
- 📎 Если в базе тысячи присоединённых файлов, первое извлечение текста из них займёт много времени. Его лучше запускать отдельно от первого заполнения индекса.
Частые ошибки при работе с индексом
- Ищут команду заполнения в Конфигураторе. Её там нет: Конфигуратор только размечает объекты, индекс строится в режиме Предприятия.
- Включают свойство у объекта и забывают про реквизиты. В итоге поиск находит документ по номеру, но не по комментарию.
- Отключают слияние «чтобы не грузить сервер». Через месяц поиск тормозит сильнее, чем грузило бы слияние.
- Копируют файловую базу вместе с индексом во время работы. Скопированный индекс часто оказывается битым. Для резервной копии индекс вообще не нужен: его можно построить заново.
- Выключают полнотекстовый поиск, чтобы ускорить базу. Работа с документами от этого почти не ускорится, а пользователи потеряют поиск.
Частые вопросы
Нужно ли переносить папку 1Cv8FTxt при переносе базы на другой компьютер?
Попадает ли индекс в выгрузку .dt?
Можно ли пользоваться базой во время заполнения индекса?
Почему поиск находит «Ромашку», но не находит «Ромашк»?
Ромашк*.