Многие технические специалисты сталкиваются с ситуацией, когда полнотекстовый поиск (ППД) в 1С ведет себя непредсказуемо. Например, при поиске номера документа по последним цифрам «89» результат находится, а при вводе более длинной подстроки «689» — нет. Это создает серьезные неудобства для пользователей, особенно в нагруженных списках, таких как «Поступление товаров и услуг» в «1С:Бухгалтерия 3.0». В этой статье мы подробно разберем причины такого поведения и рассмотрим комплекс мер по восстановлению корректной работы поиска.
Для начала проанализируем, как платформа 1С взаимодействует с данными при поиске. Важно понимать, что полнотекстовый поиск — это не просто перебор строк (как оператор LIKE в SQL), а сложная система индексации слов. Когда мы вводим запрос в динамическом списке, система может использовать разные механизмы поиска в зависимости от настроек платформы и актуальности индекса.
Рассмотрим основные причины «странного» поведения, когда часть номера находится, а часть — нет:
* (звездочка). Без нее система ищет совпадение по началу слова.Как показывает практика, стандартной процедуры «Очистить и обновить индекс» в консоли администратора 1С или через регламентное задание не всегда достаточно. Если ваша база работает на MS SQL Server, платформа 1С часто делегирует функции поиска встроенному механизму Full-Text Search самого SQL-сервера.
Проанализируем ситуацию: если на уровне SQL-сервера полнотекстовый каталог поврежден или находится в состоянии «Offline», 1С не сможет получить актуальные данные, даже если в самой конфигурации индексы числятся как обновленные. Для решения этой проблемы выполним следующие шаги:
DBCC CHECKIDENT ('ИмяТаблицыИндексаППД', RESEED);
Важный момент: Если вы используете собственный запрос в динамическом списке, убедитесь, что в нем корректно настроены связи. Использование сложных вложенных запросов или LEFT JOIN с таблицами, которые не входят в состав полнотекстового поиска, может заставить платформу отказаться от использования индекса ППД в пользу обычного SQL-запроса, который работает медленнее или по другой логике.
Если проблема возникла в файловой версии (например, в «1С:УНФ» или «1С:Бухгалтерия»), механизмы SQL нам не помогут. Здесь платформа хранит индекс в специальных файлах внутри каталога информационной базы. Разберем алгоритм восстановления поиска для файлового режима:
Посмотрим на структуру каталога базы. За полнотекстовый поиск отвечает папка 1Cv8FTxt. Если стандартная обработка «Управление полнотекстовым поиском» не помогает, выполним «жесткую» очистку:
1Cv8FTxt из каталога базы.Это действие часто помогает в случаях, когда файлы индекса были заблокированы или повреждены при некорректном завершении работы системы.
Начиная с версии 8.3.10, платформа 1С использует разные режимы поиска в списках. Выясним, какой режим установлен у вас. В свойствах конфигурации или программно через настройки компоновки данных можно управлять параметром СпособПоискаВДинамическомСписке.
Существует три режима:
LIKE 'Текст%'. Самый надежный, но медленный на больших объемах.Если вы столкнулись с некорректным поиском, попробуйте явно указать метод поиска в коде при создании формы, чтобы исключить автоматическое переключение:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список.СпособПоиска = СпособПоискаВДинамическомСписке.ПолнотекстовыйПоиск;
КонецПроцедуры
Если в ваш динамический список добавлены дополнительные реквизиты (через механизм характеристик или прямым соединением в запросе), проанализируем их влияние. Для того чтобы поиск по этим полям работал через ППД, необходимо, чтобы у этих объектов метаданных (ПланыВидовХарактеристик, ДополнительныеСведения) в свойстве «Полнотекстовый поиск» было установлено значение Использовать.
Рассмотрим пример: если вы ищете по артикулу, который выведен как доп. реквизит, но этот реквизит не проиндексирован, платформа может выдать частичный результат или проигнорировать запись вовсе. Проверьте состав полнотекстового поиска в корне конфигурации.
Чтобы окончательно решить проблему, рекомендуем последовательно выполнить следующие действия:
*, если нужно найти фрагмент внутри слова.1Cv8FTxt и переиндексировать данные.Использовать в объектах метаданных, участвующих в поиске.Документ.ПоступлениеТоваровУслуг) определены как основные таблицы (свойство ОсновнаяТаблица в настройках списка).Выполнение этих шагов позволяет в большинстве случаев восстановить работоспособность поиска и обеспечить пользователям комфортную работу с документами.