Как узнать, используют ли пользователи полнотекстовый поиск в 1С, и как им правильно управлять

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Механизм полнотекстового поиска данных (ППД) в платформе 1С:Предприятие предназначен для быстрого нахождения информации по ключевым словам во всей базе данных. Однако на практике этот инструмент часто становится источником серьезных проблем с производительностью: он вызывает избыточную нагрузку на процессор, приводит к утечкам оперативной памяти рабочих процессов rphost и провоцирует зависания интерфейса у пользователей. Перед администраторами и разработчиками 1С часто встает дилемма: можно ли отключить ППД без ущерба для бизнес-процессов? Но как узнать, пользуется ли им хоть кто-то в реальности, не прибегая к радикальному методу "отключить и ждать жалоб"?

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

Способ 1. Настройка мониторинга через Технологический журнал (ТЖ)

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

  1. FTEXTUpd — фиксирует моменты обновления файлов полнотекстового индекса. Позволяет оценить частоту и объем добавляемых в индекс данных.
  2. FTEXTCheck — регистрирует проверки целостности и актуальности индекса.
  3. FTEXTSkip — содержит информацию о данных и объектах метаданных, которые были пропущены в процессе индексирования (например, из-за блокировок или ошибок формата).
  4. INPUTBYSTRING — отслеживает события ввода по строке. Этот механизм крайне важен, так как при вводе данных в поля выбора система часто обращается к механизмам полнотекстового поиска для автоподбора.

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


<config xmlns="http://v8.1c.ru/v8/tech-log">
    <log location="C:\v8_logs\ftext_activity" history="168">
        <event>
            <eq property="Name" value="FTEXTUpd"/>
        </event>
        <event>
            <eq property="Name" value="FTEXTCheck"/>
        </event>
        <event>
            <eq property="Name" value="FTEXTSkip"/>
        </event>
        <event>
            <eq property="Name" value="INPUTBYSTRING"/>
        </event>
        <property name="all"/>
    </log>
</config>

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

Способ 2. Мониторинг обращений к файлам индекса на уровне ОС

Полнотекстовый поиск в 1С устроен так, что сам индекс хранится не внутри таблиц СУБД, а в виде отдельных бинарных файлов на сервере приложений 1С. Физически эти файлы располагаются в служебной папке 1Cv8FTxt внутри каталога конкретной базы данных.

Выясним причину активности поиска, наблюдая за обращениями операционной системы к этой директории. Внутри папки 1Cv8FTxt находятся ключевые файлы индекса:

Мы можем зафиксировать чтение и запись этих файлов в режиме реального времени:

  1. В операционной системе Windows: Используем утилиту Process Monitor (ProcMon) от Sysinternals. Настроим фильтр по процессу rphost.exe и пути к файлам, содержащему строку "1Cv8FTxt". Если пользователи активно ищут информацию, мы увидим непрерывный поток операций ReadFile к файлам indexMain.bin.
  2. В операционной системе Linux: Применим системную утилиту lsof или инструмент strace. Команда вида lsof | grep 1Cv8FTxt покажет, какие именно рабочие процессы сервера приложений удерживают файлы индекса открытыми в данный момент.

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

Способ 3. Косвенный анализ запросов на стороне СУБД

Проанализируем ситуацию, которая возникает при отключении полнотекстового поиска. Когда ППД выключен в настройках системы, платформа 1С вынуждена перенаправлять поисковые запросы из динамических списков напрямую к СУБД (MS SQL Server, PostgreSQL и др.).

В этом случае платформа транслирует поиск в тяжелые SQL-запросы с использованием оператора LIKE (в терминах языка запросов 1С — ПОДОБНО). СУБД выполняет поиск подстроки вида %искомое_слово% по всем текстовым колонкам таблиц, что приводит к полному сканированию таблиц (Table Scan / Index Scan) вместо быстрого поиска по индексу.

Чтобы зафиксировать этот процесс, мы можем настроить сбор событий СУБД в Технологическом журнале (события DBMSSQL или DBPOSTGRS) либо воспользоваться встроенными инструментами трассировки СУБД (например, SQL Server Profiler). Наличие огромного количества запросов, содержащих конструкцию LIKE '%...%', однозначно свидетельствует о том, что пользователи активно пользуются строкой поиска в списках документов и справочников, но делают это неэффективно из-за отсутствия или отключения ППД.

Эволюция механизмов ППД в версиях платформы

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

Проблемы производительности ППД и практические альтернативы

Многие специалисты рекомендуют полностью отключать ППД в типовых конфигурациях. Рассмотрим подробнее, с какими проблемами сталкиваются компании при его использовании:

  1. Неактуальность поисковой выдачи: Индекс ППД обновляется не в режиме реального времени, а по расписанию регламентных заданий (например, раз в 5-10 минут). Если менеджер только что создал контрагента или документ, он не сможет найти его через стандартную строку поиска до тех пор, пока не завершится регламентное задание индексации.
  2. Проблемы локального кэша и зависания: При включенном ППД часто наблюдаются сбои локального кэша пользователей. Списки форм начинают катастрофически тормозить у отдельных пользователей вплоть до полной блокировки сеанса при выборе элементов в документах. Очистка локального кэша решает проблему лишь временно.
  3. Утечки оперативной памяти: Индекс ППД первой версии активно кэшируется процессами rphost в ОЗУ через механизм Mapped Files. На базах объемом в несколько терабайт файлы индекса достигают огромных размеров, что приводит к перерасходу оперативной памяти на сервере и аварийным перезапускам рабочих процессов 1С.

Какую альтернативу мы можем предложить пользователям? Отличным решением является отключение стандартной поисковой строки ППД в формах и обучение сотрудников использованию встроенных инструментов отбора компоновки данных (СКД):

Использование быстрых отборов и фильтров СКД: Настройка фиксированных отборов в динамических списках работает напрямую через СУБД, задействуя штатные индексы таблиц (например, поиск по коду, наименованию или ИНН). Это гарантирует мгновенное получение актуальных данных без задержек на индексацию и без создания паразитной нагрузки на сервер приложений.

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

← На главную