Как исправить ошибку «штрихкод не соответствует формату кода маркировки табачной продукции» в 1С:Управление торговлей 10.3?

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

При переходе на новые релизы 1С:Управление торговлей 10.3 (начиная с 10.3.66.1 и выше) многие пользователи сталкиваются с тем, что привычные сканеры штрихкодов перестают корректно считывать маркировку табачной продукции. Система выдает сообщение: «штрихкод не соответствует формату кода маркировки табачной продукции». Ситуация осложняется тем, что этот же сканер может отлично работать в других конфигурациях (например, в «Рознице») или успешно проходить тесты в блокноте.

В этой статье мы подробно разберем, почему возникает эта ошибка, и рассмотрим пошаговые инструкции по настройке торгового оборудования для корректной работы с системой «Честный Знак» в среде обычных форм 1С.

Выясним причину: почему формат кода считается неверным

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

Если ваш сканер настроен в режиме эмуляции клавиатуры (HID), он зачастую просто игнорирует этот символ или заменяет его на пробел/пустую строку. В результате 1С получает «слипшуюся» строку, которая не проходит валидацию регулярными выражениями в общем модуле РаботаСМаркировкой.

Решение 1: Настройка сканера через сервисы «Честного Знака»

Как показывает практика, ручного сброса к заводским настройкам недостаточно. Рассмотрим алгоритм действий, который помог пользователям форума:

  1. Перейдем на официальный портал проверки оборудования «Честного Знака».
  2. Выберем модель вашего сканера (например, Honeywell 1450g или Metrologic).
  3. Если вашей конкретной модели нет в списке, попробуйте использовать настройки от максимально близкой модели того же производителя (например, для MSC-6607 часто подходят настройки от MSC-6614).
  4. Распечатаем настроечные штрихкоды, которые активируют передачу спецсимволов и правильные префиксы.

Важный нюанс: Обратите внимание на настройку раскладки клавиатуры в самом сканере. Для корректной передачи DataMatrix рекомендуется устанавливать режим Universal Keyboard или United States. Если сканер имитирует русскую раскладку, коды маркировки будут передаваться некорректно.

Решение 2: Проверка суффиксов и префиксов в 1С

Проанализируем настройки торгового оборудования непосредственно в 1С:УТ 10.3. Даже если обычные товары пробиваются, маркировка требует более точной настройки. Проверим параметры драйвера:

  1. Откроем меню «Сервис» — «Торговое оборудование» — «Подключение и настройка торгового оборудования».
  2. Перейдем в параметры сканера штрихкода.
  3. Убедимся, что в поле «Суффикс» установлено значение 13 (CR). В некоторых случаях система требует добавления второго суффикса 10 (LF).
  4. Попробуем очистить поле «Префикс», если там установлены какие-либо значения, препятствующие распознаванию начала кода.

Совет: Если вы используете сканер в режиме клавиатуры, убедитесь, что в момент сканирования в Windows установлена английская раскладка. Также проверьте, не запущены ли программы-переключатели раскладки (например, Punto Switcher), которые могут искажать последовательность символов.

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

Это наиболее надежный способ решения проблем с маркировкой для 1С v8.3 (Обычные формы). В режиме COM-порта данные передаются напрямую в драйвер, минуя буфер клавиатуры и региональные настройки Windows.

  1. Считаем специальный штрихкод из инструкции к сканеру для перевода в режим USB Serial Emulation.
  2. Установим в операционной системе драйвер виртуального COM-порта от производителя (например, Honeywell HSM USB Serial Driver).
  3. В настройках торгового оборудования 1С заменим обработку обслуживания на ту, которая поддерживает работу с COM-портами (обычно это 1С: Сканеры штрихкода).
  4. В параметрах выберем соответствующий номер 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С.

← На главную