Перевод торгового предприятия на обязательную маркировку товаров («Честный Знак») — задача непростая, особенно если учет ведется в устаревшей, но крайне надежной и привычной системе 1С:Предприятие 7.7. Многие разработчики сталкиваются с тем, что стандартных механизмов для работы с маркировкой и электронным документооборотом (ЭДО) в штатных конфигурациях «семерки» попросту нет. В этой статье мы подробно разберем, как решить проблему передачи маркированного товара в универсальный передаточный документ (УПД), какие технические подходы существуют и как правильно организовать выгрузку данных.
Прежде всего проанализируем частую ошибку начинающих разработчиков. Часто под задачей «передать товар в УПД» понимают редактирование печатной формы документа. Нам важно четко разграничить два понятия:
ExtForms\PrnForms (например, UPD.ert). Данная форма служит исключительно для визуализации и бумажного документооборота. В ней невозможно передать машиночитаемые коды маркировки в государственную систему.Таким образом, наша главная цель в 1С 7.7 — не изменить макет печати, а научить систему собирать коды маркировки и формировать корректный XML-файл установленного формата.
Ранее для выгрузки УПД использовался формат по приказу ФНС № 820. Однако законодательство меняется. С 1 апреля 2025 года старый формат УПД (820@, версия формата 5.01) был окончательно отключен ФНС и операторами ЭДО. Теперь обязательным является новый формат по Приказу ФНС России от 19.12.2023 № ЕД-7-26/970@ (версия формата 5.03).
Любые файлы, сформированные по старому стандарту, будут отклонены оператором ЭДО или системой маркировки. В новом формате существенно изменились требования к передаче сведений о маркировке. Коды заносятся в специальные теги, такие как НомУпак (для поэкземплярного учета) или передаются через объемно-сортовой учет (ОСУ). Сформировать такой XML-документ вручную в 1С 7.7 "с нуля" крайне трудозатратно, но выполнимо.
Выясним, какие варианты интеграции доступны для разработчиков и пользователей 1С 7.7 в текущих реалиях.
Это наиболее стабильный и наименее затратный по времени разработки способ. Мы не перегружаем устаревшую платформу 1С 7.7 сложными механизмами криптографии и отправки XML, а используем современную платформу 1С 8.3 в качестве транспортного шлюза.
Рассмотрим схему работы этого решения по шагам:
.ert).Если объем отгрузок небольшой, можно воспользоваться более простой схемой без полноценного ЭДО, передавая данные напрямую в Личный кабинет (ЛК) ГИС МТ «Честный Знак».
Проанализируем этот процесс:
Для складов с интенсивным товарооборотом ручной ввод кодов в 1С 7.7 невозможен. В этом случае идеальным решением является интеграция со специализированным ПО для ТСД, например, DataMobile или Клеверенс.
Схема взаимодействия выглядит следующим образом:
Если вы все же приняли решение формировать XML-файл обмена непосредственно в 1С 7.7, разберем базовый пример кода для создания структуры XML. Для работы с XML в 1С 7.7 обычно используется объект Windows MSXML2.DOMDocument.
Рассмотрим пример создания XML-структуры для выгрузки заголовка документа и кодов маркировки:
// Создаем объект для работы с XML-документом
Попытка
АнализаторXML = СоздатьОбъект("MSXML2.DOMDocument.6.0");
Исключение
Предупреждение("Не удалось создать объект MSXML! Проверьте установку компонентов MS XML Parser.");
Возврат;
КонецПопытки;
// Создаем корневой элемент документа
Корень = АнализаторXML.createElement("Файл");
// Задаем необходимые атрибуты для формата обмена
Корень.setAttribute("ИдФайл", "ON_NSCHFDOPPR_..." + ТекущаяДата());
Корень.setAttribute("ВерсПрог", "1C 7.7 Custom");
Корень.setAttribute("ВерсФорм", "5.03"); // Версия нового формата по приказу 970@
АнализаторXML.appendChild(Корень);
// Добавляем узел с информацией о документе
СвДокПор = АнализаторXML.createElement("Документ");
СвДокПор.setAttribute("КНД", "1115131"); // Код для УПД
Корень.appendChild(СвДокПор);
// Пример обхода табличной части документа для выгрузки товаров и кодов маркировки
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если Товар.Маркированный = 1 Тогда
ТаблТовар = АнализаторXML.createElement("ТаблТов");
ТаблТовар.setAttribute("НомСтр", НомерСтроки);
ТаблТовар.setAttribute("НаимТов", СокрЛП(Товар.Наименование));
// Создаем узел для кодов маркировки (НомУпак)
УзелМаркировки = АнализаторXML.createElement("НомУпак");
// Предполагается, что коды маркировки хранятся в подчиненном справочнике
СпрКоды = СоздатьОбъект("Справочник.КодыМаркировки");
СпрКоды.ИспользоватьВладельца(Контекст); // или ссылка на документ/строку
СпрКоды.ВыбратьЭлементы();
Пока СпрКоды.ПолучитьЭлемент() = 1 Цикл
// КИЗ - Код Идентификации Защищенный
КИЗ = АнализаторXML.createElement("КИЗ");
КИЗ.text = СпрКоды.КодМаркировки;
УзелМаркировки.appendChild(КИЗ);
КонецЦикла;
ТаблТовар.appendChild(УзелМаркировки);
СвДокПор.appendChild(ТаблТовар);
КонецЕсли;
КонецЦикла;
// Сохраняем сформированный файл на диск для последующей отправки через ЭДО
ФайлПуть = "C:\EDI_Exchange\upd_out.xml";
АнализаторXML.save(ФайлПуть);
Сообщить("Файл успешно сформирован и сохранен по пути: " + ФайлПуть);
Обратите внимание: Приведенный код является упрощенным концептуальным примером. Реальный XML-файл по приказу 970@ содержит сотни обязательных реквизитов (данные продавца, покупателя, грузоотправителя, подписанта, сведения о налогах, ставках НДС и валютах). Для его полной реализации потребуется тщательно изучить XML-схему (XSD) нового формата, предоставляемую ФНС.
Подведем итоги нашего анализа. Если перед вами стоит задача запустить маркировку в 1С 7.7: