Почему в 1С возникает ошибка «Отсутствует полный код маркировки» при работе с ФФД 1.2 и как её исправить

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

С переходом на формат фискальных данных ФФД 1.2 требования к обработке кодов маркировки (КМ) в системе 1С и на стороне контрольно-кассовой техники (ККТ) существенно ужесточились — поможет комплексная настройка онлайн-касс для работы с маркировкой. Ошибка «Отсутствует полный код маркировки» — одна из самых распространенных при оформлении розничных продаж или пробитии чеков. В этой статье мы подробно разберем, почему она возникает, как устроена структура кода в 1С и какие настройки оборудования необходимо проверить, чтобы восстановить корректную работу системы.

Природа ошибки и структура кода маркировки

Проанализируем ситуацию: до внедрения ФФД 1.2 касса выступала лишь «принтером» для печати тегов, а проверку кода выполняла сама учетная система или ОФД постфактум. В новом формате касса обязана самостоятельно отправить запрос в систему «Честный ЗНАК» перед печатью чека для получения статуса проверки «М+» — для этого подойдёт настройка онлайн-касс с ФФД 1.2 без обновления конфигурации. Для этого кассе нужен полный код маркировки, включающий так называемую «крипточасть» или «криптохвост».

Разберем структуру кода DataMatrix. Он состоит из нескольких групп данных:

  1. GTIN (01): 14 цифр — идентификатор товара.
  2. Серийный номер (21): индивидуальный номер единицы товара.
  3. Ключ проверки (91) и Код проверки (92): те самые данные криптохвоста, которые делают марку уникальной и защищенной.

Ошибка «Отсутствует полный код маркировки» в 1С означает, что программа получила только первые две части кода (GTIN и серийный номер), но не увидела криптохвост. Без него сформировать запрос ЗапросНаПроверкуКМ по правилам ФФД 1.2 невозможно.

Причина №1: Использование кодов без криптохвоста из сторонних систем

Выясним причину, почему в документе 1С может оказаться «неполный» код. Часто сотрудники пытаются добавить товар в документ, копируя данные из личного кабинета «Честного ЗНАКа» или из входящих документов ЭДО.

Важно понимать: в системах ЭДО и в визуальном интерфейсе «Честного ЗНАКа» криптохвост часто не отображается или вообще не передается, так как он предназначен исключительно для процесса проверки при выбытии. Если вы просто скопировали текстовую строку вида (01)02900019351057(21)BB?RO*vg4SOZS, в ней отсутствует информация после идентификаторов применения 91 и 92. Такой код пригоден для инвентаризации, но непригоден для продажи через ККТ в режиме ФФД 1.2.

Для корректной работы необходимо сканировать именно оригинальный DataMatrix с упаковки товара. Только в нем содержится полная последовательность данных.

Причина №2: Хранение данных в 1С и невидимые колонки

Посмотрим на то, как 1С хранит эти данные. В современных конфигурациях, таких как 1С:Комплексная автоматизация или 1С:ERP, данные маркировки хранятся в специальных табличных частях документов. Рассмотрим пример объекта, где хранятся коды:


// В документах реализации или чеках ККМ информация о марках 
// содержится в табличной части "ШтрихкодыУпаковок".
// Полный код с криптохвостом записывается в поле "ЗначениеШтрихкода".

Как отмечают специалисты, крипточасть часто хранится в «невидимых» колонках или скрытых реквизитах. Если вы добавили товар в корзину, просто выбрав его из справочника или считав обычный штрихкод (EAN-13), 1С попросит вас «Считать код маркировки». На этом этапе крайне важно использовать сканер, который передаст полный код в обработку ПроверитьКодМаркировки.

Причина №3: Настройка сканера и спецсимвол GS (ASCII 29)

Проанализируем техническую сторону процесса сканирования. Код DataMatrix содержит невидимый разделитель — символ GS (Group Separator). Именно этот символ сообщает драйверу 1С, где заканчивается серийный номер и начинается криптохвост.

Если ваш сканер настроен в режиме Keyboard Emulation (Эмуляция клавиатуры), операционная система Windows часто «проглатывает» этот спецсимвол, воспринимая его как системное прерывание или просто игнорируя. В результате 1С получает «слипшуюся» строку, не может её распарсить и выдает ошибку о неполном коде.

Решение по шагам:

  1. Переведите сканер в режим USB-COM (эмуляция COM-порта). Для этого необходимо считать специальный управляющий штрихкод из инструкции к вашему сканеру.
  2. Установите соответствующий драйвер виртуального COM-порта (VCOM) от производителя сканера.
  3. В настройках «Подключаемое оборудование» в 1С выберите ваш сканер и укажите номер созданного COM-порта.
  4. Проверьте, что в настройках драйвера 1С для сканера не установлены лишние префиксы, которые могут искажать начало кода.

Причина №4: Настройки драйвера ККТ и сервера ОКП

Если сканер настроен верно, но ошибка сохраняется на этапе пробития чека, необходимо проверить параметры драйвера ККТ (например, Штрих-М или Атол) — есть настройка касс АТОЛ, ШТРИХ-М и Viki для ФФД 1.2. При работе с ФФД 1.2 касса должна иметь связь с сервером обновления ключей (ОКП) и сервером КМ.

Разберем ситуацию на примере драйвера «Штрих-М»:

  1. Откройте «Тест драйвера ККТ».
  2. Перейдите в раздел «Параметры ККТ» -> «Настройки ФФД 1.2».
  3. Убедитесь, что адрес сервера КМ и порт (обычно prod.okp-kkt.crpt.ru и порт 12345) прописаны корректно.
  4. Проверьте состояние ОКП (Отраслевой компонент подписи). Если ключ обновления КМ не загружен в кассу, она не сможет выполнить проверку кода, и 1С может интерпретировать это как проблему с самим кодом — решается через исправление ошибок связи 1С и ККТ АТОЛ.

Практический совет программисту: проверка через консоль

Если вы хотите убедиться, что проблема именно в данных, а не в кассе, проанализируйте содержимое табличной части документа через консоль запросов. Вам нужно проверить поле, где хранится считанный штрихкод. Полный код маркировки должен выглядеть примерно так:


010461012380450621"IITRnG_akZfk91EE0692OzzNtlnRQ6b8SyuEvIWM+oaAkVYBwYTCAzAON3sZ+Y0=

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

Пример кода для программного анализа считанной марки:


// Пример упрощенной проверки длины кода для ФФД 1.2
Если СтрДлина(СчитанныйКод) < 30 Тогда
    Сообщить("Внимание: считан код без криптохвоста! Проверьте настройки сканера.");
КонецЕсли;

Резюме

Для исправления ошибки «Отсутствует полный код маркировки» необходимо действовать комплексно:

Соблюдение этих шагов гарантирует успешное прохождение проверки КМ и корректное формирование фискального чека.

← На главную