Нужен ли полнотекстовый поиск в 1С:УПП и как бороться с разрастанием индекса до гигантских размеров?

Программист 1С v8.3 (Обычные формы) Промышленность, строительство и АПК
← На главную

В процессе эксплуатации крупных информационных баз на платформе 1С, таких как Управление производственным предприятием (УПП), администраторы и разработчики часто сталкиваются с проблемой стремительного роста папки полнотекстового поиска (ПП). Когда временный индекс начинает занимать 6 ГБ и более, возникает закономерный вопрос: насколько этот функционал полезен в конфигурации, которая не базируется на Библиотеке стандартных подсистем (БСП) и использует преимущественно обычные формы?

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

Архитектурные отличия: обычные формы против управляемых

Разберем фундаментальное различие, которое часто вводит в заблуждение разработчиков. В современных конфигурациях на управляемых формах (ERP, КА 2.4, БП 3.0) механизм полнотекстового поиска глубоко интегрирован в динамические списки. При вводе строки в поле поиска система задействует индекс ПП, что позволяет мгновенно находить данные в огромных таблицах.

Проанализируем ситуацию в УПП (обычные формы). Здесь механизм полнотекстового поиска реализован как отдельный, изолированный инструмент. Рассмотрим особенности его работы в данном контексте:

  1. Отсутствие интеграции в списки: При использовании стандартного поиска через Ctrl + F в журналах документов или справочниках, система выполняет обычный SQL-запрос к базе данных. Полнотекстовый индекс при этом не используется.
  2. Отдельное окно поиска: Чтобы воспользоваться преимуществами ПП, пользователь должен специально открыть окно «Полнотекстовый поиск» (обычно через меню «Сервис»), ввести запрос и получить список ссылок.
  3. Рутинная работа: Для большинства бухгалтеров и менеджеров такой сценарий работы неудобен. Им привычнее искать данные непосредственно в открытом списке документов или справочнике номенклатуры.

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

Почему индекс ПП разрастается до огромных размеров?

Если вы обнаружили, что папка индекса (находящаяся в каталоге сервера 1С) занимает десятки гигабайт, необходимо разобраться в процедуре индексации. Рассмотрим структуру индекса, которая состоит из двух частей:

  1. Основной индекс: Оптимизированная структура, предназначенная для быстрого поиска. Обновляется медленно и требует значительных ресурсов.
  2. Дополнительный индекс: Сюда попадают все изменения данных, произошедшие с момента последнего обновления основного индекса. Он растет очень быстро.

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

Рассмотрим пример правильной настройки регламентных процедур:

Если слияние не проводится, временные файлы (дополнительный индекс) будут расти бесконтрольно, пока не исчерпают свободное место на диске, что приведет к остановке сервера 1С.

Нагрузка на сервер и дисковую подсистему

Проанализируем ситуацию с точки зрения системного администрирования. Процесс индексации — это интенсивная операция чтения и записи. В УПП, где количество документов (например, «Реализация товаров и услуг» или «Заказ покупателя») может исчисляться миллионами, а количество строк в них — тысячами, нагрузка становится критической.

В моменты обновления индекса сервер 1С активно нагружает процессор для морфологического анализа текста и дисковую подсистему для записи индексных файлов. В крупных базах это может приводить к микро-фризам (зависаниям) у пользователей в момент записи документов, так как система фиксирует изменения для последующей индексации.

Методы оптимизации: частичное использование ПП

Если вы не хотите полностью отказываться от поиска (например, если менеджерам нужно искать номенклатуру по длинным описаниям), мы можем оптимизировать состав индекса. Разберем, как это сделать по шагам:

  1. Откройте конфигуратор вашей базы УПП.
  2. Найдите объекты, которые создают основной объем данных, но поиск по которым не требуется (например, регистры сведений, вспомогательные документы, технические справочники).
  3. В свойствах каждого такого объекта найдите флаг ИспользоватьПолнотекстовыйПоиск.
  4. Установите значение в Ложь (или снимите галочку).

Важный совет: В типовой УПП индексация включена почти для всех объектов «по умолчанию». Если оставить ее только для справочников Номенклатура, Контрагенты и ДоговорыКонтрагентов, размер индекса сократится в 10–20 раз, а нагрузка на сервер практически исчезнет.

Поиск по артикулам и специфическим кодам

Выясним еще одну особенность: ПП в 1С использует морфологический поиск. Он отлично находит слово «кабель» в разных падежах, но пасует перед сложными артикулами со спецсимволами, такими как КБ-00045/90-ВТ. Механизм может разбивать такой код на части или игнорировать его из-за разделителей.

В УПП поиск чаще всего ведется по строгому соответствию артикула или кода. В таких случаях стандартный поиск 1С через ПОДОБНО (LIKE в SQL) в обычных формах работает гораздо надежнее и точнее, чем «умный» полнотекстовый поиск.

Программное управление полнотекстовым поиском

Для управления состоянием ПП из кода (например, в консоли заданий или обработке) используются методы глобального контекста. Рассмотрим примеры кода для работы с полнотекстовым поиском:

Проверим текущее состояние полнотекстового поиска:


Если ПолнотекстовыйПоиск.ПолучитьРежимИспользования() = РежимПолнотекстовогоПоиска.Использовать Тогда
    Сообщить("Полнотекстовый поиск включен");
КонецЕсли;

Если вы решили полностью отключить этот механизм, чтобы освободить ресурсы, выполните следующую команду:


ПолнотекстовыйПоиск.УстановитьРежимИспользования(РежимПолнотекстовогоПоиска.НеИспользовать);

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

Резюме и рекомендации

Подведем итог нашего анализа целесообразности использования полнотекстового поиска в 1С:УПП:

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

← На главную