В процессе эксплуатации крупных информационных баз на платформе 1С, таких как Управление производственным предприятием (УПП), администраторы и разработчики часто сталкиваются с проблемой стремительного роста папки полнотекстового поиска (ПП). Когда временный индекс начинает занимать 6 ГБ и более, возникает закономерный вопрос: насколько этот функционал полезен в конфигурации, которая не базируется на Библиотеке стандартных подсистем (БСП) и использует преимущественно обычные формы?
В этой статье мы подробно проанализируем механизмы работы полнотекстового поиска, выясним причины его разрастания и определим, в каких случаях его можно безболезненно отключить, а в каких — необходимо оптимизировать.
Разберем фундаментальное различие, которое часто вводит в заблуждение разработчиков. В современных конфигурациях на управляемых формах (ERP, КА 2.4, БП 3.0) механизм полнотекстового поиска глубоко интегрирован в динамические списки. При вводе строки в поле поиска система задействует индекс ПП, что позволяет мгновенно находить данные в огромных таблицах.
Проанализируем ситуацию в УПП (обычные формы). Здесь механизм полнотекстового поиска реализован как отдельный, изолированный инструмент. Рассмотрим особенности его работы в данном контексте:
Ctrl + F в журналах документов или справочниках, система выполняет обычный SQL-запрос к базе данных. Полнотекстовый индекс при этом не используется.Таким образом, выясним причину низкой востребованности ПП в УПП: из-за специфики интерфейса толстого клиента пользователи практически не сталкиваются с этим механизмом в повседневной деятельности.
Если вы обнаружили, что папка индекса (находящаяся в каталоге сервера 1С) занимает десятки гигабайт, необходимо разобраться в процедуре индексации. Рассмотрим структуру индекса, которая состоит из двух частей:
Посмотрим на типичную ошибку настройки регламентных заданий. Часто в системе включено только задание ОбновлениеИндексаППД, которое выполняется раз в несколько минут. Оно наполняет дополнительный индекс, но не переносит данные в основной. Для стабилизации размера файлов необходимо регулярно выполнять Слияние индексов.
Рассмотрим пример правильной настройки регламентных процедур:
Если слияние не проводится, временные файлы (дополнительный индекс) будут расти бесконтрольно, пока не исчерпают свободное место на диске, что приведет к остановке сервера 1С.
Проанализируем ситуацию с точки зрения системного администрирования. Процесс индексации — это интенсивная операция чтения и записи. В УПП, где количество документов (например, «Реализация товаров и услуг» или «Заказ покупателя») может исчисляться миллионами, а количество строк в них — тысячами, нагрузка становится критической.
В моменты обновления индекса сервер 1С активно нагружает процессор для морфологического анализа текста и дисковую подсистему для записи индексных файлов. В крупных базах это может приводить к микро-фризам (зависаниям) у пользователей в момент записи документов, так как система фиксирует изменения для последующей индексации.
Если вы не хотите полностью отказываться от поиска (например, если менеджерам нужно искать номенклатуру по длинным описаниям), мы можем оптимизировать состав индекса. Разберем, как это сделать по шагам:
ИспользоватьПолнотекстовыйПоиск.Ложь (или снимите галочку).Важный совет: В типовой УПП индексация включена почти для всех объектов «по умолчанию». Если оставить ее только для справочников Номенклатура, Контрагенты и ДоговорыКонтрагентов, размер индекса сократится в 10–20 раз, а нагрузка на сервер практически исчезнет.
Выясним еще одну особенность: ПП в 1С использует морфологический поиск. Он отлично находит слово «кабель» в разных падежах, но пасует перед сложными артикулами со спецсимволами, такими как КБ-00045/90-ВТ. Механизм может разбивать такой код на части или игнорировать его из-за разделителей.
В УПП поиск чаще всего ведется по строгому соответствию артикула или кода. В таких случаях стандартный поиск 1С через ПОДОБНО (LIKE в SQL) в обычных формах работает гораздо надежнее и точнее, чем «умный» полнотекстовый поиск.
Для управления состоянием ПП из кода (например, в консоли заданий или обработке) используются методы глобального контекста. Рассмотрим примеры кода для работы с полнотекстовым поиском:
Проверим текущее состояние полнотекстового поиска:
Если ПолнотекстовыйПоиск.ПолучитьРежимИспользования() = РежимПолнотекстовогоПоиска.Использовать Тогда
Сообщить("Полнотекстовый поиск включен");
КонецЕсли;
Если вы решили полностью отключить этот механизм, чтобы освободить ресурсы, выполните следующую команду:
ПолнотекстовыйПоиск.УстановитьРежимИспользования(РежимПолнотекстовогоПоиска.НеИспользовать);
После отключения через код или в настройках, файлы индекса в каталоге сервера 1С можно будет безопасно удалить вручную (после остановки службы сервера), что освободит значительное дисковое пространство.
Подведем итог нашего анализа целесообразности использования полнотекстового поиска в 1С:УПП:
Проанализируйте потребности вашего бизнеса: в большинстве случаев для УПП на обычных формах полнотекстовый поиск — это функционал, который приносит больше проблем с обслуживанием, чем реальной пользы пользователям.