← На главную
Мы сталкиваемся с тем, что переход на полнотекстовый поиск версии 2 (ППД v2) на платформе 1С:Предприятие 8.3.25.1394 может привести к серьезным проблемам. Пользователи сообщают, что поиск может не отображать все записи, выдавать неполные результаты или не работать вовсе, особенно в динамических списках, где часто требуется изменение поиска по первым буквам на подстрочник для удобства работы (удобно через расширение поиска по подстроке в списках 1С), или при поиске по конкретным полям, таким как "Контрагент". Например, при поиске по части названия контрагента ("шак" вместо "Шакиров") система может перестать выдавать результаты, хотя по более короткой фразе ("ша") результаты отображаются корректно. В таких ситуациях многие вынуждены откатываться на версию 1 полнотекстового поиска. Давайте вместе разберем причины такого поведения и возможные пути решения.
Понимание особенностей работы полнотекстового поиска версии 2
Прежде чем приступить к устранению неполадок, мы должны вспомнить ключевые особенности ППД v2, отличающие его от первой версии. Понимание этих различий поможет нам более точно диагностировать проблемы.
- Только клиент-серверный вариант: В отличие от первой версии, ППД v2 предназначен исключительно для клиент-серверного варианта работы информационной базы. В файловом варианте он не поддерживается, за исключением автономного сервера. Это критическое отличие, о котором мы всегда должны помнить при развертывании v2.
- Требования к Java: Для полноценного функционирования ППД v2 требуется установленная Java версии 8 или выше на компьютерах кластера серверов 1С. Платформа обычно поставляет свою версию Java в комплекте, но мы можем столкнуться с ситуациями, когда требуется использование другой, отдельно установленной версии Java, или же могут возникнуть конфликты с уже имеющимися версиями.
- Асинхронное обновление индекса: Обновление индекса в версии 2 происходит асинхронно, в фоновом режиме, по мере поступления изменений в данные. Этот механизм призван снижать пиковые нагрузки на систему по сравнению с пакетным обновлением первой версии. Метод
ОбновитьИндекс() запускает процесс индексации и сразу возвращает управление, а метод ИндексАктуален() позволяет нам проверить текущий статус завершения индексации.
- Улучшенное ранжирование и алгоритмы: Механизм включает улучшенное ранжирование результатов, которое учитывает полноту совпадения и актуальность объекта по дате. Используются экспертные алгоритмы выделения корневой основы (stemming) и списки стоп-слов. Весь текст индексируется как есть, без приведения к нормальной форме, что позволяет искать слова как в морфологическом режиме (префиксный поиск), так и в строгой падежной форме.
Последовательность действий при переключении на ППД v2
Правильный порядок активации ППД v2 критически важен. Если мы сталкиваемся с проблемами после переключения, возможно, были упущены некоторые шаги или они были выполнены некорректно. Давайте разберем рекомендуемый порядок действий.
- Обеспечьте монопольный режим: Мы должны убедиться, что все пользователи вышли из информационной базы. Переключение на новую версию полнотекстового поиска, а также очистка и перестроение индекса, требует монопольного режима работы.
- Очистите текущий индекс: Следующим шагом мы должны очистить текущий индекс полнотекстового поиска. Это можно сделать через консоль кластера серверов 1С (удобно через утилиту управления сеансами и регламентными заданиями) или, если такая функциональность предусмотрена, в режиме 1С:Предприятие с помощью специальной обработки. Очистка старых, возможно поврежденных или несовместимых с v2 индексов, является одним из наиболее частых решений проблем.
- Переключите механизм на версию 2: Теперь мы можем переключить механизм полнотекстового поиска на версию 2 в соответствующих настройках информационной базы. Если интерфейс конфигурации не позволяет сделать это гибко, может пригодиться обработка Смена версии полнотекстового поиска.
- Перезапустите сеанс: После переключения мы должны перезапустить сеанс 1С:Предприятия. Это необходимо для того, чтобы платформа инициализировала новый механизм полнотекстового поиска.
- Дождитесь индексации: После перезапуска начнется процесс построения нового индекса в фоновом режиме. Мы должны дождаться, пока система полностью проиндексирует данные. Платформа должна сообщить, что индекс актуален. Этот процесс может занять значительное время в зависимости от объема и сложности нашей информационной базы. Важно дать системе достаточно времени для завершения этой операции.
Если после выполнения этих шагов поиск все еще не работает или выдает некорректные результаты, мы переходим к анализу более глубоких причин.
Взаимодействие ППД v2 с регламентными заданиями
Одним из наиболее запутанных моментов является взаимодействие версии 2 полнотекстового поиска с регламентными заданиями. Изначально многие предполагали, что ППД v2 обновляется "сам" и не требует традиционных регламентных заданий, которые использовались для первой версии. Однако практический опыт пользователей, включая автора темы, показывает обратное.
Мы видим, что регламентные задания, такие как "Обновление индекса ППД" и "Слияние индекса ППД", которые были актуальны для первой версии поиска, могут продолжать функционировать и, что самое важное, влиять на работу ППД v2, часто приводя к ухудшению результатов поиска.
Пользователи сообщают, что в тестовых сценариях, после успешного переключения на ППД v2 и начального построения индекса, выполнение регламентного задания "Слияние индекса ППД" (которое иногда запускается автоматически или как следствие выполнения "Обновление индекса ППД") приводило к тому, что поиск начинал работать некорректно или выдавать неполные результаты. В одном из экспериментов, поиск по "тор" в справочнике контрагентов выдал лишь 5 строк вместо десятков после выполнения "Слияния индекса ППД". После отключения этих регламентных заданий, поиск восстанавливал свою корректную работу.
Если мы столкнулись с подобной ситуацией, мы рекомендуем следующие шаги:
- Проанализируйте список активных регламентных заданий: Мы должны тщательно проверить список регламентных заданий в нашей информационной базе. Особое внимание уделим заданиям, связанным с полнотекстовым поиском.
- Попробуйте временно отключить регламентные задания: После успешного переключения на v2 и построения начального индекса, мы можем попробовать временно отключить регламентные задания "Обновление индекса ППД" и "Слияние индекса ППД".
- Проверьте влияние на поиск: После отключения заданий мы должны проверить, как это повлияет на стабильность и корректность полнотекстового поиска. Если поиск начинает работать корректно, это является сильным индикатором того, что именно эти регламентные задания вызывают конфликт с ППД v2.
Важно помнить, что даже если v2 обновляет индекс асинхронно, эти "старые" задания могут вмешиваться в его работу, возможно, нарушая структуру нового индекса или приводя к несовместимости. В некоторых конфигурациях, таких как "Бухгалтерия предприятия 3.0", эти задания могут быть настроены по умолчанию и выполняться ежедневно, что требует нашего внимания.
Дополнительные причины некорректной работы ППД v2 и их устранение
Помимо проблем с регламентными заданиями, существуют и другие распространенные факторы, которые могут мешать стабильной работе полнотекстового поиска v2. Давайте рассмотрим их подробно.
- Недостаток свободного дискового пространства: Мы знаем, что 1С официально предупреждает: если на диске, где хранятся индексы полнотекстового поиска (обычно в каталоге кластера серверов), свободно менее 10% места, ППД может работать некорректно или полностью остановиться. Мы настоятельно рекомендуем обеспечить достаточный объем свободного дискового пространства, желательно более 20%, для стабильной работы системы.
- Проблемы с Java: Поскольку ППД v2 активно использует Java, некорректная установка, повреждение или несовместимость версии Java на сервере кластера 1С может быть основной причиной сбоев. Мы можем попробовать следующие шаги:
- Убедиться, что установлена Java версии 8 или выше. Проверьте версию Java, используемую сервером 1С.
- Проверить, не конфликтует ли Java, поставляемая с платформой 1С, с другими установленными версиями Java на сервере. В некоторых случаях пользователи сообщают, что помогало использование другой, отдельно установленной версии Java, а не той, что идет в комплекте с платформой. Мы можем попробовать указать путь к альтернативной Java-машине.
- Устаревшие или "битые" индексы: Даже после первоначальной очистки могут оставаться "следы" старых или поврежденных индексов, которые мешают корректной работе v2. Особенно это актуально после обновления платформы (например, до 8.3.26 и выше, где механизмы ППД могли снова меняться). Мы настоятельно рекомендуем полностью очищать индексы при таких значительных обновлениях платформы, чтобы обеспечить "чистый старт" для нового механизма поиска.
- Разрастание файла
tableChanges.dat: В некоторых версиях платформы (например, 8.3.24.*, 8.3.25.* и 8.3.26.* до определенных релизов) наблюдалась проблема стремительного роста файла tableChanges.dat. Этот файл расположен в каталоге 1Cv8FTxt и отвечает за фиксацию изменений для индексации. Его чрезмерное разрастание могло приводить к замедлениям и ошибкам в работе ППД. Эта критическая проблема была исправлена в платформах 8.3.24.1808, 8.3.25.1546 и 8.3.26.1540. Если мы используем более ранние версии, мы можем попробовать следующие решения:
- Обновить платформу до актуального релиза, где эта проблема уже исправлена. Это наиболее надежное решение.
- Как временное решение, мы можем попробовать вручную удалять файл
tableChanges.dat из каталога 1Cv8FTxt. Эту операцию следует выполнять после остановки кластера серверов 1С и последующей полной переиндексации.
- Нарушения ссылочной/логической целостности базы: "Битые" ссылки на элементы базы или другие проблемы с целостностью данных могут негативно влиять на процесс индексации, приводя к ошибкам или пропуску объектов. Мы рекомендуем регулярно проводить "Тестирование и исправление" информационной базы в конфигураторе, а также выполнять поиск и замена битых ссылок справочников (поможет инструмент поиска и удаления битых ссылок), чтобы обеспечить чистоту данных.
- Настройки полнотекстового поиска: Мы должны убедиться, что в общих настройках программы полнотекстовый поиск включен и правильно настроены параметры индексирования для необходимых объектов. Проверьте, что объекты, по которым вы ищете, включены в область индексации.
- Ошибки в коде конфигурации: В редких случаях, особенно после обновлений или внесения кастомизаций, проблемы с поиском по конкретным полям (например, по ИНН контрагента) могут быть вызваны ошибками в коде программы. Мы советуем провести анализ изменений, если проблема затрагивает только определенные поля или объекты, как это было в примере с полем "Контрагент".
- Чрезмерно частое индексирование: Очень частое выполнение индексирования (например, каждую минуту) на больших базах может приводить к тому, что индексы не успевают построиться, особенно при недостатке памяти или высокой загрузке процессора. В таких случаях можно попробовать увеличить интервал выполнения регламентного задания "Обновление индекса ППД" (если вы решили его использовать) или убедиться, что автоматическое асинхронное обновление имеет достаточно ресурсов.
Диагностика и анализ каталогов индекса
Для более глубокой диагностики проблем полезно проверять каталоги, где хранятся индексы полнотекстового поиска. Это позволяет нам увидеть, формируется ли индекс вообще и какого он размера.
- Расположение индексов v2: Для версии 2 полнотекстового поиска индексы хранятся в папке, обычно содержащей в названии "txt2" (например,
1Cv8FTxt2). В клиент-серверном варианте эта папка располагается в каталоге кластера серверов 1С, а в файловом варианте — в папке с базой. Мы можем проверить размер этой папки. Если она пуста или очень мала после предполагаемой индексации, это является явным признаком того, что процесс индексирования не происходит или завершается с ошибкой.
- Анализ конфигов сборки индекса: Мы также можем попробовать "парсить" конфиги сборки индекса. Во второй версии индексы раскладываются по папкам с внутренним именем объекта. Изучение этих папок поможет нам убедиться, что индексирование происходит для нужных данных и что структура индекса соответствует ожиданиям.
Заключение
Полнотекстовый поиск версии 2, хотя и обещает улучшенную производительность и ранжирование, на практике может демонстрировать нестабильное поведение на определенных платформах и конфигурациях, особенно на платформе 8.3.25.1394. Мы видим, что проблема может быть многогранной и требовать комплексного подхода к диагностике.
Если, несмотря на все предпринятые шаги (корректное переключение, очистка индексов, проверка Java, дискового пространства, отключение конфликтных регламентных заданий и т.д.), ППД v2 продолжает работать некорректно, как это произошло с автором первоначального сообщения, откат на версию 1 может быть единственным рабочим решением до выхода более стабильных релизов платформы или конфигурации. В качестве альтернативы, можно попробовать внедрить расширенный поиск объекта в базе 1С с помощью специализированных расширений, или даже рассмотреть радикальные меры, такие как интеграция сторонних движков (об этом подробно написано в статье Кто такая Мантикора?).
Мы настоятельно рекомендуем обновлять платформу 1С до последних стабильных версий, поскольку многие проблемы, связанные с ППД v2 (например, разрастание tableChanges.dat), активно исправляются разработчиками. Платформа 8.3.26 и дальнейшие версии содержат дальнейшие оптимизации, которые могут улучшить стабильность ППД v2.
Мы продолжим следить за обновлениями и делиться опытом, чтобы обеспечить стабильную работу критически важных функций в 1С:Предприятии.