При переходе на обязательную маркировку товаров («Честный ЗНАК») многие пользователи старых конфигураций 1С, таких как «Розница 2.0», сталкиваются с проблемой некорректного распознавания кодов DataMatrix. Вместо привычной последовательности символов программа выдает «кашу» из непонятных знаков, хотя в обычном текстовом редакторе (Блокноте) тот же код отображается правильно. В этой статье мы подробно разберем причины этой ситуации и пошагово внедрим решения, которые помогут настроить стабильную работу торгового оборудования.
Для начала проанализируем пример искажения. В исходном сообщении автор приводит два варианта одного и того же кода:
010290002001498921MMjqKQrCx,tTs91EE0692q8VTkrRswEn7b/mTspj8W5z8pJBkARn6UpZWolG0qkU=010290002001498921> A _5? C.IA91##0692DBC49 :!G15 K91##069298 ;: KF#B78.L K7>8&5O87 ;$ B6 7/&I4 09; =Разберем ситуацию. Мы видим, что первая часть кода (GTIN товара), состоящая из цифр, считывается верно. Проблемы начинаются во второй части — так называемом «криптохвосте», где используются символы разного регистра и спецсимволы. Это происходит из-за того, что сканер работает в режиме HID-клавиатуры. Для системы 1С такое сканирование выглядит как очень быстрое нажатие клавиш пользователем. Если в этот момент в Windows включена русская раскладка, драйвер пытается «перевести» нажатия клавиш на текущий язык, что превращает код в набор нечитаемых символов.
Как показала практика участников форума, наиболее эффективным способом решения проблемы для старых версий конфигураций является обновление компоненты ScanOPOS. Рассмотрим этот процесс подробнее.
Старые драйверы ScanOPOS (версий ниже 8.0.17) не были рассчитаны на работу с длинными последовательностями символов и специфическими разделителями групп данных (символ GS). Установка версии ScanOPOS_8.0.17.3 или выше позволяет драйверу корректно перехватывать поток данных от сканера-клавиатуры и игнорировать текущую раскладку Windows.
Пошаговый алгоритм действий:
.exe или .zip.Если обновление драйвера не помогло или вы хотите добиться максимально стабильной работы, разберем перевод сканера в режим VCP (Virtual COM Port). Это профессиональный стандарт работы с маркировкой.
В режиме клавиатуры сканер передает данные медленно и зависим от фокуса ввода. В режиме COM-порта данные передаются мгновенно и напрямую в драйвер 1С, минуя буфер клавиатуры и языковые настройки ОС.
Проанализируем шаги перехода на COM-порт:
Global Pos GP-3300). Вам нужно считать управляющий штрихкод «USB COM Mode» или «Enable Virtual COM».COM3).Если вы вынуждены продолжать работу в режиме клавиатуры (HID), необходимо убедиться, что система правильно обрабатывает символ-разделитель GS (Group Separator, код ASCII 29). В кодах DataMatrix он отделяет GTIN и серийный номер от ключа проверки.
Выясним причину искажения через раскладку. Если при сканировании в 1С установлена русская раскладка (RU), то символ / может превратиться в ., а Q в Й. Некоторые программисты используют программные методы «подрезки» кода, но это не рекомендуется для маркировки, так как код должен передаваться в систему полностью.
Рассмотрим пример кода, который часто используется для обработки событий сканирования в старых формах, если вы решите обрабатывать данные вручную:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Событие = "Barcode" Тогда
// Очищаем считанные данные от лишних символов,
// если драйвер добавляет префиксы
Штрихкод = СокрЛП(Данные);
// В старых конфигурациях может потребоваться проверка
// на длину для идентификации DataMatrix
Если СтрДлина(Штрихкод) > 30 Тогда
// Обработка кода маркировки
ОбработатьКодМаркировки(Штрихкод);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Однако помните, что ручная обработка — это крайняя мера. Правильно настроенный драйвер ScanOPOS версии 8.0.17.3 или переход на NativeApi решают проблему искажения символов автоматически, так как они умеют самостоятельно переключать контекст ввода или считывать скан напрямую.
Проанализируем специфику бюджетных сканеров, таких как Global Pos. Часто у них по умолчанию отключена передача управляющих символов GS1. Если вы обновили драйвер, но код все равно «склеивается» или не проходит проверку в 1С, попробуйте следующее:
Recall Default).Enable GS1 DataMatrix.Важный момент: если вы работаете в терминальной сессии (RDP), использование режима клавиатуры практически всегда будет приводить к ошибкам из-за задержек сети. В этом случае проброс COM-порта через RDP является единственным надежным решением.
Подводя итог, мы выяснили, что для исправления «абракадабры» при сканировании необходимо в первую очередь обновить драйвер ScanOPOS до версии не ниже 8.0.17.3, а в идеале — перевести оборудование в режим эмуляции COM-порта. Это исключит влияние раскладки клавиатуры и обеспечит корректную передачу криптохвоста маркировки в информационную базу.