Переход на новые форматы электронного документооборота (ЭДО) часто становится серьезным испытанием для систем на базе 1С 7.7. В связи с вступлением в силу Приказа ФНС России от 19.12.2023 № ЕД-7-26/970@, формат 5.01 постепенно уступает место версии 5.03. В рамках данной статьи мы разберем, чем отличаются эти форматы, где найти Универсальный передаточный документ (УПД) версии 5.03 для «семерки» и как правильно организовать процесс валидации созданных файлов. Для тех, кто ищет готовый инструмент, уже существует проверенная выгрузка УПД в XML по формату приказа ФНС 970 (версии 5.03) для 1С: Торговля+Склад 7.7.
Для начала проанализируем ситуацию: почему недостаточно просто использовать старую выгрузку? Формат 5.03 — это не просто косметическое обновление, а внедрение поддержки новых законодательных требований. Рассмотрим ключевые отличия:
ТрансНакл, позволяющий более детально описывать документы-основания и логистические параметры.Работа с XML в 1С 7.7 традиционно строится либо на использовании компоненты V7Plus.dll, либо через формирование XML-документов через MSXML2.DOMDocument. Чтобы упростить процесс обмена, часто используется обработка выгрузки УПД для 1С-Клиент ЭДО, которая подходит для Бухгалтерии, ТиС и Комплексной конфигурации. Мы рекомендуем использовать именно объектную модель MSXML, так как это дает больше гибкости при работе с кодировкой UTF-8, к которой формат 5.03 крайне чувствителен.
Рассмотрим пример инициализации документа для формирования структуры УПД:
// Создаем объект DOM для формирования XML
ДокXML = СоздатьОбъект("MSXML2.DOMDocument.6.0");
ДокXML.appendChild(ДокXML.createProcessingInstruction("xml", "version=""1.0"" encoding=""windows-1251"""));
// Создаем корневой элемент Файл
КорневойУзел = ДокXML.createElement("Файл");
КорневойУзел.setAttribute("ИдФайл", СформироватьИдентификаторФайла());
КорневойУзел.setAttribute("ВерсФорм", "5.03");
КорневойУзел.setAttribute("ВерсПрог", "1C 7.7 Trade and Warehouse");
ДокXML.appendChild(КорневойУзел);
Обратите внимание на атрибут ВерсФорм. В нем мы обязаны указать значение 5.03, иначе шлюз оператора ЭДО или налоговой отклонит документ на первом же этапе проверки.
Выясним причину, по которой старые алгоритмы обработки кодов маркировки могут не сработать. В формате 5.03 структура узла НомСредИдентТов требует четкого разделения типов идентификаторов. В некоторых случаях для стабильной работы потребуется настройка локального модуля Честный знак для 1С 7.7, который обеспечивает выполнение требований разрешительного режима (поможет модуль интеграции Честного ЗНАКа для 1С 7.7). Проанализируем пример кода для заполнения данных о товаре:
// Пример заполнения строки таблицы счета-фактуры
УзелСведенияОТоваре = ДокXML.createElement("СведТов");
УзелСведенияОТоваре.setAttribute("НомСтр", НомерСтроки);
УзелСведенияОТоваре.setAttribute("НаимТов", Товар.Наименование);
// Если товар подлежит маркировке
Если Товар.Маркированный = 1 Тогда
УзелМаркировки = ДокXML.createElement("НомСредИдентТов");
// В формате 5.03 важно правильно указать КИЗ
УзелМаркировки.setAttribute("КИЗ", КодМаркировки);
УзелСведенияОТоваре.appendChild(УзелМаркировки);
КонецЕсли;
Рассмотрим подробнее блок подписанта. В 1С 7.7 для реализации работы с МЧД (машиночитаемыми доверенностями) нам придется добавить в справочник сотрудников или физических лиц новые реквизиты: GUIDДоверенности и ТипДоверенности. В XML это отражается в узле Подписант через атрибуты ДовАвтомат или соответствующие вложенные элементы.
Пример формирования структуры подписанта для уполномоченного лица с МЧД:
УзелПодписант = ДокXML.createElement("Подписант");
УзелПодписант.setAttribute("ОблПолн", "5"); // Для УПД
УзелПодписант.setAttribute("Статус", "1");
УзелФизЛицо = ДокXML.createElement("ФЛ");
УзелФизЛицо.setAttribute("Фамилия", Подписант.Фамилия);
УзелФизЛицо.setAttribute("Имя", Подписант.Имя);
УзелПодписант.appendChild(УзелФизЛицо);
// Блок МЧД
УзелДов = ДокXML.createElement("СвДов");
УзелДов.setAttribute("ВидДов", "1"); // Электронная
УзелДов.setAttribute("НомДов", МЧД_Номер);
УзелПодписант.appendChild(УзелДов);
После того как мы сформировали файл, его необходимо проверить. Для 1С 7.7 это критически важный этап, так как отсутствие типизации данных в языке может привести к выгрузке пустых атрибутов или некорректных форматов дат. Наряду с УПД, часто требуется корректная выгрузка счета на оплату в формате XML для 1С 7.7, соответствующая актуальным приказам ФНС.
Посмотрим на инструменты, которые нам помогут:
MSXML2.XMLSchemaCache, чтобы документ не сохранялся, если он не соответствует структуре.Разберем по шагам, как минимизировать трудозатраты при обновлении:
&, <, > в названиях контрагентов. Обязательно используйте функции экранирования или доверьте это объекту DOMDocument.СокрЛП() и проверку длины перед записью атрибута.Таким образом, переход на УПД 5.03 в 1С 7.7 — задача вполне выполнимая. Главное — уделить внимание блокам маркировки и машиночитаемых доверенностей, которые являются ключевыми новшествами этого формата. Сочетание проверенных временем методов работы с XML в «семерке» и актуальных требований ФНС позволит вашей системе продолжать работу в правовом поле еще долгое время.