Индекс полнотекстового поиска 1С 8.3: что настраивают в Конфигураторе, а что в режиме Предприятия

· 9 мин

Содержание

Заполнение индекса поиска в 1С 8.3 делится на две части. В Конфигураторе вы отмечаете, какие объекты и реквизиты попадают в полнотекстовый поиск: свойство Полнотекстовый поиск = Использовать. А сам индекс заполняется уже в режиме 1С:Предприятие: кнопкой «Обновить индекс» в форме управления поиском, регламентным заданием или методом ПолнотекстовыйПоиск.ОбновитьИндекс().

Отсюда частая путаница. Человек ищет в Конфигураторе кнопку «Заполнить индекс» и не находит её: там такой команды нет. Конфигуратор задаёт состав индекса, а наполняет его платформа во время работы базы.

Зачем базе индекс полнотекстового поиска

Полнотекстовый поиск — это общий поиск по всей базе и поиск в списках там, где конфигурация его использует. Вы вводите «Ромашка 2024» или кусок ИНН и получаете все документы и элементы справочников, где встречаются эти слова. Без индекса так искать нельзя: платформе пришлось бы читать каждую таблицу целиком.

Индекс — служебная «картотека» слов. В нём лежит, какое слово в каком объекте и реквизите встретилось. Сами данные учёта в индекс не копируются, поэтому его можно удалить и построить заново без потерь.

Что даёт индекс на практике:

  • 🔎 поиск по словам из любых включённых в индекс реквизитов;
  • 📄 поиск в комментариях документов и в наименованиях, а не только по коду и номеру;
  • 🗂 поиск по тексту присоединённых файлов, если конфигурация извлекает из них текст;
  • ⚡ быстрый ответ даже на базе в десятки гигабайт.

Чего индекс не делает: он не ускоряет отчёты, проведение и обычные отборы списка. Если медленно работает «Оборотно-сальдовая ведомость», индекс тут ни при чём.

Подготовка: где хранится индекс и сколько ему нужно места

Индекс лежит рядом с базой, а не внутри её таблиц.

Вариант базыГде лежит индекс
ФайловаяПапка 1Cv8FTxt в каталоге базы, рядом с 1Cv8.1CD
Клиент-сервернаяКаталог кластера на рабочем сервере: srvinfo\reg_1541\<GUID базы>\1Cv8FTxt

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

Перед первым заполнением проверьте три вещи:

  1. Место на диске. Индекс большой базы занимает гигабайты. Ориентир — от 10 до 30% размера данных, но всё зависит от числа текстовых реквизитов. Оставьте запас хотя бы в размер самой базы.
  2. Антивирус. Добавьте папку 1Cv8FTxt в исключения. Иначе антивирус проверяет каждый файл индекса на запись, и обновление идёт в разы медленнее или обрывается.
  3. Права. Для клиент-серверной базы у учётной записи службы сервера 1С должны быть права на запись в каталог кластера. Обычно это выполнено сразу после установки, но ломается, если каталог перенесли на другой диск вручную.

Сетевой диск для файловой базы — плохое место для индекса. Запись тысяч мелких файлов по сети идёт медленно, а обрыв связи часто оставляет индекс повреждённым.

Настройка полнотекстового поиска в Конфигураторе

В Конфигураторе решается, что попадёт в индекс. Свойство есть у объектов метаданных и у их реквизитов.

Как включить поиск для объекта

  1. Откройте Конфигуратор, меню Конфигурация → Открыть конфигурацию.
  2. В дереве метаданных найдите справочник или документ, например Справочники → Контрагенты.
  3. Откройте палитру свойств объекта: правая кнопка мыши → Свойства или клавиша Alt+Enter.
  4. Найдите свойство Полнотекстовый поиск и выберите Использовать.
  5. Раскройте реквизиты объекта и проверьте то же свойство у каждого реквизита, по которому нужно искать.

Если у объекта стоит Использовать, а у реквизита Не использовать, текст этого реквизита в индекс не попадёт. И наоборот: включённый реквизит у выключенного объекта не индексируется.

Что не надо включать

  • ❌ Числовые суммы и даты: искать по ним полнотекстовым поиском бессмысленно, а индекс растёт.
  • ❌ Служебные реквизиты с GUID и хешами.
  • ❌ Табличные части с тысячами строк на документ, если по ним никто не ищет.

Типовая конфигурация на поддержке

В типовых БП 3.0, ЗУП 3.1 и УТ 11 нужные объекты уже размечены разработчиком. Менять свойство у объекта на поддержке можно только после включения возможности изменения, а это усложняет каждое обновление.

Не снимайте конфигурацию с поддержки ради одного свойства поиска. Если правка всё же нужна, сделайте её в расширении: в расширении можно заимствовать объект и изменить у него свойство полнотекстового поиска. После правки сохраните изменения и обновите конфигурацию базы данных (F7).

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

Как заполнить индекс поиска: три способа

После настройки в Конфигураторе индекс надо построить. Его не заполняет сам Конфигуратор — запустите базу в режиме 1С:Предприятие.

СпособКогда подходитНа что обратить внимание
Форма управления в БСПТиповые БП, ЗУП, УТ, КА, ERPНужны права администратора
Стандартная функция платформыЛюбая конфигурация, в том числе самописнаяДоступна через «Все функции»
Встроенный языкОбработки, регламентные задания, автоматизацияНужен доступ к Конфигуратору или внешняя обработка

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

В конфигурациях на БСП (Библиотеке стандартных подсистем):

  1. Откройте Администрирование → Общие настройки.
  2. Найдите группу про полнотекстовый поиск и включите флажок использования поиска.
  3. Перейдите по ссылке настройки поиска рядом с флажком.
  4. В открывшейся форме нажмите «Обновить индекс».

В той же форме видно дату последнего обновления и актуален ли индекс. Там же есть «Очистить индекс » — она нужна при сбоях, об этом ниже.

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

Если конфигурация самописная или в ней нет такой настройки:

  1. Включите пункт меню «Все функции»: Сервис и настройки (кнопка с шестерёнкой) → Параметры → Отображать команду «Все функции».
  2. Откройте Все функции → Стандартные → Управление полнотекстовым поиском.
  3. Убедитесь, что полнотекстовый поиск разрешён, и нажмите «Обновить индекс».

Здесь же есть «Очистить индекс» и флажок, разрешающий слияние индексов.

Способ 3. Кодом на встроенном языке

Пригодится для внешней обработки или своего регламентного задания. Код выполняется на сервере:

&НаСервере
Процедура ОбновитьИндексНаСервере()

    Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска()
        <> РежимПолнотекстовогоПоиска.Разрешить Тогда
        ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(
            РежимПолнотекстовогоПоиска.Разрешить);
    КонецЕсли;

    // Первый параметр - слияние индексов, второй - обработка порциями
    ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Истина);

    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Индекс актуален: " + ?(ПолнотекстовыйПоиск.ИндексАктуален(), "да", "нет")
        + ", дата актуальности: " + Формат(ПолнотекстовыйПоиск.ДатаАктуальности(), "ДЛФ=DT");
    Сообщение.Сообщить();

КонецПроцедуры

Параметр «порциями» = Истина обрабатывает данные частями. Один вызов может не проиндексировать всё. Поэтому в задании вызов повторяют по расписанию, пока ИндексАктуален() не вернёт Истина.

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

Автоматическое обновление индекса по расписанию

Индекс устаревает с каждым новым документом. Новый контрагент не найдётся в поиске, пока индекс не обновят. Поэтому обновление ставят на расписание.

В БСП для этого есть два регламентных задания:

  • 🔄 обновление индекса — дописывает изменения за последний период, работает часто;
  • 🧩 слияние индексов — объединяет накопившиеся мелкие части в основной индекс, работает реже.

Где их найти: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В списке отфильтруйте по слову «индекс».

Ориентиры расписания:

ЗаданиеТипичная частотаПочему так
Обновление индексаРаз в 1–15 минут в рабочее времяНовые записи находятся почти сразу
Слияние индексовРаз в сутки ночьюСлияние тяжёлое, идёт дольше и грузит диск

Зачем вообще слияние. При каждом обновлении платформа дописывает маленький дополнительный индекс. Через неделю их сотни, и поиск начинает спотыкаться: ему приходится опрашивать каждую часть. Слияние собирает всё обратно в один основной индекс.

Где регламентные задания не запустятся сами

  • Клиент-серверная база . Задания выполняет кластер. Проверьте, что в свойствах информационной базы в консоли администрирования не стоит флажок блокировки регламентных заданий.
  • Файловая база. Отдельного сервера нет. Задания выполняются, только пока в базу зашёл пользователь, и обычно в его сеансе. Если базу никто не открывает ночью, слияние ночью не случится. Для файловых баз удобнее ставить слияние на обеденное время.
Проверка настройки автообновления
Выполнено: 0 / 6

Индекс не обновляется или поиск не находит: диагностика

Начинайте с формы управления полнотекстовым поиском: дата актуальности сразу покажет, работает ли обновление. Дальше — по симптомам.

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

Полная перестройка индекса через удаление папки

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

Перед удалением папки все пользователи должны выйти из базы. Для клиент-серверной базы может понадобиться остановить службу сервера 1С: тогда оборвутся сеансы всех баз кластера, а не только этой. Делайте это в нерабочее время и предупредите пользователей заранее.

Порядок для файловой базы:

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

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

Как ускорить заполнение и поиск

  • ⚙️ Держите индекс на SSD, а не на медленном HDD или сетевой папке.
  • ✂️ Отключите индексирование реквизитов, по которым не ищут: индекс меньше — обновление быстрее.
  • 🌙 Тяжёлое слияние — только ночью или в выходные.
  • 📎 Если в базе тысячи присоединённых файлов, первое извлечение текста из них займёт много времени. Его лучше запускать отдельно от первого заполнения индекса.

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

  • Ищут команду заполнения в Конфигураторе. Её там нет: Конфигуратор только размечает объекты, индекс строится в режиме Предприятия.
  • Включают свойство у объекта и забывают про реквизиты. В итоге поиск находит документ по номеру, но не по комментарию.
  • Отключают слияние «чтобы не грузить сервер». Через месяц поиск тормозит сильнее, чем грузило бы слияние.
  • Копируют файловую базу вместе с индексом во время работы. Скопированный индекс часто оказывается битым. Для резервной копии индекс вообще не нужен: его можно построить заново.
  • Выключают полнотекстовый поиск, чтобы ускорить базу. Работа с документами от этого почти не ускорится, а пользователи потеряют поиск.

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

Нужно ли переносить папку 1Cv8FTxt при переносе базы на другой компьютер?
Нет. Достаточно перенести данные базы или выгрузку .dt. На новом месте разрешите полнотекстовый поиск и обновите индекс — он построится заново.
Попадает ли индекс в выгрузку .dt?
Нет, выгрузка информационной базы содержит данные, а не индекс полнотекстового поиска. После загрузки .dt индекс придётся построить заново.
Можно ли пользоваться базой во время заполнения индекса?
Да. Обновление индекса не требует монопольного режима, пользователи продолжают работать. Поиск просто не найдёт записи, которые ещё не проиндексированы.
Почему поиск находит «Ромашку», но не находит «Ромашк»?
Полнотекстовый поиск работает по словам и их формам. Для поиска по началу слова добавьте звёздочку: Ромашк*.
Кто может обновить или очистить индекс?
Пользователь с административными правами в базе. Обычному бухгалтеру команды управления полнотекстовым поиском недоступны, а регламентное задание работает без его участия.