При переходе на новые релизы 1С:Управление торговлей 10.3 (начиная с 10.3.66.1 и выше) многие пользователи сталкиваются с тем, что привычные сканеры штрихкодов перестают корректно считывать маркировку табачной продукции. Система выдает сообщение: «штрихкод не соответствует формату кода маркировки табачной продукции». Ситуация осложняется тем, что этот же сканер может отлично работать в других конфигурациях (например, в «Рознице») или успешно проходить тесты в блокноте.
В этой статье мы подробно разберем, почему возникает эта ошибка, и рассмотрим пошаговые инструкции по настройке торгового оборудования для корректной работы с системой «Честный Знак» в среде обычных форм 1С.
Проблема кроется в ужесточении проверок внутри программного кода 1С. В последних релизах конфигурация ожидает от сканера не просто строку с цифрами и буквами, а строго структурированную последовательность данных формата GS1 DataMatrix. Основная сложность заключается в невидимом спецсимволе GS (Group Separator, ASCII 29), который разделяет блоки данных в коде маркировки (например, GTIN, серийный номер и криптохвост).
Если ваш сканер настроен в режиме эмуляции клавиатуры (HID), он зачастую просто игнорирует этот символ или заменяет его на пробел/пустую строку. В результате 1С получает «слипшуюся» строку, которая не проходит валидацию регулярными выражениями в общем модуле РаботаСМаркировкой.
Как показывает практика, ручного сброса к заводским настройкам недостаточно. Рассмотрим алгоритм действий, который помог пользователям форума:
Важный нюанс: Обратите внимание на настройку раскладки клавиатуры в самом сканере. Для корректной передачи DataMatrix рекомендуется устанавливать режим Universal Keyboard или United States. Если сканер имитирует русскую раскладку, коды маркировки будут передаваться некорректно.
Проанализируем настройки торгового оборудования непосредственно в 1С:УТ 10.3. Даже если обычные товары пробиваются, маркировка требует более точной настройки. Проверим параметры драйвера:
13 (CR). В некоторых случаях система требует добавления второго суффикса 10 (LF).Совет: Если вы используете сканер в режиме клавиатуры, убедитесь, что в момент сканирования в Windows установлена английская раскладка. Также проверьте, не запущены ли программы-переключатели раскладки (например, Punto Switcher), которые могут искажать последовательность символов.
Это наиболее надежный способ решения проблем с маркировкой для 1С v8.3 (Обычные формы). В режиме COM-порта данные передаются напрямую в драйвер, минуя буфер клавиатуры и региональные настройки Windows.
USB Serial Emulation.1С: Сканеры штрихкода).COM-порта и установим параметр «Чувствительность» (или «Таймаут») в значение 0 или 5. Это предотвратит разрыв строки маркировки при передаче.Если настройки оборудования не помогают, проанализируем, как 1С выполняет проверку. В конфигурации УТ 10.3 за это отвечает процедура в общем модуле. Вы можете поставить точку останова в функции ПроверитьШтрихкодМаркировки, чтобы увидеть реальную строку, приходящую со сканера.
Зачастую проблема решается небольшой корректировкой регулярного выражения, если ваша продукция имеет специфический формат (например, безникотиновые смеси или альтернативный табак), который еще не включен в стандартный релиз. Пример места в коде, где происходит проверка:
// Пример логики проверки в общем модуле
Функция ПроверитьШтрихкодТабачнойПродукции(ЗначениеШтрихкода) Экспорт
// Если в строке отсутствуют символы разделителей,
// регулярное выражение вернет Ложь
РегулярноеВыражение = Новый COMОбъект("VBScript.RegExp");
РегулярноеВыражение.Pattern = "^[0-9]{14}[a-zA-Z0-9!""%&'*+-./_,:;=<>?]{7}.*";
Возврат РегулярноеВыражение.Test(ЗначениеШтрихкода);
КонецФункции
Если при отладке вы видите, что ЗначениеШтрихкода содержит лишние символы в начале (например, ]d2) или, наоборот, в нем отсутствуют обязательные группы данных, необходимо вернуться к настройке префиксов самого сканера. Символика ]d2 является идентификатором GS1 DataMatrix, и некоторые версии 1С требуют её наличия для идентификации типа штрихкода, в то время как другие — наоборот, не могут из-за неё распарсить строку.
Для стабильной работы с маркировкой в УТ 10.3 крайне важно использовать актуальную версию компоненты ScanOPOS.dll (не ниже 8.1.7.x). Старые версии драйвера 1С просто «не знают» о существовании длинных кодов DataMatrix и обрезают их при получении, что и вызывает ошибку соответствия формату.
Подводя итог: в 90% случаев проблема решается именно правильным программированием сканера на передачу символа GS и настройкой корректного суффикса в параметрах торгового оборудования 1С.