Почему при сканировании маркировки в 1С появляются скобки (01) и (21) и как исправить ошибку валидации кода

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

При работе с системой маркировки «Честный ЗНАК» многие пользователи сталкиваются с тем, что один и тот же код выглядит по-разному при считывании в обычный текстовый редактор (Блокнот) и в программу 1С. В Блокноте код отображается как сплошная строка символов, а в 1С в нем появляются круглые скобки вокруг цифр 01 и 21. В этой статье мы подробно разберем, почему это происходит, проанализируем структуру кода GS1 DataMatrix и выясним, какие настройки оборудования необходимы для успешной валидации марки.

Разбираем структуру кода: почему появляются скобки?

Первое, что нам необходимо понять: появление скобок в интерфейсе 1С — это не ошибка, а работа встроенных алгоритмов разбора стандарта GS1. Код маркировки состоит из нескольких групп данных, которые разделяются специальными идентификаторами применения (Application Identifiers, AI). Рассмотрим основные из них:

  1. (01) — это идентификатор GTIN (глобальный номер товарной продукции), состоящий из 14 цифр.
  2. (21) — это идентификатор серийного номера упаковки.
  3. (91) — идентификатор ключа проверки.
  4. (92) — идентификатор криптографической подписи (криптохвоста).

В самом штрихкоде, напечатанном на товаре, скобок нет. Однако стандарт GS1 требует, чтобы при визуальном представлении кода для человека эти идентификаторы выделялись скобками. Программа 1С, используя драйвер 1C:Сканер штрихкода, распознает структуру DataMatrix и автоматически добавляет скобки для наглядности. Если в Блокноте вы видите «голый» текст, это означает, что сканер работает в режиме эмуляции клавиатуры и передает данные «как есть», не понимая, что перед ним код маркировки.

Проблема спецсимволов и символа GS (ASCII 29)

Проанализируем ситуацию, когда код в Блокноте и в 1С различается не только скобками, но и самими символами в «хвосте» кода. Одной из главных причин является символ GS (Group Separator). Этот непечатный символ с кодом ASCII 29 служит разделителем между блоками данных переменной длины (например, после серийного номера перед криптохвостом). Часто возникает проблема символа GS при сканере, подключенном в разрыв клавиатуры, так как при таком способе подключения спецсимволы могут теряться или заменяться.

Разберем по шагам, что происходит при разных режимах работы сканера:

  1. Режим эмуляции клавиатуры (HID): Сканер имитирует нажатие клавиш на клавиатуре. Символ GS не имеет графического отображения, поэтому Windows или драйвер сканера могут заменить его на нажатие функциональной клавиши (например, F12) или просто проигнорировать. В результате 1С не видит разделителя и не может правильно распарсить структуру кода.
  2. Режим эмуляции COM-порта (USB-Serial): Сканер передает данные в виде последовательности байтов напрямую в 1С. Это наиболее надежный метод, реализующий корректное чтение данных из COM порта сканера штрих-кода, так как символ GS передается без искажений, и 1С может корректно идентифицировать все части марки.

Влияние раскладки клавиатуры и региональных настроек

Если ваш сканер работает в режиме HID, критически важным фактором становится текущая раскладка клавиатуры в операционной системе. Выясним причину искажения символов:

Код маркировки содержит символы латиницы, цифры и спецсимволы (;, /, =). Если в момент сканирования в Windows включена русская раскладка, сканер «нажмет» клавиши, соответствующие английским буквам, но система интерпретирует их как русские. Например, символ ; может превратиться в букву ж или другой знак, что мгновенно делает код невалидным для системы «Честный ЗНАК».

Для решения этой проблемы мы рекомендуем:

Настройка символа FNC1 и проверка длины кода

Рассмотрим еще одну техническую тонкость. Корректный код GS1 DataMatrix должен начинаться со специального невидимого признака FNC1. Этот символ сообщает сканеру и программному обеспечению, что данные закодированы по стандарту GS1. Если при печати этикеток этот символ был пропущен, 1С может отказаться воспринимать код как маркировку, даже если визуально он кажется правильным.

Также проанализируем ограничение по количеству знаков. Некоторые модели сканеров по умолчанию могут иметь лимит на длину считываемой строки. В случае с маркировкой воды, где код может содержать 31 символ, или в ситуациях, когда рассматривается маркировка обуви и решение проблем сканирования, сканер может просто «обрезать» часть криптохвоста. Без полной последовательности символов проверка подписи в системе «Честный ЗНАК» всегда будет выдавать ошибку «Код не найден».

Пошаговая инструкция по исправлению проблем с валидацией

Рассмотрим последовательность действий, которые помогут нам настроить оборудование правильно:

  1. Тестирование сканера: Зайдите в 1С в раздел «Администрирование» — «Подключаемое оборудование». Откройте настройки вашего сканера и нажмите кнопку «Тест устройства». Выполните сканирование марки. Обратите внимание на наличие префикса 'GS' в результатах теста.
  2. Перевод в режим COM: Если сканер работает как клавиатура, найдите в инструкции к нему управляющий штрихкод для перевода в режим USB-COM (или USB-Serial). После этого в 1С нужно будет изменить тип подключения и выбрать соответствующий COM-порт.
  3. Настройка префиксов и суффиксов: Убедитесь, что в настройках драйвера в 1С не установлены лишние префиксы, которые могут добавляться к коду. Стандартный суффикс обычно — CR (13).
  4. Проверка через мобильное приложение: Если 1С не принимает код, попробуйте использовать приложение проверки маркировки в разрешительном режиме для Android устройств — в качестве альтернативы подойдёт мобильный терминал для работы с маркировкой в 1С. Если мобильное приложение распознает код, значит проблема в настройках вашего сканера или драйвера 1С. Если же и приложение выдает ошибку — проблема в самой печати кода (отсутствие FNC1 или некорректная генерация GTIN).

Пример анализа считанного кода

Рассмотрим пример того, как должен выглядеть результат обработки в 1С:


// Пример структуры, которую получает 1С после парсинга
ДанныеМаркировки = Новый Структура;
ДанныеМаркировки.Вставить("GTIN", "04603738004003");
ДанныеМаркировки.Вставить("СерийныйНомер", "5G;Qe55/ne=EE");
ДанныеМаркировки.Вставить("Криптохвост", "93e92j");

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

Важный момент: если вы используете типовые конфигурации (УТ 11, Розница 2.3, БП 3.0), за обработку кодов отвечает встроенный механизм интеграции с ИС МП. Учитывайте, что с недавнего времени был введен разрешительный режим на кассах для онлайн-проверки в Честном знаке, который предъявляет повышенные требования к корректности считанных данных — для работы касс в этом режиме поможет драйвер подключения онлайн-касс с разрешительным режимом. В некоторых случаях помогает обновление драйвера 1C:Сканер штрихкода до последней версии, где исправлены ошибки разбора длинных последовательностей в режиме клавиатуры.

Подводя итог, можно сказать, что в большинстве случаев проблема решается переходом на COM-эмуляцию и тщательной проверкой настроек символа GS. Помните, что визуальное наличие скобок в 1С — это признак того, что программа пытается работать по стандарту, и это хороший знак.

← На главную