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

Системный администратор 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

В процессе эксплуатации высоконагруженных систем на базе 1С:ERP Управление предприятием пользователи часто сталкиваются со странным поведением поиска в форме подбора товаров. Типичная ситуация: поиск по части артикула выдает корректный результат, но при вводе полного номера номенклатура исчезает из списка. Особенно остро эта проблема проявляется в Личном кабинете дилера (ЛКД) или при работе через веб-клиент. Разберем детально причины этого сбоя и пошагово рассмотрим методы восстановления работоспособности поиска. Для поддержания производительности подобных высоконагруженных баз можно регулярно выполнять многопоточную свёртку 1С:ERP, которая помогает сократить объём накопленных данных.

Анализ проблемы: почему поиск работает «наполовину»?

Прежде всего, проанализируем механику работы поиска. В современных конфигурациях на управляемых формах поиск в списках подбора чаще всего завязан на механизм Полнотекстового поиска данных (ППД). Когда мы вводим символы в строку поиска, система обращается к заранее построенному индексу, а не напрямую к таблицам SQL. Это значительно ускоряет работу, но создает зависимость от актуальности и целостности этого самого индекса.

Выясним причину, по которой частичный поиск работает, а полный — нет. Полнотекстовый поиск 1С разбивает данные на слова (токены). Если артикул содержит спецсимволы или имеет большую длину, поисковый движок может проиндексировать его некорректно. Однако более частой причиной является повреждение (фрагментация) файлов индекса. В этом случае «хвост» индекса может указывать на несуществующие блоки данных, и при точном совпадении длинной строки система выдает пустой результат, в то время как по короткой подстроке (которая проиндексирована в другой части файла) объект находится успешно.

Различие между стандартным поиском и поисковой строкой

Важно различать два механизма поиска, доступных пользователю:

  1. Стандартный поиск платформы (Ctrl+F или Alt+F): этот метод обычно выполняет прямой запрос к базе данных (SQL). Если товар находится через Ctrl+F, значит, с данными в таблицах базы все в порядке.
  2. Строка поиска в форме подбора: она программно обращается к механизму ПолнотекстовыйПоиск. Если здесь результат пустой, проблема локализована в области ППД.

Шаг 1. Пересоздание индекса полнотекстового поиска

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

Важный нюанс: В режиме работы 24/7 отключить ППД полностью бывает сложно, но необходимо понимать, что во время перестроения индекса пользователи смогут работать, но поиск по подстроке будет временно недоступен или неточен. Для крупной базы ERP процесс может занять несколько часов.

Для гарантированного результата выполним физическое удаление файлов индекса:

  1. Остановим службу сервера 1С:Предприятие (или временно удалим информационную базу из кластера).
  2. Перейдем в каталог на сервере, где хранится информационная база (для серверного варианта это каталог внутри srvinfo).
  3. Найдем папку с именем 1cv8ftxt. Именно здесь хранятся файлы полнотекстового поиска.
  4. Удалим содержимое этой папки.
  5. Запустим службу сервера.
  6. В интерфейсе 1С (Администрирование — Полнотекстовый поиск) нажмем кнопку «Очистить индекс», а затем «Обновить индекс».

Проанализируем программный аспект. Если вам необходимо проверить состояние индекса через код, можно воспользоваться стандартными методами:


СостояниеИндекса = ПолнотекстовыйПоиск.ПолучитьСостояниеИндекса();
Если СостояниеИндекса = СостояниеПолнотекстовогоПоиска.ТребуетсяОбновление Тогда
    ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Истина);
КонецЕсли;

Шаг 2. Очистка серверного кэша и веб-сервера

Если переиндексация не помогла, особенно в контексте Личного кабинета дилера, проанализируем влияние кэширования. Веб-клиент активно использует кэш серверных вызовов. Если в рабочей базе артикул был изменен, а в кэше веб-сервера (IIS или Apache) остались старые связи, поиск будет выдавать ошибку.

Рекомендуем выполнить следующие действия:

  1. Очистить кэш всех рабочих процессов сервера 1С (папки snacc в каталоге пользователя, под которым запущен сервер).
  2. Перезапустить веб-сервер. Если используется IIS, выполним команду в консоли:
  3. iisreset /restart
  4. Если проблема локализована у конкретного пользователя, очистим локальный кэш на его компьютере (удаление папок в %AppData%\1C\1cv8\).

Шаг 3. Проверка на невидимые символы и кодировку

Рассмотрим ситуацию, когда дилеры копируют артикулы из Excel или сторонних каталогов. При вставке в строку поиска в 1С могут попадать неразрывные пробелы (символ с кодом 160) или скрытые знаки форматирования. Поиск по подстроке (когда часть артикула вводится вручную) срабатывает, так как «мусорный» символ отсекается. Чтобы исключить подобные ошибки ручного ввода данных, можно организовать автоматический сбор и обработку прайс-листов из почты или FTP.

Проверим подозрительный артикул с помощью простой обработки или консоли запросов. Посмотрим на код символов:


Для Ном = 1 По СтрДлина(ПроверяемыйАртикул) Цикл
    Сообщить("Символ: " + Сред(ПроверяемыйАртикул, Ном, 1) + " Код: " + КодСимвола(ПроверяемыйАртикул, Ном));
КонецЦикла;

Если в кодах символов обнаружится что-то отличное от цифр и букв (например, код 160 вместо 32), необходимо провести нормализацию данных в справочнике Номенклатура.

Шаг 4. Анализ расширений конфигурации

Часто в «базе разработок» всё работает корректно, а в «проде» — нет, из-за наличия специфических расширений. Проанализируем список активных расширений в рабочей базе. Обратим внимание на те, которые модифицируют форму подбора или перехватывают событие ПриИзменении поля поиска.

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

Резюме по решению

Подводя итог, можно сказать, что в 90% случаев проблема «битого» поиска по полному артикулу в 1С:ERP решается физическим удалением папки индекса ППД и последующим полным обновлением. Остальные 10% приходятся на специфику веб-клиента (кэш IIS) и наличие невидимых символов в данных. После выполнения этих регламентных процедур поиск в форме подбора должен восстановить свою штатную работу. Для автоматизации такого обслуживания в нескольких базах удобно использовать инструмент для автоматического архивирования и тестирования баз, работающий по расписанию.

← На главную