При работе с маркированной продукцией (обувь, одежда, парфюмерия и др.) в программе 1С:Управление торговлей 11 пользователи часто сталкиваются с ситуацией: при сканировании кода DataMatrix программа либо выдает ошибку «Штрихкод не найден», либо считывает слишком длинную строку, которую невозможно сопоставить с базой. Давайте разберем, почему это происходит и как правильно настроить оборудование и программу для корректной идентификации товаров.
Проанализируем структуру кода маркировки Честного Знака. Он состоит из нескольких функциональных частей, разделенных специальными тегами (Application Identifiers, AI):
В базе 1С товар привязывается к «короткому» коду (обычно это GTIN + Серийный номер). Однако сканер при заводских настройках считывает всю строку целиком, включая огромный криптохвост. Если программа не понимает, где заканчивается серийный номер и начинается хвост, она пытается найти в справочнике Штрихкоды упаковок и товаров всю строку целиком. Естественно, такого соответствия в базе нет.
Согласно стандарту GS1 DataMatrix, части кода с переменной длиной (например, серийный номер после тега 21) должны отделяться от следующей части специальным невидимым символом — GS (Group Separator), имеющим код ASCII 29.
Если сканер работает в режиме эмуляции клавиатуры (HID), он часто просто игнорирует этот символ или заменяет его на пробел. Без этого разделителя 1С не может «разрезать» считанную строку на смысловые части. Программа видит монолитный текст и не понимает, что 91802992... — это уже не часть серийного номера, а служебная информация. Для устранения этой проблемы при работе сканера в режиме клавиатуры пригодится статья с разбором устранения потери символа GS.
Большинство современных сканеров поставляются в режиме «клавиатуры». Это удобно для простых EAN-13, но губительно для маркировки. Рассмотрим, почему это так:
GS теряются, а раскладка клавиатуры (русская/английская) может исказить спецсимволы в криптохвосте (например, символы /, +, =).GS1 и корректно отсекает всё лишнее.Для того чтобы 1С начала корректно «узнавать» марки, выполним следующие действия:
Найдите инструкцию к вашему сканеру и считайте управляющий штрихкод для включения режима USB-COM или USB Serial Emulation. После этого в диспетчере устройств Windows в разделе «Порты (COM и LPT)» должно появиться новое устройство (например, Virtual COM Port).
Перейдем в раздел НСИ и администрирование -> Администрирование -> РМК и оборудование -> Подключаемое оборудование.
1С:Сканеры штрихкода (NativeApi).CR (код 13).Воспользуйтесь встроенным тестом в настройках оборудования 1С. При сканировании в окне теста вы должны увидеть не просто строку, а структурированные данные. Если в строке вместо символа разделителя отображается пустой квадрат или символ #29, значит, сканер настроен верно.
Если даже в режиме COM-порта 1С продолжает считывать полную строку, выясним причину в самом коде маркировки. Иногда поставщики печатают код как обычный DataMatrix вместо GS1 DataMatrix. Разница в том, что в начале правильного кода должен стоять спецсимвол FNC1. Если его нет, 1С не включит алгоритм разбора GS1. Для исправления таких кодов маркировки можно использовать обработку для добавления невидимых символов GS в код маркировки.
Проверить это можно простым кодом на встроенном языке (для программистов), чтобы посмотреть, что именно приходит от сканера в процедуру обработки внешнего события:
// Пример анализа входных данных в модуле формы
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Данные — это считанный штрихкод
Сообщить("Считано символов: " + СтрДлина(Данные));
Сообщить("Сырые данные: " + Данные);
// Попробуем найти символ GS вручную
Если Найти(Данные, Символ(29)) > 0 Тогда
Сообщить("Разделитель GS найден на позиции: " + Найти(Данные, Символ(29)));
Иначе
Сообщить("Внимание: Разделитель GS отсутствует!");
КонецЕсли;
КонецПроцедуры
Важно помнить, что в 1С:УТ 11 поиск маркированного товара через обычное поле «Поиск по штрихкоду» (куда вводятся EAN-13) может работать нестабильно. Рассмотрим правильный алгоритм действий пользователя:
Реализация товаров и услуг или Приобретение товаров и услуг).GTIN из марки с товаром в вашей базе.Если вы видите в Честном Знаке короткий код, а сканер выдает длинный — это нормально. Криптохвост не хранится в вашей базе «навечно», он нужен только в момент проверки и выбытия марки. Задача настройки оборудования — научить 1С отделять «зерна» (идентификатор товара) от «плевел» (технической подписи).
Резюмируем: для исправления ошибки «лишних символов» не нужно писать расширения для обрезки строки. Нужно обеспечить передачу символа GS через режим COM-эмуляции и использовать актуальные версии драйверов 1С. Это позволит встроенным механизмам конфигурации самостоятельно и корректно обрабатывать любые коды маркировки.