Полнотекстовый поиск тормозит базу: выключаем, чистим индекс и настраиваем обновление

· 9 мин

Содержание

Чтобы снять полнотекстовый поиск в 1С 8.3, в типовой конфигурации откройте Администрирование → Общие настройки и уберите флажок полнотекстового поиска в одноимённой группе. Если такого пункта нет, тот же переключатель есть в стандартной форме платформы Все функции → Стандартные → Управление полнотекстовым поиском.

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

Сначала убедитесь, что тормозит именно поиск

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

Признаки, что виноват индекс:

  • 🐢 база «подвисает» волнами, примерно с одним интервалом (обычно это расписание регламентного задания);
  • 💾 папка индекса весит гигабайты и быстро растёт;
  • 🔄 в списке фоновых заданий постоянно висит обновление индекса полнотекстового поиска ;
  • 📎 в базе много присоединённых файлов, и включено извлечение текста из них;
  • 🔍 строка поиска по всем данным отвечает десятки секунд или выдаёт ошибку.

Где проверить:

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

Где лежит индекс:

Режим базыРасположение индекса
ФайловаяВ каталоге базы рядом с 1Cv8.1CD, папка 1Cv8FTxt (в новых версиях платформы — 1Cv8FTxt2)
Клиент-сервернаяНа сервере 1С в каталоге кластера reg_1541, в подпапке с идентификатором базы, папка с тем же именем

Размер папок индекса на сервере Windows быстро считает PowerShell. Путь к каталогу кластера подставьте свой:

Get-ChildItem "C:\Program Files\1cv8\srvinfo\reg_1541" -Directory -Recurse -Filter "1Cv8FTxt*" |
  ForEach-Object { "{0}  {1:N1} ГБ" -f $_.FullName, ((Get-ChildItem $_.FullName -Recurse -File | Measure-Object Length -Sum).Sum / 1GB) }

Если индекс занимает 5–10 ГБ при базе в 15 ГБ, а задание обновления идёт по 20–40 минут, причина найдена. Если папка маленькая и задания отрабатывают за секунды, отключение поиска вряд ли ускорит работу.

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

Как отключить полнотекстовый поиск в режиме Предприятие

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

В типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP)

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

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

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

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

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

Отключение не удаляет индекс автоматически. Файлы остаются на диске, пока вы не нажмёте очистку индекса. Если цель — освободить место, сделайте оба шага.

Отключение поиска кодом, из консоли и в Конфигураторе

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

Внешняя обработка или консоль кода

Режимом поиска управляет глобальный объект ПолнотекстовыйПоиск. Код выполняется на сервере в привилегированном режиме или под администратором:

&НаСервере
Процедура ОтключитьППДНаСервере()
    Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Разрешить Тогда
        ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Запретить);
    КонецЕсли;
    ПолнотекстовыйПоиск.ОчиститьИндекс();
    Сообщить("Полнотекстовый поиск отключён, индекс очищен");
КонецПроцедуры

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

Консоль кластера: временно остановить все задания

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

Это остановит ВСЕ регламентные задания базы: обмены, загрузку курсов, проверку почты, резервное копирование средствами 1С. Используйте блокировку только как временную меру на время разбора и обязательно снимите её потом.

Конфигуратор: исключить объекты из индекса

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

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

Настройка индексации вместо полного отключения

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

Индекс в 1С обслуживают два процесса:

ПроцессЧто делаетНагрузкаРекомендуемое время
Обновление индексаДобавляет в индекс изменённые данные порциямиНебольшая, но частаяРаз в 30–60 минут или реже
Слияние индексаСводит накопленные части индекса в основнойВысокая, долгаяНочью, раз в сутки
Извлечение текстаЧитает содержимое присоединённых файловВысокая на больших файлахНочью или выключить

Как поменять расписание:

  1. Откройте Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.
  2. Откройте задание обновления индекса полнотекстового поиска.
  3. Нажмите ссылку расписания и задайте интервал. Например, повтор каждые 3600 секунд с 7:00 до 21:00.
  4. Для задания слияния поставьте ежедневный запуск в 2:00.
  5. Для извлечения текста — окно с 1:00 до 5:00 или снимите флажок «Включено».

Практический ориентир: при 30–50 активных пользователях и обновлении раз в 10 минут фоновая нагрузка заметна. Интервал в час почти всегда снимает жалобы, а свежие документы попадают в поиск с задержкой не больше часа.

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

Очистка и полная перестройка индекса

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

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

  1. Выберите время без пользователей: обновление индекса с нуля на базе в 20–30 ГБ занимает от получаса до нескольких часов.
  2. Откройте Все функции → Стандартные → Управление полнотекстовым поиском или форму настройки поиска из Администрирование → Общие настройки.
  3. Нажмите очистку индекса.
  4. Нажмите обновление индекса и дождитесь окончания.
  5. Выполните слияние индекса, если команда доступна отдельно.
  6. Проверьте дату актуальности индекса — она должна стать текущей.

Если форма не открывается или очистка падает с ошибкой, индекс удаляют вручную:

  1. Предупредите пользователей и завершите все сеансы базы.
  2. Для клиент-серверной базы остановите службу «Агент сервера 1С:Предприятия».
  3. Удалите или переместите в сторону папку 1Cv8FTxt (1Cv8FTxt2) этой базы.
  4. Запустите службу, зайдите в базу и постройте индекс заново.

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

В каталоге reg_1541 подпапки названы идентификаторами баз. Нужную найдёте по свойствам базы в консоли кластера или по дате изменения файлов. Сами данные базы хранятся в СУБД, а не в этой папке, поэтому удаление индекса их не затрагивает.

Антивирус, сеть и диск: что усиливает тормоза

Индекс — это тысячи файлов, которые постоянно переписываются. Если рядом работает антивирус в режиме постоянной проверки, каждое обновление индекса превращается в проверку сотен файлов.

Что добавить в исключения антивируса на сервере 1С:

  • 📁 каталог кластера reg_1541 целиком (там индекс и журнал регистрации);
  • 📁 каталог файловой базы, если база файловая;
  • ⚙️ процессы rphost.exe, rmngr.exe, ragent.exe;
  • 📁 временный каталог пользователя, под которым работает служба 1С.

Для файловых баз отдельная история — сетевой диск. Если база лежит на общей папке, индекс тоже лежит там, и каждое его обновление гоняет данные по сети. На 3–5 пользователях это терпимо, на 10–15 уже заметно.

Что помогает:

  1. Держите файловую базу на SSD сервера, а не на NAS с медленными дисками.
  2. Запускайте обновление индекса на том компьютере, где лежит база, а не у пользователя по сети.
  3. Если пользователей больше 10–15, присмотритесь к переводу базы в клиент-серверный вариант.

Проверьте и свободное место. Во время слияния индекс временно занимает больше места, чем обычно. При заполненном на 95% диске слияние может завершиться ошибкой и оставить индекс в неполном виде.

Чем заменить полнотекстовый поиск

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

ИнструментКак вызватьКогда подходит
Поиск в спискеСтрока поиска над списком или Ctrl+FНайти контрагента, номенклатуру, документ по номеру
Отмена поиска в спискеКнопка-крестик в строке поиска или Ctrl+QВернуть полный список
Отбор по колонкеПравой кнопкой по значению ячейкиВсе документы одного контрагента
Расширенный поискAlt+F в спискеПоиск по конкретной колонке с условием
Отчёты с отборомУниверсальный отчёт и типовые отчётыВыборки по реквизитам за период

Отдельный случай — когда «снять поиск» означает просто убрать фильтр в списке. Если список показывает два документа вместо сотни, значит, в нём остался поиск или отбор. Нажмите крестик в строке поиска или Ctrl+Q, а отбор снимите в настройках списка.

Внешние поисковые системы (например, отдельный поисковый движок с выгрузкой данных из 1С) встречаются в крупных внедрениях. Это доработка под заказ: требуется обмен данными, отдельный сервер и поддержка. Для бухгалтерии на 20–50 человек проще настроить расписание стандартного индекса.

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

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