Как настроить передачу кодов маркировки через модуль Контур.EDI в 1С:Комплексная автоматизация

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

При работе с маркированными товарами в системе 1С (будь то 1С:ERP или 1С:Комплексная автоматизация 2.4/2.5) часто возникает ситуация, когда стандартного функционала модуля Контур.EDI недостаточно для автоматической передачи кодов маркировки в электронный УПД. Основная проблема заключается в том, что классические EDI-сообщения (например, INVOIC или DESADV) базируются на международных стандартах, которые изначально не предусматривали полей для российских кодов «Честный ЗНАК». В этой статье мы подробно разберем, как интегрировать передачу марок, чтобы они корректно попадали в систему ЭДО и далее — торговым сетям.

Анализ проблемы: Почему марок нет в стандартной XSD-схеме

Проанализируем ситуацию, с которой сталкиваются многие разработчики: при попытке найти поля для марок в стандартной схеме EDImessage.xsd, подтягиваемой с серверов Контура, поиски не приносят результата. Это происходит потому, что данные маркировки передаются не в основном теле EDI-сообщения, а через дополнительные структуры или механизмы расширения (ExtraFields). Если вы используете типовой программный модуль (ПМ) Контура, то данные по маркировке в INVOIC по умолчанию могут не записываться, так как модуль ожидает либо установку специальных расширений, либо ручную программную привязку кодов из регистров 1С к объектам XDTO.

Решение №1: Использование официальных расширений Контура

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

Для корректной работы необходимо проверить наличие и установить следующие расширения в вашей базе 1С:

  1. «Коды маркировки в COINVOIC» — расширение, отвечающее за передачу данных в коммерческих инвойсах.
  2. «Коды маркировки в DESADV, RECADV, INVOIC» — комплексное расширение для передачи марок в уведомлениях об отгрузке и приемке.

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

Решение №2: Программная доработка в событии ПослеЗаполнения_EdiMessage_XDTO

Если по каким-то причинам использование расширений невозможно (например, у вас сильно кастомизированная конфигурация или вы хотите избежать конфликтов расширений), разберем путь программной модификации. Основной точкой входа в программном модуле (ПМ) является процедура ПослеЗаполнения_EdiMessage_XDTO.

Проанализируем алгоритм действий при этом подходе:

  1. Перехват объекта: В момент формирования сообщения INVOIC система уже подготовила структуру XDTO, но еще не отправила её на сервер Контура.
  2. Поиск кодов в 1С: Нам необходимо программно найти документ-основание (например, РеализацияТоваровУслуг) и извлечь из него коды маркировки.
  3. Заполнение структуры ExtraFields: Поскольку в основной схеме полей нет, Контур использует механизм дополнительных полей. Нам нужно добавить элементы в коллекцию, которую сервер ЭДО сможет интерпретировать как коды маркировки.

Посмотрим на пример логики, которую можно реализовать в процедуре:


// Пример логики в ПМ Контур.EDI
Процедура ПослеЗаполнения_EdiMessage_XDTO(ДанныеEDI, ОбъектXDTO, Документ1С) Экспорт
    
    // Проверяем, что это сообщение типа INVOIC
    Если ДанныеEDI.ТипСообщения = "INVOIC" Тогда
        
        // Получаем таблицу марок из документа 1С
        ТаблицаМарок = ПолучитьМаркиИзДокумента(Документ1С);
        
        Для Каждого СтрокаМарки Из ТаблицаМарок Цикл
            // Логика добавления кодов в структуру сообщения
            // Здесь необходимо обращаться к подчиненным объектам LineItem
            // и заполнять свойства, отвечающие за иерархию упаковок
        КонецЦикла;
        
    КонецЕсли;

КонецПроцедуры

Важно помнить, что коды маркировки должны быть переданы в правильном формате. Для Честного ЗНАКА это обычно полный код с криптохвостом (если это требуется настройками сети) или очищенный код идентификации. Выясним причину, почему это важно: если передать код в неверном формате, валидация на стороне ЭДО Контура пройдет успешно, но документ будет отклонен на этапе обработки в ГИС МТ. Для предотвращения подобных ситуаций можно использовать расширение для проверки статусов кодов маркировки непосредственно в документах КА 2.4.

Особенности интеграции с торговыми сетями (Ашан, X5 Group и др.)

Разберем ситуацию с требованиями конкретных ритейлеров. Многие крупные сети требуют наличия марок уже в сообщении DESADV (уведомление об отгрузке). Это позволяет им произвести предварительную проверку кодов еще до физического прибытия машины на склад.

Рассмотрим важные нюансы:

Технический итог и рекомендации

Подводя итог, можно сказать, что решение задачи по передаче маркировки в Контур.EDI требует системного подхода. Мы рекомендуем сначала попробовать установить официальные расширения из библиотеки Контура, так как они поддерживаются разработчиком и обновляются при изменении законодательства. Своевременную установку патчей и техническое обслуживание нескольких информационных систем обеспечивает программа для автоматизации архивации и обновления 1С.

Если же вы выбираете путь доработки через ПослеЗаполнения_EdiMessage_XDTO, обязательно используйте отладку для контроля содержимого ОбъектXDTO. Помните, что структура этого объекта должна строго соответствовать ожиданиям транспортного шлюза Контура. Критически важно проверять заполнение марок именно в тех документах реализации, на основании которых строится EDI-сообщение, иначе данные просто не будут найдены в базе 1С.

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

← На главную