Переход на электронный документооборот (ЭДО) часто ставит перед разработчиками нетиповых («самописных») конфигураций сложную задачу: как сформировать «тот самый» XML-файл УПД, который примет Диадок или любой другой оператор. Проблема осложняется тем, что формат УПД жестко регламентирован ФНС, а его структура включает сотни полей. Разберем пошагово, как реализовать этот функционал, опираясь на опыт разработчиков и актуальные требования законодательства.
Разрабатывать структуру XML с нуля по многостраничным приказам ФНС — задача трудоемкая и чреватая ошибками. Проанализируем наиболее эффективный путь: использование наработок из типовых конфигураций 1С (например, Бухгалтерия предприятия 3.0 или Управление торговлей 11). В этих системах механизм формирования электронных документов уже отлажен и регулярно обновляется.
Рассмотрим, где искать нужный код. Ключевым идентификатором для поиска в глобальном поиске по конфигурации является префикс имени файла УПД — ON_SCHFDOPPR (для счета-фактуры и первичного документа) или ON_NSCHFDOPPR (только для первичного документа). Проанализируем модули менеджеров документов реализации или специализированные общие модули, связанные с ЭДО. Чаще всего логика скрыта в процедурах, использующих ФабрикаXDTO.
Вместо ручной сборки текста через ЗаписьТекста, настоятельно рекомендуем использовать механизм XDTO. Это позволит вам работать с XML как с объектом, где каждое поле — это свойство. В типовых конфигурациях 1С уже встроены XDTO-пакеты, соответствующие актуальным форматам ФНС (например, по приказу № 820 или новому № 970).
Рассмотрим пример того, как можно выгрузить схему из типовой базы и импортировать её в «нетленку»:
SFF_5_02)..xsd.После этого формирование XML в коде будет выглядеть примерно так:
// Пример инициализации объекта XDTO на основе схемы
ТипОбъекта = ФабрикаXDTO.Тип("http://www.nanalog.ru/SFF_5_02", "Файл");
НовыйФайлXML = ФабрикаXDTO.Создать(ТипОбъекта);
// Заполнение реквизитов
НовыйФайлXML.ИдФайл = СформироватьИдентификаторФайла();
НовыйФайлXML.ВерсФорм = "5.02";
НовыйФайлXML.ВерсПрог = "1C:Нетленка 1.0";
// Добавление информации о продавце
СвПрод = ФабрикаXDTO.Создать(ТипОбъекта.Свойства.Получить("Документ").Тип.Свойства.Получить("СвПрод").Тип);
СвПрод.ИдСпец = "2BM-7712345678-2015010112345678901234"; // ID участника ЭДО
// ... дальнейшее заполнение ...
Выясним причину, по которой файлы часто не принимаются операторами при автоматической загрузке. Одной из самых частых ошибок является некорректное имя файла. Согласно приказам ФНС, имя файла должно иметь строго определенную структуру. Оно состоит из префикса, идентификатора получателя, идентификатора отправителя, даты и уникального GUID.
Важный нюанс: В имени файла должны использоваться не ИНН контрагентов, а их идентификаторы участников ЭДО (46 символов). Использование ИНН допустимо только в исключительных случаях, и некоторые системы (например, банковское ЭДО) могут отклонять такие файлы.
Разберем структуру имени:
R_T — Префикс (например, ON_SCHFDOPPR).A — Идентификатор получателя (код налогового органа + ID участника ЭДО получателя).K — Идентификатор отправителя (код налогового органа + ID участника ЭДО отправителя).YYYYMMDD — Дата формирования файла.N — Уникальный 36-символьный GUID (генерируется программно).После того как XML-файл сформирован, его нужно передать в систему Диадок. Проанализируем три основных способа интеграции:
Если ваша компания работает с товарами, подлежащими обязательной маркировке («Честный ЗНАК»), формат УПД становится значительно сложнее. Проанализируем блок НомСредИдентТов. В нем должны быть перечислены коды маркировки (DataMatrix), причем в XML они должны попадать в очищенном от лишних символов виде или с учетом требований формата 5.02.
Для прослеживаемых товаров (например, мониторы, холодильники) необходимо заполнять реквизиты РНПТ (регистрационный номер партии товара). В XML за это отвечают поля НомТовПрослеж. Если эти данные не будут заполнены или будут заполнены некорректно, налоговая инспекция может не принять документ, а покупатель не сможет зачесть НДС.
Чтобы убедиться, что ваш файл соответствует требованиям, воспользуйтесь следующими методами:
Таким образом, создание «нетленки» для выгрузки УПД сводится к переносу XDTO-структур из типовых конфигураций и строгому соблюдению правил именования файлов. Помните, что формат ЭДО регулярно обновляется ФНС, поэтому закладывайте в архитектуру возможность легкого обновления XDTO-пакетов.