Почему возникает ошибка «не удалось разобрать код маркировки» при продаже весового сыра через ЭДО в 1С?

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

При работе с маркированной молочной продукцией, особенно с весовым товаром, пользователи часто сталкиваются с трудностями при отправке документов через систему электронного документооборота (ЭДО). Рассмотрим типичную ситуацию: вы формируете реализацию на весовой сыр в программе 1С:Управление торговлей, например, на 2,1 кг. При попытке отправить универсальный передаточный документ (УПД) по ЭДО система выдает ошибку: «не удалось разобрать код маркировки (02)04610167520028(37)2,1. Код маркировки не соответствует ни одному шаблону». При этом реализации с целым весом (например, 10 кг) проходят без проблем.

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

Причина №1: Неверный десятичный разделитель

Первое, на что стоит обратить внимание в строке кода (02)04610167520028(37)2,1 — это использование запятой в качестве разделителя целой и дробной части веса. Согласно международным стандартам GS1, которые лежат в основе системы маркировки, в таких кодах в качестве десятичного разделителя должен использоваться символ «точка» (.), а не «запятая» (,).

Почему 1С формирует код с запятой?

Чаще всего это связано с региональными настройками операционной системы Windows. В российских настройках по умолчанию разделителем дробной части является запятая. Некоторые модули и обработки в 1С могут некорректно обрабатывать эти настройки и подставлять системный разделитель в код маркировки, что и приводит к ошибке. Хотя это не единственная причина, проверка региональных стандартов может помочь в диагностике.

Однако, даже если мы заменим запятую на точку, проблема не будет полностью решена. Корень зла лежит глубже — в самой структуре кода.

Причина №2: Некорректное использование идентификаторов применения (AI)

Чтобы понять основную ошибку, давайте разберемся со структурой кода маркировки. Код состоит из так называемых идентификаторов применения (Application Identifiers, AI), которые заключены в скобки. Каждый идентификатор сообщает системе, какие данные идут следом за ним.

Проанализируем проблемный код:

Здесь и кроется главная ошибка: программа пытается передать вес (дробное число 2,1) в поле, предназначенном для количества штук (целое число). Система "Честный ЗНАК" видит идентификатор (37), ожидает после него целое число, но получает "2,1", что не соответствует шаблону, и закономерно выдает ошибку. Если вам требуется оперативно перепечатать этикетку с верными данными, можно использовать дубликатор кодов маркировки DataMatrix, который поддерживает работу с различными КИЗами. Для предотвращения подобных сбоев есть решение для автоматизации обмена с ЦРПТ и проверки кодов.

Как должен выглядеть правильный код для весового товара?

Для указания веса товара с переменной массой в стандарте GS1 предусмотрен другой идентификатор — (3103). Он обозначает вес нетто в килограммах, но есть важный нюанс: значение после него должно быть представлено в виде шестизначного числа, обозначающего вес в граммах.

Посмотрим на примеры:

При передаче данных о молочной продукции используется объемно-сортовой учет (ОСУ). В этом случае в УПД передается не индивидуальный код с каждой упаковки, а агрегированная информация о партии товара. Структура кода для ОСУ выглядит следующим образом:

(02)[GTIN](37)[Количество](3103)[Вес в граммах]

Разберем эту структуру подробнее:

Таким образом, для нашего примера с реализацией одного куска сыра весом 2,1 кг правильная строка в УПД должна содержать примерно такую конструкцию (поможет модуль организации юридически значимого ЭДО в 1С):

(02)04610167520028(37)1(3103)002100

Именно такой формат ожидает получить система "Честный ЗНАК".

Пошаговое решение проблемы в 1С

Теперь, когда мы выяснили причину, давайте разберем, какие шаги предпринять для устранения ошибки в 1С.

  1. Обновите конфигурацию 1С

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

  2. Проверьте настройки номенклатуры

    Убедитесь, что для весового сыра в карточке номенклатуры правильно указаны все параметры, связанные с маркировкой. Проверьте следующее:

    • Тип номенклатуры должен быть "Товар".
    • В настройках учета должна быть указана особенность учета "Маркируемая продукция" с соответствующим видом продукции ("Молоко и молочная продукция"). Если у вас много позиций, можно выполнить массовую установку товарной группы маркируемой продукции в 1С:УТ.
    • Самое главное: убедитесь, что товар определен как весовой, а не штучный. Проверьте единицы измерения. Основная единица — килограммы (кг).
  3. Проверьте настройки интеграции с ИС МП ("Честный ЗНАК")

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

  4. Проверьте региональные настройки системы (как крайняя мера)

    Если обновление конфигурации не помогло, и вы уверены, что проблема в разделителе (запятая вместо точки), можно попробовать временно изменить региональные настройки Windows. Для этого перейдите в "Панель управления" -> "Часы и регион" -> "Региональные стандарты", на вкладке "Форматы" нажмите "Дополнительные параметры" и в поле "Разделитель целой и дробной части" установите точку. Однако это стоит делать с осторожностью, так как это может повлиять на работу других программ. В идеале, 1С должна корректно обрабатывать любые системные настройки.

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

← На главную