Как убрать постоянное окно «Поиск номенклатуры по ШК» в 1С:Розница 2.3 при сканировании?

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

При внедрении обязательной маркировки товаров, в частности обувной продукции, пользователи конфигурации 1С:Розница 2.3 часто сталкиваются с неприятной особенностью: при сканировании обычного штрихкода (EAN-13) в Рабочем месте кассира (РМК) система вместо автоматического добавления товара в корзину открывает диалоговое окно «Поиск номенклатуры по ШК». Это происходит даже для товаров, не подлежащих маркировке, и существенно замедляет работу магазина. Рассмотрим подробно, почему это происходит и как это исправить.

Разберем причину программных ошибок релиза 2.3.3.12

Первым делом проанализируем версию конфигурации. Релиз 2.3.3.12 был одним из первых, где разработчики внедряли механизмы глубокой интеграции с ИС МП (маркировкой). В этом релизе был допущен ряд архитектурных недочетов в модуле ПодключаемоеОборудование. Система при получении данных от сканера инициирует «жадный» поиск, пытаясь сопоставить полученную строку не только с классическим справочником ШтрихкодыНоменклатуры, но и со справочниками упаковок и кодов маркировки.

Если алгоритм не может однозначно определить тип считанного кода (например, из-за схожести префиксов или отсутствия четких разделителей в потоке данных), программа открывает форму уточнения, предлагая пользователю выбрать товар вручную. Рекомендуется в первую очередь рассмотреть возможность обновления конфигурации до актуальных версий (2.3.10 и выше), где логика работы с DataMatrix и EAN-13 была разделена на уровне обработчиков событий.

Проанализируем настройку сканера штрихкодов: Keyboard vs COM

Одной из самых частых причин появления лишних окон является работа сканера в режиме эмуляции клавиатуры (HID-device). Выясним, почему это критично:

  1. В режиме клавиатуры данные передаются в систему посимвольно, как если бы их печатал человек.
  2. Если скорость передачи данных низкая или в системе наблюдаются задержки, 1С может интерпретировать начало штрихкода как команду для поиска.
  3. Самое главное: отсутствие настроенного суффикса. Система 1С должна понимать, где заканчивается штрихкод.

Чтобы решить проблему на уровне оборудования, выполним следующие шаги:

Шаг 1. Перевод в режим COM-порта. Мы крайне рекомендуем перевести сканер в режим эмуляции COM-порта (через сервисные коды из инструкции к сканеру). В этом случае 1С будет использовать драйвер устройства, который генерирует событие ВнешнееСобытие. Это исключает попадание символов в поля ввода и гарантирует, что система получит весь код целиком до начала обработки.

Шаг 2. Настройка суффикса. Если вы вынуждены использовать режим клавиатуры, убедитесь, что в настройках сканера (и в самой 1С в разделе «Подключаемое оборудование») установлен суффикс #13 (Возврат каретки - CR). Именно этот символ служит для 1С сигналом того, что чтение завершено и можно приступать к поиску в базе данных без вывода лишних диалогов.

Проверим дубли штрихкодов и настройки префиксов

Рассмотрим ситуацию, когда физически штрихкод один, но в базе данных он привязан к нескольким объектам. Это классическая причина появления окна выбора. Проанализируем регистр сведений ШтрихкодыНоменклатуры. Если один и тот же Штрихкод (например, начинающийся на 64384) зарегистрирован для двух разных карточек номенклатуры или для двух разных характеристик одного товара, система всегда будет открывать окно уточнения.

Также стоит проверить настройки префиксов весового товара. В 1С:Розница в разделе Администрирование — Номенклатура — Штрихкодирование задаются префиксы для штучных и весовых товаров. Если ваш штрихкод начинается на цифру, которая совпадает с префиксом весового товара (обычно это 2), система попытается «разобрать» этот код как весовой, не найдет веса в нужных позициях и выведет окно поиска. Для гибкой настройки работы с нестандартными префиксами подойдёт расширение для обработки весовых штрихкодов различной длины и формата.

Выясним особенности разбора DataMatrix при включенной маркировке

После установки признака учета обувной продукции в настройках программы, включаются дополнительные обработчики в форме РМК. Система начинает ожидать коды формата GS1 DataMatrix. Посмотрим на пример типичного кода маркировки обуви. Он содержит в себе GTIN товара (который по структуре совпадает с EAN-13).

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

Настройка быстрого поиска в РМК

Разберем еще один нюанс, скрытый в настройках самого рабочего места кассира. Перейдем в Маркетинг — Настройки РМК. Здесь есть опции, отвечающие за поиск товара.

  1. Найдем параметр «Использовать быстрый поиск». Если эта опция включена, система пытается искать товар по любому введенному символу. При сканировании в режиме клавиатуры символы попадают в строку поиска, и система мгновенно реагирует, открывая окно результатов.
  2. Проверим список полей, по которым осуществляется поиск. Мы рекомендуем оставить только «Штрихкод» для ускорения процесса и исключения ложных срабатываний по артикулу или коду.

Технический анализ через отладчик

Если вышеуказанные меры не помогли, нам как специалистам необходимо прибегнуть к отладке. Рассмотрим, в каком месте кода генерируется открытие окна. Нам интересна процедура ОбработкаОповещения в модуле формы РМК или общая форма поиска номенклатуры.

Проанализируем примерный фрагмент кода, который отвечает за принятие решения о выводе окна:


// Пример логики обработки штрихкода в РМК
ДанныеШтрихкода = РаботаСоШтрихкодами.СформироватьСтруктуруШтрихкода(СчитанныйШтрихкод);
РезультатПоиска = РаботаСоШтрихкодами.НайтиПоШтрихкоду(ДанныеШтрихкода);

Если РезультатПоиска.Количество() > 1 Тогда
    // Если найдено более одного соответствия, 1С всегда откроет окно выбора
    ОткрытьФормуПоискаИУточнения(ДанныеШтрихкода);
ИначеЕсли РезультатПоиска.Количество() = 0 Тогда
    // Если товар не найден, также открывается окно поиска
    ОткрытьФормуПоискаИУточнения(ДанныеШтрихкода);
КонецЕсли;

В процессе отладки следует обратить внимание на переменную СчитанныйШтрихкод. Если в ней присутствуют лишние непечатные символы, пробелы или "мусор" от префиксов/суффиксов сканера, функция НайтиПоШтрихкоду вернет пустой результат, что и спровоцирует появление назойливого окна.

Итоги и рекомендации

Подводя итог, можно составить чек-лист для исправления ситуации:

  1. Обновите конфигурацию: Переход с релиза 2.3.3.12 на более современный решает 80% проблем с логикой маркировки. Для регулярной автоматической установки релизов на нескольких базах используется программа автоматического обновления баз 1С.
  2. Настройте оборудование: Используйте режим COM-эмуляции и обязательно проверьте наличие суффикса #13.
  3. Очистите кэш: Иногда настройки торгового оборудования «зависают» в кэше пользователя. Очистите папку %AppData%\1C\1Cv8 на рабочем месте кассира.
  4. Проверьте данные: Убедитесь в отсутствии дублей в регистре ШтрихкодыНоменклатуры.

Выполнив эти шаги, мы добьемся стабильной работы 1С:Розница 2.3, при которой сканирование будет происходить мгновенно и без лишних диалоговых окон, независимо от того, включена маркировка в системе или нет.

← На главную