Как исправить ошибку «Отсутствует полный код маркировки» при продаже в 1С:Розница?

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

При работе с маркированным товаром, в частности с одеждой и товарами легкой промышленности в программе 1С:Розница 2.3, пользователи часто сталкиваются с системным сообщением: "Найдена ошибка при проверке кода по причине: Отсутствует полный код маркировки". Эта ошибка блокирует продажу и не позволяет пробить чек, требуя перейти в форму проверки для повторного сканирования — для этого есть проверка кодов маркировки на складе для 1С. Рассмотрим подробно, почему возникает эта проблема и как ее решить техническими средствами.

Суть проблемы: что такое «полный код» для 1С?

Для начала проанализируем, как устроена структура маркировки GS1 DataMatrix. Код, который мы видим на упаковке, состоит из нескольких частей: GTIN (14 цифр), индивидуальный серийный номер и так называемый криптохвост (ключ проверки и код проверки). Именно наличие криптохвоста делает код «полным» с точки зрения криптографической защиты «Честного знака».

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

Причина 1: Некорректная печать кодов поставщиком

Как отмечается в обсуждениях, самой банальной причиной может быть физическое отсутствие криптохвоста на самой этикетке. Некоторые недобросовестные или технически неграмотные поставщики при «перемаркировке» или печати дубликатов копируют только визуальную часть кода или его текстовое представление, забывая о криптографической части. Проверить это можно, отсканировав код в обычный текстовый «Блокнот». Если длина считанной строки составляет всего 31 символ (или около того), значит, криптохвоста там нет. Настоящий полный код значительно длиннее (обычно более 40-80 символов в зависимости от товарной группы). Для этой задачи есть мобильное решение для сканирования маркировки.

Причина 2: Настройка сканера в режиме эмуляции клавиатуры

Разберем техническую настройку оборудования. Это самая частая причина «невидимости» хвоста для программы. Большинство сканеров «из коробки» работают в режиме HID (эмуляция клавиатуры). В этом режиме сканер просто «печатает» символы туда, где стоит курсор. Проблема заключается в том, что стандарт GS1 DataMatrix содержит непечатный управляющий символ GS (ASCII 29) или FNC1, который служит разделителем групп данных.

Если сканер работает как клавиатура, он может «проглатывать» эти спецсимволы или некорректно обрабатывать последующую часть кода. Рассмотрим шаги по исправлению:

  1. Переведите сканер в режим Native USB (или COM-эмуляция). Для этого нужно найти в инструкции к вашей модели (например, Zebra, Honeywell, DataLogic) специальный управляющий штрихкод.
  2. После этого в операционной системе появится виртуальный COM-порт.
  3. В 1С перейдите в раздел Администрирование — РМК и оборудование — Подключаемое оборудование.
  4. Для вашего сканера штрихкода выберите драйвер «1С:Сканеры штрихкода» и в настройках укажите соответствующий номер COM-порта.

В таком режиме 1С получает данные напрямую через драйвер («сырые данные»), что гарантирует передачу полной строки кода со всеми скрытыми идентификаторами.

Причина 3: Идентификатор символики (Aim ID)

Современные версии БСП (библиотеки стандартных подсистем) в 1С требуют, чтобы сканер передавал префикс типа штрихкода. Для DataMatrix это префикс ]d2. Если эта настройка (обычно называется Code ID или Aim ID) отключена в самом сканере, 1С может не распознать структуру кода как правильный GS1 и посчитать его неполным. Проанализируйте настройки вашего устройства и включите передачу идентификатора символики.

Причина 4: Таймаут при передаче данных

Если вы всё же используете сканер в режиме клавиатуры, обратите внимание на параметр «Таймаут между символами» в настройках драйвера в 1С. Посмотрим на ситуацию: сканер передает длинный код маркировки, но делает это с небольшими задержками. 1С может «разорвать» одну длинную строку на две короткие. В результате первая часть (без хвоста) попадает в обработку, и система выдает ошибку. Установите таймаут в значение 0 или увеличьте его до 75-100 мс, чтобы 1С дожидалась окончания передачи всей посылки данных от сканера.

Причина 5: Ошибки при приемке через ЭДО

Проанализируем процесс поступления товара. Если вы принимали товар через ЭДО, в системе 1С в справочнике Штрихкоды упаковок создаются соответствующие записи. В ЭДО криптохвосты обычно не передаются (передается только GTIN и серийный номер), однако при розничной продаже 1С сопоставляет отсканированный физический код с данными в базе. Если в настройках интеграции с ИС МП (Честный знак) включена строгая проверка, а сканер настроен неверно, система не сможет «собрать» пазл из того, что пришло по ЭДО и того, что считал сканер.

Практические рекомендации по отладке

Чтобы точно выяснить, на каком этапе «теряется» хвост, выполните следующие действия:

  1. Откройте форму Тест устройства в настройках сканера штрихкода внутри 1С.
  2. Отсканируйте проблемный код маркировки.
  3. Посмотрите на результат в поле «Данные». Если вы видите строку, начинающуюся с (01)... и содержащую спецсимволы в угловых скобках типа <GS>, значит сканер настроен верно.
  4. Если в тесте отображается короткая строка без разделителей — проблема в настройке самого «железа» (нужно включать COM-режим или GS1-parsing).
  5. Если сканер выдает всё верно, но ошибка сохраняется — проверьте версию драйвера. Рекомендуется использовать драйвер версии не ниже 10.X.

Как поступить, если код действительно «битый»?

Если выяснилось, что поставщик действительно распечатал коды без криптохвоста (это часто бывает на одежде из старых партий или при нарушении технологии печати), у вас есть два пути:

Рассмотрим ситуацию с кодом маркировки на примере. Правильный код в сыром виде должен выглядеть примерно так:

010460123456789021ABC12345<GS>91FF01<GS>92dGVzdGRhdGExMjM0NTY3ODkw

Где <GS> — это тот самый разделитель, который теряется при неправильной настройке оборудования. Если ваш сканер выдает только 010460123456789021ABC12345, 1С закономерно сообщит об отсутствии полной маркировки — есть распознавание поврежденных кодов DataMatrix.

Таким образом, решение проблемы чаще всего кроется в правильной настройке сканера (переход на COM/Native USB) и обновлении драйверов оборудования до актуальных версий, совместимых с релизом 1С:Розница 2.3.25.17.

← На главную