Многие пользователи и администраторы систем 1С сталкиваются с неприятной ситуацией: после планового обновления платформы до версии 8.3.22.2411 (и выше) или обновления конфигурации «Бухгалтерия предприятия 3.0» привычный поиск в справочниках начинает вести себя непредсказуемо. Типичный пример: при попытке найти товар по части кода, например, вводя 0000306 для кода 00000000306, система выдает пустой результат или нерелевантные данные. При этом, если добавить пробел (0000 306), поиск внезапно срабатывает корректно.
В данной статье мы подробно разберем, почему так происходит, проанализируем внутренние механизмы платформы и рассмотрим пошаговые инструкции по возвращению поиска в рабочее состояние.
Для начала проанализируем ситуацию с технической точки зрения. Начиная с релизов ветки 8.3.22, компания 1С внесла существенные изменения в алгоритмы работы полнотекстового поиска. Основная проблема кроется в токенизации — процессе разбиения строки на отдельные значимые части (токены).
Когда вы вводите длинный цифровой код с большим количеством нулей, новый поисковый движок может интерпретировать его не как единую строку, а как последовательность, которую нужно индексировать по особым правилам. Ввод пробела в строке поиска (0000 306) фактически «обманывает» систему, заставляя её искать два отдельных фрагмента, что в итоге приводит к нахождению нужного элемента. Однако это лишь временный «костыль», а не полноценное решение.
Рассмотрим основные способы исправления этой проблемы, начиная от самых простых и заканчивая радикальными методами.
Это самый быстрый и эффективный метод, если вам не требуется искать данные по всей базе данных (через глобальный поиск в шапке программы). Полнотекстовый поиск часто путают с обычным поиском в списке, но это разные механизмы.
Разберем, как отключить ППС и на что это повлияет:
Результат: После отключения этой опции 1С перестанет обращаться к индексу при поиске в списках (например, в справочнике «Номенклатура») и перейдет на использование прямых SQL-запросов к базе данных (команда LIKE). Для большинства средних баз это не вызовет замедления работы, но поиск по части строки станет работать абсолютно точно, так как он будет искать прямое вхождение символов в таблице.
Если полнотекстовый поиск вам необходим (например, для быстрого поиска документов по комментариям или содержанию), попробуем «вылечить» сам индекс. Обычное нажатие кнопки «Обновить индекс» часто не помогает, так как поврежденные файлы индекса остаются в системе.
Рассмотрим процедуру глубокой очистки:
1Cv8FTxt из каталога базы данных. Если серверная — остановите службу 1С:Предприятие и удалите содержимое папки 1Cv8FTxt в каталоге кластера серверов.Иногда причина кроется в настройках самого списка, которые могли сброситься после обновления платформы. Проверим режим поиска непосредственно в справочнике «Номенклатура».
Выполним следующие шаги:
00000000306 при вводе 306.Если вы являетесь программистом 1С, проанализируем свойства реквизита «Код» в конфигурации. После обновлений настройки поиска при вводе могут измениться.
Посмотрим на настройки объекта Справочник.Номенклатура:
Код. Оно должно быть установлено в Использовать.Как показывает практика, релиз 8.3.22.2411 имеет ряд специфических ошибок в работе с СУБД (особенно PostgreSQL) и механизмами индексации. Если ни один из вышеперечисленных методов не помог, проанализируем возможность смены платформы.
Существует два пути:
.dt и проверив работу поиска на копии.Проанализировав ситуацию, можно сделать вывод, что проблема носит комплексный характер и связана с переходом платформы на новые алгоритмы обработки строковых данных. Для быстрого восстановления работоспособности наиболее эффективным решением является отключение полнотекстового поиска, если он не критичен для вашей ежедневной работы.
Если же полнотекстовый поиск необходим, придерживайтесь следующего алгоритма: Физическое удаление индекса — Обновление платформы до последней доступной версии — Полная переиндексация. Это позволит минимизировать ошибки токенизации и вернуть корректный поиск по части кода.