При работе в управляемом интерфейсе 1С:Предприятие часто возникает ситуация: пользователь вводит в поле поиска первые символы номера документа (например, 120), и в списке отображаются нужные документы, включая 12012. Однако стоит дописать следующий символ (1201), как список резко пустеет, а искомый документ исчезает. Разберем, почему возникает такое поведение платформы и как быстро восстановить корректную работу поиска.
Выясним причину такого странного поведения. В управляемых формах 1С строка поиска динамического списка по умолчанию взаимодействует с механизмом полнотекстового поиска данных (ППД). Когда в конфигурации и в параметрах информационной базы включен полнотекстовый поиск, платформа не делает прямой SQL-запрос с конструкцией ПОДОБНО к таблице базы данных. Вместо этого она обращается к специальным служебным индексам.
Полнотекстовый индекс состоит из двух частей:
При сбоях в работе сервера 1С, аварийном завершении процессов кластера или ошибках блокировок файлы индекса в каталоге 1Cv8FTxt могут повредиться или рассинхронизироваться. Регламентное задание по обновлению индекса в консоли может бодро рапортовать об успешном завершении, в то время как в Журнале регистрации фиксируются критические ошибки ППД. В итоге короткие префиксы находят совпадения в остаточных данных индекса, а при уточнении поискового запроса индекс дает сбой и выборка полностью очищается.
Проанализируем основные пути решения этой проблемы, от стандартного администрирования до временных обходных путей.
Если индекс поврежден, стандартного инкрементального обновления недостаточно. Разберем по шагам, как полностью перестроить поисковый индекс:
УправлениеПолнотекстовымПоиском через меню «Все функции» / «Функции для технического специалиста»).Если регламентные процедуры выполняются программно или требуется автоматизировать процесс в регламентном задании, посмотрим на пример вызова методов менеджера полнотекстового поиска:
// Полная очистка и переиндексация данных
ПолнотекстовыйПоиск.ОчиститьИндекс();
ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Истина);
В клиент-серверном варианте при возникновении критических ошибок, которые не удается устранить через интерфейс, остановим службу сервера 1С:Предприятия и вручную очистим содержимое служебной папки 1Cv8FTxt в каталоге соответствующей базы на сервере, после чего запустим службу и выполним переиндексацию.
Иногда регламентное задание «Обновление индекса ППД» выполняется регулярно, но регламентное задание «Слияние индекса ППД» отключено или зависает. В результате дополнительный индекс разрастается до огромных размеров, что приводит к сбоям токенизации и неполной выдаче результатов при поиске по числам и строкам.
Убедимся, что слияние индексов выполняется по расписанию, либо запустим слияние вручную через код:
// Выполняем слияние дополнительного индекса с основным
ПолнотекстовыйПоиск.СлияниеИндексов();
Рассмотрим дополнительные методы, которые помогут пользователям находить документы, если перестроение индекса ППД в данный момент невозможно (например, в течение рабочего дня под высокой нагрузкой):
ПОДОБНО, что гарантированно найдет документ.Использовать. Если установлено Не использовать, полнотекстовый поиск будет полностью игнорировать содержимое данного поля.8.3.6 (включая релиз 8.3.6.2237) наблюдались платформенные ошибки взаимодействия динамических списков и фонового получения порций индекса. При регулярном повторении проблемы рекомендуется запланировать обновление платформы на актуальный стабильный релиз.