Ошибка «Недопустимый формат штрихкода» при сканировании маркировки в 1С:Розница: причины и решение

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

При работе с маркированным товаром в программе 1С:Розница 2.3 пользователи часто сталкиваются с ошибкой «Недопустимый формат штрихкода». Эта проблема возникает в момент сканирования кода DataMatrix на кассе. Система отказывается принимать код, хотя визуально он кажется верным, а при проверке через мобильное приложение «Честный ЗНАК» товар успешно определяется. Рассмотрим подробнее, почему это происходит и как настроить оборудование и программу для корректной работы.

Суть проблемы и структура кода маркировки

Для начала проанализируем ситуацию: код маркировки — это не просто текст, а сложная последовательность данных формата GS1 DataMatrix. Он состоит из нескольких групп идентификаторов применения (AI): 01 (GTIN), 21 (серийный номер) и так называемого «криптохвоста» (ключ и код проверки). Разберем по шагам, что видит программа. Если сканер настроен неверно, он может передавать лишние символы (например, скобки вокруг идентификаторов) или, наоборот, «проглатывать» невидимые символы-разделители GS (ASCII 29).

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

Решение 1: Перевод сканера в режим эмуляции COM-порта

Самая распространенная причина ошибки — работа сканера в режиме клавиатуры (HID). В этом режиме сканер имитирует быстрый набор текста. Рассмотрим, почему это плохо для маркировки:

Рекомендуемые действия:

  1. Найдите инструкцию к вашему сканеру и считайте управляющий штрихкод для перевода в режим USB-COM (Serial Emulation).
  2. Установите соответствующий драйвер виртуального COM-порта от производителя сканера в операционной системе.
  3. В 1С перейдите в раздел Администрирование — Подключаемое оборудование.
  4. Измените настройки сканера, выбрав соответствующий COM-порт. Обязательно проверьте, что используется современный драйвер 1С:Сканеры штрихкода (NativeApi).

Решение 2: Настройка передачи символа GS и префиксов

Если перевод в COM-режим по каким-то причинам невозможен, нужно убедиться, что сканер в режиме клавиатуры передает разделители корректно. Проанализируем ситуацию: 1С требует наличия признака символики ]d2 в начале кода или корректной обработки ASCII-кода 29.

Выясним причину, по которой 1С «ругается» на отсутствие криптохвоста. Это часто случается, если сканер обрезает данные из-за слишком большой длины кода или некорректно обрабатывает символ = в конце строки (Base64). Чтобы исправить это, в настройках самого сканера (через сервисные коды) нужно:

Решение 3: Обновление Библиотеки подключаемого оборудования (БПО)

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

  1. Зайдите в Администрирование — Подключаемое оборудование — Драйверы оборудования.
  2. Найдите драйвер 1С:Сканеры штрихкода.
  3. Нажмите кнопку «Обновить из файла» или убедитесь, что версия компоненты актуальна (не ниже 10.x или 11.x для NativeApi).

Именно новые версии драйверов умеют корректно обрабатывать «длинные хвосты» маркировки молочной продукции, воды и одежды, которые содержат символы == в конце.

Решение 4: Отключение локальной проверки кодов

В некоторых случаях, когда маркировка выпущена с нарушениями или имеет специфический формат, 1С блокирует продажу на этапе предварительной проверки. Если вы уверены, что товар легален, можно временно изменить настройки системы, чтобы проверку выполнял только фискальный накопитель и ГИС МТ (Честный ЗНАК).

Рассмотрим, где это настраивается:

  1. Перейдите в раздел Администрирование — Настройки маркировки.
  2. Найдите параметры проверки кодов маркировки.
  3. Попробуйте отключить опцию «Проверять коды маркировки средствами оператора ЦРПТ» в настройках сканирования. Это позволит программе просто передавать считанную строку в ККТ без строгой локальной валидации формата.

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

Проверка корректности считывания

Чтобы окончательно убедиться, что проблема в сканере, а не в программе, выполните тест. Откройте обычный текстовый редактор (Блокнот) и считайте туда проблемный код. Посчитайте количество символов и сравните его с кодом, который «проходит». Если в блокноте вы видите, что символы == или латинские буквы заменяются на другие знаки — проблема на 100% в настройках сканера или раскладке клавиатуры.

Пример корректно настроенного вызова в коде 1С (внутренние механизмы БПО):


// Пример того, как БПО обрабатывает входящие данные от сканера
ДанныеШтрихкода = СчитатьШтрихкод(Порт);
Если ПроверитьФорматGS1(ДанныеШтрихкода) Тогда
    // Обработка GTIN и серийного номера
    ЗаполнитьДокументПродажи(ДанныеШтрихкода);
Иначе
    Предупреждение("Недопустимый формат штрихкода");
КонецЕсли;

Используйте функцию «Тест устройства» в настройках подключаемого оборудования 1С. В окне теста при сканировании вы должны увидеть не просто строку, а четко определенный тип кода: DataMatrix или GS1 DataMatrix. Если тип определяется как Code128 или Unknown, 1С не сможет обработать маркировку.

← На главную