При настройке оборудования для работы с маркированными товарами (например, в 1С:Управление нашей фирмой) пользователи часто сталкиваются с сообщением «Недопустимый формат штрихкода» при попытке считать код Data Matrix. Давайте разберемся, почему это происходит и как устранить данную ошибку совместными усилиями.
Основная причина кроется в том, как именно сканер передает данные в систему. Если ваш сканер настроен в режиме «эмуляции клавиатуры» (Keyboard Wedge), он пытается передать считанный штрихкод как последовательность нажатий клавиш. Однако коды маркировки, используемые в системе «Честный ЗНАК», имеют сложную структуру.
Они содержат специальные непечатаемые служебные символы (например, разделитель групп GS, код ASCII 29). Стандартный драйвер клавиатуры просто «не понимает» эти символы, либо игнорирует их, либо заменяет на неверные знаки. В результате 1С получает поврежденную строку, которая не соответствует формату GS1 Data Matrix, и выдает ошибку.
Чтобы система 1С могла корректно распознавать структуру кода, необходимо обеспечить передачу данных как потока байтов, сохранив при этом все спецсимволы. Это достигается переводом устройства в режим VCOM (Virtual COM port).
Рассмотрим, как правильно выполнить переход и настроить оборудование:
STI 2100). Вам потребуется специальный настроечный штрихкод, который переводит устройство в режим эмуляции COM-порта.VCOM операционная система Windows должна увидеть новое устройство. Если она не может его распознать, скачайте официальный драйвер с сайта производителя вашего сканера. Часто это Virtual COM Port Driver.При использовании NativeAPI драйверов 1С, убедитесь, что они обновлены до последней версии. Старые библиотеки могут некорректно обрабатывать Data Matrix даже при правильном режиме работы сканера. Также стоит проверить настройки самого сканера на предмет «включения передачи GS символов» — это делается через управляющие штрихкоды из инструкции.
Если вы работаете в терминальной сессии (RDP), прямое подключение COM-порта может не сработать сразу. В таком случае рекомендуем использовать механизмы проброса локальных портов через настройки клиента RDP или использовать специализированные утилиты для проброса COM-портов, которые позволяют «видеть» локальный сканер как COM-порт внутри удаленной сессии.
Подводя итог, можно сказать, что режим эмуляции клавиатуры является «быстрым», но совершенно непригодным для профессиональной работы с маркировкой. Переход на VCOM — это стандарт де-факто, который обеспечивает стабильную работу с любыми форматами 2D-кодов. Если сканер не считывает последнюю цифру или выдает ошибку формата, первым делом проверяйте именно режим передачи данных, так как именно искажение служебных символов приводит к ошибкам в 1С.