Как создать GTIN в штрихкоде номенклатуры в 1С при получении документов от контрагента через ЭДО, особенно для маркированных товаров?

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

При работе с электронным документооборотом (ЭДО) в 1С:Бухгалтерии 3.0 и получении документов от контрагентов, особенно для маркированных товаров, часто возникает вопрос: должен ли автоматически создаваться GTIN в штрихкоде номенклатуры? Мы сталкиваемся с ситуацией, когда штрихкод не создается, а в данных поставщика он в принципе отсутствует. Давайте разберем эту проблему подробно и выясним, как её решить.

Понимание GTIN и штрихкода в контексте маркировки

Прежде всего, давайте уточним понятия. GTIN (Global Trade Item Number) — это уникальный международный номер товарной позиции, который однозначно идентифицирует товар. Штрихкод — это графическое представление GTIN. Для маркированной продукции (например, одежда и обувь), помимо линейных штрихкодов (EAN-13), используется двумерный штрихкод Data Matrix. Этот Data Matrix код содержит в себе GTIN, а также серийный номер товара и другие проверочные данные.

Формально, поставщик может не указывать линейный штрихкод в своем документе УПД, поскольку это необязательный реквизит. Однако, для маркированных товаров он обязан передавать в УПД Код Маркировки (КМ), который содержит необходимый нам GTIN.

Извлечение GTIN из Кода Маркировки (КМ/КИЗ)

Основное решение нашей проблемы заключается в том, чтобы извлечь GTIN непосредственно из Кода Маркировки (КМ), который присутствует в электронном документе УПД — с этим поможет печать штрихкода GTIN и DataMatrix Честного Знака. Поставщик, реализующий маркированные товары, обязан передавать КМ в составе УПД через ЭДО.

Разберем этот процесс по шагам:

  1. Получаем файл УПД в формате XML. Мы принимаем документ УПД от контрагента через сервис 1С-ЭДО. Чтобы получить доступ к данным для программной обработки, нам может потребоваться программно обратиться к XML-структуре полученного электронного документа — для автоматизации этого процесса подойдёт загрузка и распознавание XML-документов ЭДО в 1С. Для этих целей удобно использовать функцию, читающую XML данные УПД в структуру 1С.
  2. Идентифицируем поле с Кодом Маркировки (КМ/КИЗ). В XML-структуре УПД нам необходимо найти тег, который содержит информацию о кодах маркировки. Обычно эти данные детализируются по каждой товарной позиции. В УПД для маркированных товаров обязательно указывается КИЗ (Код Идентификации Защиты) или КМ (Код Маркировки).
  3. Извлекаем GTIN из Кода Маркировки. Код маркировки Data Matrix представляет собой стандартизированную строку символов. GTIN находится в начале этой строки. Типичная структура кода маркировки начинается с префикса 01, за которым следует 14-значный GTIN, а затем разделитель 21 и серийный номер.

    Мы можем использовать стандартные строковые функции 1С для парсинга КМ.

    Например, давайте рассмотрим пример извлечения GTIN из строки кода маркировки:

    
    // Предположим, что мы получили строку кода маркировки из XML УПД
    КодМаркировки = "01046037222100072121kYp5e~D-3j]G=k1\G1tF/F^K-A~D?p+N#n`[d`G(c2~"; // Пример полного КМ
    
    // Находим позицию разделителя "21", который идет после GTIN
    ПозицияРазделителяСерийногоНомера = СтрНайти(КодМаркировки, "21");
    
    // Проверяем, что разделитель найден и КМ имеет ожидаемый формат
    Если ПозицияРазделителяСерийногоНомера > 0 И СтрНачинаетсяС(КодМаркировки, "01") Тогда
        // GTIN находится после "01" (2 символа) и до разделителя "21"
        // Длина GTIN всегда 14 символов
        GTIN = Сред(КодМаркировки, 3, 14); 
        Сообщить("Извлеченный GTIN: " + GTIN);
    Иначе
        Сообщить("Не удалось извлечь GTIN. Возможно, код маркировки имеет нестандартный формат.");
    КонецЕсли;
    
  4. Сопоставляем номенклатуру по GTIN. После успешного извлечения GTIN мы можем использовать его для поиска существующей номенклатуры в нашей информационной базе. Если номенклатура с таким GTIN уже есть, мы сопоставляем её. Если нет, мы можем реализовать создание номенклатуры по данным контрагента через ЭДО с автоматическим заполнением характеристик и видов маркировки. Чтобы штрихкоды появлялись в системе автоматически при регистрации новых позиций, можно применить расширение для автоматического создания штрихкодов к номенклатуре.

Особенности для объемно-сортового учета (ОСУ)

Для товаров, которые принимаются по объемно-сортовому учету (ОСУ), ситуация несколько отличается. В этом случае, в марочной части одного УПД должен быть указан только один GTIN для одной позиции SKU (единицы складского учета). Более того, согласно Приказу ФНС России от 19.12.2023 № ЕД-7-26/970@, для ОСУ в XML-формате УПД используются специальные теги <ГТИН> и <КолВедМарк>. При формировании таких документов может быть полезна выгрузка УПД в формате xml для Честного знака, учитывающая актуальные требования законодательства.

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

Вызовы "Технических карточек" и уникальности GTIN

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

Это создает сложности для автоматического сопоставления номенклатуры, так как один и тот же GTIN перестает быть абсолютной гарантией полного совпадения с нашей внутренней номенклатурой. В таких случаях нам может потребоваться доработать логику сопоставления, чтобы учитывать дополнительные параметры, такие как артикул, цвет, размер, наименование поставщика, или даже использовать алгоритмы нечеткого поиска по наименованию.

Рекомендации контрагентам

Хотя мы можем программно извлекать GTIN из Кода Маркировки, для максимального упрощения наших внутренних процессов и минимизации ручного труда, мы можем рекомендовать нашим поставщикам по возможности явно указывать GTIN в дополнительных полях УПД или в линейном штрихкоде. Однако, это не всегда является строгим требованием для всех типов товаров.

Главное и обязательное требование для всех маркированных товаров — это наличие действительных кодов маркировки (КМ/КИЗ) в УПД, которые передаются через ЭДО. Чтобы процесс взаимодействия с системой не прерывался из-за технических сложностей, рекомендуется выполнять автоматическое обновление токенов Честного Знака в 1С, устраняя человеческий фактор.

Таким образом, для автоматического создания GTIN в штрихкоде номенклатуры при приёме документов через ЭДО, мы должны ориентироваться на извлечение GTIN из Кода Маркировки (КМ/КИЗ) для маркированных товаров, или из соответствующих тегов для объемно-сортового учета, а затем использовать этот GTIN для сопоставления или создания номенклатуры в нашей системе 1С:Бухгалтерия 3.0.

← На главную