Почему некорректно работает поиск по коду в справочнике Номенклатура после обновления 1С и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

Многие пользователи и администраторы систем 1С сталкиваются с неприятной ситуацией: после планового обновления платформы до версии 8.3.22.2411 (и выше) или обновления конфигурации «Бухгалтерия предприятия 3.0» привычный поиск в справочниках начинает вести себя непредсказуемо. Типичный пример: при попытке найти товар по части кода, например, вводя 0000306 для кода 00000000306, система выдает пустой результат или нерелевантные данные. При этом, если добавить пробел (0000 306), поиск внезапно срабатывает корректно.

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

Выясним причину: изменения в механизме полнотекстового поиска (ППС)

Для начала проанализируем ситуацию с технической точки зрения. Начиная с релизов ветки 8.3.22, компания 1С внесла существенные изменения в алгоритмы работы полнотекстового поиска. Основная проблема кроется в токенизации — процессе разбиения строки на отдельные значимые части (токены).

Когда вы вводите длинный цифровой код с большим количеством нулей, новый поисковый движок может интерпретировать его не как единую строку, а как последовательность, которую нужно индексировать по особым правилам. Ввод пробела в строке поиска (0000 306) фактически «обманывает» систему, заставляя её искать два отдельных фрагмента, что в итоге приводит к нахождению нужного элемента. Однако это лишь временный «костыль», а не полноценное решение.

Рассмотрим основные способы исправления этой проблемы, начиная от самых простых и заканчивая радикальными методами.

Способ 1: Отключение полнотекстового поиска

Это самый быстрый и эффективный метод, если вам не требуется искать данные по всей базе данных (через глобальный поиск в шапке программы). Полнотекстовый поиск часто путают с обычным поиском в списке, но это разные механизмы.

Разберем, как отключить ППС и на что это повлияет:

  1. Перейдем в раздел АдминистрированиеОбщие настройки.
  2. Найдем подраздел Полнотекстовый поиск данных.
  3. Снимем галочку с пункта Полнотекстовый поиск данных включен.

Результат: После отключения этой опции 1С перестанет обращаться к индексу при поиске в списках (например, в справочнике «Номенклатура») и перейдет на использование прямых SQL-запросов к базе данных (команда LIKE). Для большинства средних баз это не вызовет замедления работы, но поиск по части строки станет работать абсолютно точно, так как он будет искать прямое вхождение символов в таблице.

Способ 2: Полная очистка и обновление индекса

Если полнотекстовый поиск вам необходим (например, для быстрого поиска документов по комментариям или содержанию), попробуем «вылечить» сам индекс. Обычное нажатие кнопки «Обновить индекс» часто не помогает, так как поврежденные файлы индекса остаются в системе.

Рассмотрим процедуру глубокой очистки:

  1. В том же разделе АдминистрированиеОбщие настройкиПолнотекстовый поиск данных нажмем гиперссылку Настроить.
  2. Нажмем кнопку Очистить индекс.
  3. Для достижения гарантированного результата рекомендуется выполнить физическое удаление файлов. Если у вас файловая база — удалите папку 1Cv8FTxt из каталога базы данных. Если серверная — остановите службу 1С:Предприятие и удалите содержимое папки 1Cv8FTxt в каталоге кластера серверов.
  4. После этого вернитесь в интерфейс 1С и нажмите Обновить индекс. Обратите внимание: на больших базах этот процесс может занять несколько часов.

Способ 3: Настройка режима поиска в интерфейсе

Иногда причина кроется в настройках самого списка, которые могли сброситься после обновления платформы. Проверим режим поиска непосредственно в справочнике «Номенклатура».

Выполним следующие шаги:

  1. Откроем справочник Номенклатура.
  2. Нажмем на значок лупы в строке поиска или выберем меню ЕщёНастроить список.
  3. Проверим установленный Режим поиска. Нам доступно три варианта: «По началу строки», «По части строки» и «Точное совпадение».
  4. Убедимся, что выбрано значение По части строки. Именно этот режим позволяет находить код 00000000306 при вводе 306.

Способ 4: Проверка метаданных в Конфигураторе

Если вы являетесь программистом 1С, проанализируем свойства реквизита «Код» в конфигурации. После обновлений настройки поиска при вводе могут измениться.

Посмотрим на настройки объекта Справочник.Номенклатура:

  1. Откроем Конфигуратор.
  2. Найдем справочник Номенклатура, перейдем на вкладку Данные.
  3. Проверим свойство Способ поиска при вводе. Рекомендуется установить значение Любая часть.
  4. Также проверим свойство Поиск при вводе у самого реквизита Код. Оно должно быть установлено в Использовать.

Способ 5: Откат или смена версии платформы

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

Существует два пути:

  1. Откат на стабильную версию: Многие специалисты рекомендуют использовать релизы конца 2023 года (ветки 8.3.21 или ранние 8.3.22), где поиск работал стабильнее.
  2. Обновление на более свежую ветку: В релизах 8.3.23 и 8.3.24 разработчики 1С провели работу над ошибками полнотекстового движка. Попробуйте установить последнюю доступную версию платформы в тестовом режиме, выгрузив базу в файл .dt и проверив работу поиска на копии.

Резюме и рекомендации

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

Если же полнотекстовый поиск необходим, придерживайтесь следующего алгоритма: Физическое удаление индекса — Обновление платформы до последней доступной версии — Полная переиндексация. Это позволит минимизировать ошибки токенизации и вернуть корректный поиск по части кода.

← На главную