При внедрении обязательной маркировки товаров, в частности обувной продукции, пользователи конфигурации 1С:Розница 2.3 часто сталкиваются с неприятной особенностью: при сканировании обычного штрихкода (EAN-13) в Рабочем месте кассира (РМК) система вместо автоматического добавления товара в корзину открывает диалоговое окно «Поиск номенклатуры по ШК». Это происходит даже для товаров, не подлежащих маркировке, и существенно замедляет работу магазина. Рассмотрим подробно, почему это происходит и как это исправить.
Первым делом проанализируем версию конфигурации. Релиз 2.3.3.12 был одним из первых, где разработчики внедряли механизмы глубокой интеграции с ИС МП (маркировкой). В этом релизе был допущен ряд архитектурных недочетов в модуле ПодключаемоеОборудование. Система при получении данных от сканера инициирует «жадный» поиск, пытаясь сопоставить полученную строку не только с классическим справочником ШтрихкодыНоменклатуры, но и со справочниками упаковок и кодов маркировки.
Если алгоритм не может однозначно определить тип считанного кода (например, из-за схожести префиксов или отсутствия четких разделителей в потоке данных), программа открывает форму уточнения, предлагая пользователю выбрать товар вручную. Рекомендуется в первую очередь рассмотреть возможность обновления конфигурации до актуальных версий (2.3.10 и выше), где логика работы с DataMatrix и EAN-13 была разделена на уровне обработчиков событий.
Одной из самых частых причин появления лишних окон является работа сканера в режиме эмуляции клавиатуры (HID-device). Выясним, почему это критично:
Чтобы решить проблему на уровне оборудования, выполним следующие шаги:
Шаг 1. Перевод в режим COM-порта. Мы крайне рекомендуем перевести сканер в режим эмуляции COM-порта (через сервисные коды из инструкции к сканеру). В этом случае 1С будет использовать драйвер устройства, который генерирует событие ВнешнееСобытие. Это исключает попадание символов в поля ввода и гарантирует, что система получит весь код целиком до начала обработки.
Шаг 2. Настройка суффикса. Если вы вынуждены использовать режим клавиатуры, убедитесь, что в настройках сканера (и в самой 1С в разделе «Подключаемое оборудование») установлен суффикс #13 (Возврат каретки - CR). Именно этот символ служит для 1С сигналом того, что чтение завершено и можно приступать к поиску в базе данных без вывода лишних диалогов.
Рассмотрим ситуацию, когда физически штрихкод один, но в базе данных он привязан к нескольким объектам. Это классическая причина появления окна выбора. Проанализируем регистр сведений ШтрихкодыНоменклатуры. Если один и тот же Штрихкод (например, начинающийся на 64384) зарегистрирован для двух разных карточек номенклатуры или для двух разных характеристик одного товара, система всегда будет открывать окно уточнения.
Также стоит проверить настройки префиксов весового товара. В 1С:Розница в разделе Администрирование — Номенклатура — Штрихкодирование задаются префиксы для штучных и весовых товаров. Если ваш штрихкод начинается на цифру, которая совпадает с префиксом весового товара (обычно это 2), система попытается «разобрать» этот код как весовой, не найдет веса в нужных позициях и выведет окно поиска. Для гибкой настройки работы с нестандартными префиксами подойдёт расширение для обработки весовых штрихкодов различной длины и формата.
После установки признака учета обувной продукции в настройках программы, включаются дополнительные обработчики в форме РМК. Система начинает ожидать коды формата GS1 DataMatrix. Посмотрим на пример типичного кода маркировки обуви. Он содержит в себе GTIN товара (который по структуре совпадает с EAN-13).
Если драйвер сканера настроен некорректно и «срезает» спецсимволы (такие как GS), или если сканер настроен на чтение только определенных типов кодов, 1С может ошибочно принять обычный штрихкод за неполный код маркировки. В этом случае срабатывает процедура ОбработкаШтрихкодов, которая, не найдя соответствия в справочнике ШтрихкодыУпаковок, принудительно открывает форму поиска для ручного подбора. Для решения этой проблемы можно использовать расширение для автоматического восстановления символов GS в кодах маркировки.
Разберем еще один нюанс, скрытый в настройках самого рабочего места кассира. Перейдем в Маркетинг — Настройки РМК. Здесь есть опции, отвечающие за поиск товара.
Если вышеуказанные меры не помогли, нам как специалистам необходимо прибегнуть к отладке. Рассмотрим, в каком месте кода генерируется открытие окна. Нам интересна процедура ОбработкаОповещения в модуле формы РМК или общая форма поиска номенклатуры.
Проанализируем примерный фрагмент кода, который отвечает за принятие решения о выводе окна:
// Пример логики обработки штрихкода в РМК
ДанныеШтрихкода = РаботаСоШтрихкодами.СформироватьСтруктуруШтрихкода(СчитанныйШтрихкод);
РезультатПоиска = РаботаСоШтрихкодами.НайтиПоШтрихкоду(ДанныеШтрихкода);
Если РезультатПоиска.Количество() > 1 Тогда
// Если найдено более одного соответствия, 1С всегда откроет окно выбора
ОткрытьФормуПоискаИУточнения(ДанныеШтрихкода);
ИначеЕсли РезультатПоиска.Количество() = 0 Тогда
// Если товар не найден, также открывается окно поиска
ОткрытьФормуПоискаИУточнения(ДанныеШтрихкода);
КонецЕсли;
В процессе отладки следует обратить внимание на переменную СчитанныйШтрихкод. Если в ней присутствуют лишние непечатные символы, пробелы или "мусор" от префиксов/суффиксов сканера, функция НайтиПоШтрихкоду вернет пустой результат, что и спровоцирует появление назойливого окна.
Подводя итог, можно составить чек-лист для исправления ситуации:
#13.%AppData%\1C\1Cv8 на рабочем месте кассира.ШтрихкодыНоменклатуры.Выполнив эти шаги, мы добьемся стабильной работы 1С:Розница 2.3, при которой сканирование будет происходить мгновенно и без лишних диалоговых окон, независимо от того, включена маркировка в системе или нет.