Заполнение подписанта в XML УПД 5.03 при выгрузке из 1С:Бухгалтерии в сторонний ЭДО

23.09.26

Интеграция - ЭДО и ОФД

Расширение для 1С:Бухгалтерии 3.0, которое заполняет ФИО и должность подписанта в XML УПД 5.03 при выгрузке документа в файл. Решение рассчитано на сценарий обмена через сторонний ЭДО, и позволяет применять заполнение только для выбранного контрагента по ИНН, не затрагивая остальные документы.

При файловом обмене электронными УПД иногда возникает занятная ситуация: в самой 1С все ответственные лица заполнены, печатная форма УПД выглядит правильно, но после команды «ЭДО → Выгрузить документ в файл» в XML получаем:

<Подписант ТипПодпис="2" СпосПодтПолном="1">
    <ФИО Фамилия="-" Имя="-"/>
</Подписант>

Далее такой файл загружается, подписывается уже отдельно в другом сервисе и отправляется покупателю. В результате покупатель получает УПД без заполненных сведений о подписанте.

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

Пример выполнен для:

1С:Бухгалтерия предприятия, редакция 3.0, релиз 3.0.201.16.

 

Почему стандартная настройка подписей организации не помогает

Сначала кажется логичным проверить:

  • руководителя организации;
  • главного бухгалтера;
  • ответственного за оформление УПД;
  • сотрудника и его должность.

Это действительно нужно для печатной формы и других реквизитов УПД. Но с элементом XML <Подписант> история отдельная.

В типовом модуле ФорматыЭДО_ФНС при первоначальном формировании УПД 5.03 подписант создается специально с пустыми значениями:

РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
    Подписант, "Должн", "-", Истина, Ошибки);

РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
    Подписант, "ТипПодпис", "2", Истина, Ошибки);

РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
    Подписант, "СпосПодтПолном", "1", Истина, Ошибки);

ФИО = ПолучитьОбъектТипаCML("ФИОТип", ПространствоИмен);

РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
    ФИО, "Фамилия", "-", , Ошибки);

РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
    ФИО, "Имя", "-", , Ошибки);

То есть прочерки появляются не из-за неправильно заполненного справочника. Их ставит сама типовая конфигурация.

Дальше штатный механизм 1С предполагает отдельный этап заполнения данных подписанта при использовании сертификата ЭП. В модуле ФорматыЭДО для этого существует функция ЗаполнитьДанныеПодписантаДокумента(), где ФИО и должность уже получаются из параметров сертификата.

Но если используется схема:

1С

Выгрузить документ в файл


Подписание и отправка

этот второй этап в 1С просто не выполняется.

Получаем маленькую архитектурную щель, через которую и просачивается наш Фамилия="-".

 

Что будем делать

Основную конфигурацию менять не будем. Делаем небольшое расширение и вмешиваемся уже после штатного формирования XML.

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

Фамилия
Имя / Отчество
Должность

ТипПодпис и СпосПодтПолном оставляем такими, какими их сформировала сама 1С.

Удобная точка находится в общем модуле ФорматыЭДО, функция:

СформироватьДанныеОсновногоТитулаПоОбъектуУчета()

В ней одновременно доступны исходный документ, выбранный формат и уже сформированный XML.

 

Создание расширения

  1. Открываем Конфигуратор → Конфигурация → Расширения конфигурации и создаем расширение, например РПП_ПодписантУПД. Назначение можно установить «Исправление».
  2. Добавляем в расширение существующий общий модуль основной конфигурации ФорматыЭДО.
  3. В расширении перехватываем СформироватьДанныеОсновногоТитулаПоОбъектуУчета() через &Вместо, но первым делом вызываем ПродолжитьВызов(). Таким образом штатный код продолжает работать полностью.
  4. После формирования проверяем тип документа, формат УПД 5.03 и ИНН контрагента.
  5. Только если все условия совпали, открываем сформированный XDTO и заменяем пустого подписанта.

 

Код расширения

В нашем примере специальная обработка нужна для контрагента с отбором по ИНН.

Руководитель уже заполнен в самой реализации. Для нашего случая должность подписанта: «Генеральный директор».

&Вместо("СформироватьДанныеОсновногоТитулаПоОбъектуУчета")
Функция РПП_СформироватьДанныеОсновногоТитулаПоОбъектуУчета(
	ОбъектУчета,
	Настройки,
	Данные) Экспорт
	
	// Сначала выполняем весь штатный механизм 1С.
	Результат = ПродолжитьВызов(
		ОбъектУчета,
		Настройки,
		Данные);
	
	Если Результат = Неопределено
		Или Результат.ЕстьОшибки Тогда
		
		Возврат Результат;
		
	КонецЕсли;
	
	// Только документы реализации.
	Если ТипЗнч(ОбъектУчета)
		<> Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
		
		Возврат Результат;
		
	КонецЕсли;
	
	// Только УПД 5.03, информация продавца.
	Форматы = ФорматыЭДО.ПоддерживаемыеФорматы();
	
	Если Настройки.Формат
		<> Форматы.ФНС.УПД_5_03.ИнформацияПродавца Тогда
		
		Возврат Результат;
		
	КонецЕсли;
	
	// Проверяем конкретного контрагента.
	ИННКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
		ОбъектУчета.Контрагент,
		"ИНН");
	
	Если ИННКонтрагента <> "НАШ ИНН КОНТРАГЕНТА" Тогда
		Возврат Результат;
	КонецЕсли;
	
	Если Результат.Документ = Неопределено
		Или Результат.Документ.ДвоичныеДанные = Неопределено Тогда
		
		Возврат Результат;
		
	КонецЕсли;
	
	РПП_ЗаполнитьПодписантаУПД(
		Результат,
		ОбъектУчета);
	
	Возврат Результат;
	
КонецФункции


Процедура РПП_ЗаполнитьПодписантаУПД(
	Результат,
	ОбъектУчета)
	
	// Основной источник подписанта.
	ФизическоеЛицо = ОбъектУчета.Руководитель;
	
	// Если руководитель почему-то не указан,
	// пробуем ответственного за оформление УПД.
	Если Не ЗначениеЗаполнено(ФизическоеЛицо) Тогда
		ФизическоеЛицо = ОбъектУчета.ОтветственныйЗаОформление;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ФизическоеЛицо) Тогда
		Возврат;
	КонецЕсли;
	
	// В конкретной базе представление физлица имеет вид
	// "Фамилия Имя Отчество".
	ЧастиФИО = СтрРазделить(
		СокрЛП(Строка(ФизическоеЛицо)),
		" ");
	
	Если ЧастиФИО.Количество() < 2 Тогда
		Возврат;
	КонецЕсли;
	
	Фамилия = ЧастиФИО[0];
	Имя     = ЧастиФИО[1];
	Отчество = "";
	
	Если ЧастиФИО.Количество() >= 3 Тогда
		Отчество = ЧастиФИО[2];
	КонецЕсли;
	
	ОписаниеОшибки = "";
	
	ДанныеФайлаЭД = ФорматыЭДО.ДанныеФайлаЭД(
		Результат.Документ,
		ОписаниеОшибки);
	
	Если Не ПустаяСтрока(ОписаниеОшибки)
		Или ДанныеФайлаЭД = Неопределено Тогда
		
		Возврат;
		
	КонецЕсли;
	
	Если ДанныеФайлаЭД.Документ = Неопределено
		Или ДанныеФайлаЭД.Документ.Подписант.Количество() = 0 Тогда
		
		Возврат;
		
	КонецЕсли;
	
	// Типовой УПД уже содержит пустого подписанта.
	ИндексПодписанта =
		ДанныеФайлаЭД.Документ.Подписант.Количество() - 1;
	
	Подписант =
		ДанныеФайлаЭД.Документ.Подписант[ИндексПодписанта];
	
	ФИО = РаботаСФайламиБЭД.ЗначениеСвойстваXDTO(
		Подписант,
		"ФИО");
	
	Если ФИО = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Ошибки = Неопределено;
	
	РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
		ФИО,
		"Фамилия",
		Фамилия,
		Истина,
		Ошибки);
	
	РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
		ФИО,
		"Имя",
		Имя,
		Истина,
		Ошибки);
	
	Если Не ПустаяСтрока(Отчество) Тогда
		
		РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
			ФИО,
			"Отчество",
			Отчество,
			,
			Ошибки);
		
	КонецЕсли;
	
	РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
		Подписант,
		"ФИО",
		ФИО,
		Истина,
		Ошибки);
	
	// В нашем случае подписантом является генеральный директор.
	РаботаСФайламиБЭД.ЗаполнитьСвойствоXDTO(
		Подписант,
		"Должн",
		"Генеральный директор",
		Истина,
		Ошибки);
	
	Если ЗначениеЗаполнено(Ошибки) Тогда
		Возврат;
	КонецЕсли;
	
	// Собираем XDTO обратно в XML.
	ПространствоИмен =
		ДанныеФайлаЭД.Тип().URIПространстваИмен;
	
	ДвоичныеДанные =
		РаботаСФайламиБЭД.XDTOВДвоичныеДанные(
			ДанныеФайлаЭД,
			Ложь,
			,
			"Файл");
	
	Результат.Документ.ДвоичныеДанные =
		ОбщегоНазначенияБЭД.УдалитьПространствоИмен(
			ДвоичныеДанные,
			ПространствоИмен);
	
	// После изменения XML обновляем разобранное содержание документа.
	Результат.Содержание =
		ФорматыЭДО.ПрочитатьСодержаниеДокумента(
			Результат.Документ);
	
КонецПроцедуры

Сам ДанныеФайлаЭД() является экспортной функцией типового модуля, поэтому нам не приходится вручную разбирать XML строковыми заменами.

 

Что получится

До установки расширения:

<Подписант ТипПодпис="2" СпосПодтПолном="1">
    <ФИО Фамилия="-" Имя="-"/>
</Подписант>

После:

<Подписант
    Должн="Генеральный директор"
    ТипПодпис="2"
    СпосПодтПолном="1">

    <ФИО
        Фамилия="Иванов"
        Имя="Иван"
        Отчество="Иванович"/>

</Подписант>

При этом ТипПодпис="2" и СпосПодтПолном="1" мы специально не меняем. Задача расширения не заключается в имитации электронной подписи. Мы только заполняем учетные сведения о лице, которое должно отображаться подписантом.

Для любого другого покупателя код закончится здесь:

Если ИННКонтрагента <> "НАШ ИНН КОНТРАГЕНТА" Тогда
	Возврат Результат;
КонецЕсли;

и XML останется полностью типовым.

 

Проверка

После подключения расширения нужно заново открыть реализацию и выполнить «ЭДО → Выгрузить документ в файл».

Старые ранее выгруженные XML, естественно, сами не изменятся.

Я бы проверил два документа: первый на проблемного контрагента, где в <Подписант> должны появиться ФИО и должность, второй на любого другого покупателя, где расширение вообще не должно вмешиваться.

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

Вступайте в нашу телеграмм-группу Инфостарт

1С Бухгалтерия БП 3.0 УПД УПД 5.03 ЭДО XML подписант электронный документ выгрузка УПД формат ФНС расширение 1С доработка 1С ФорматыЭДО ФорматыЭДО_ФНС подпись УПД заполнение подписанта электронная подпись обмен с контрагентами

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Бюджетный учет ЭДО и ОФД Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Расширение для автоматизации процесса подписания электронных документов в мобильном приложении "Госключ" с видом подписи УКЭП/УНЭП, которое подходит для электронного подписания бухгалтерских документов, список которых утвержден в приказе Минфина №61н «Об утверждении унифицированных форм электронных документов бухгалтерского учета…»

325000 руб.

06.11.2024    22088    6    0    

6

ЭДО и ОФД 1С:Предприятие 8 1С:Документооборот Платные (руб)

Расширение позволяет отправлять документы из 1С Документооборот редакции в Saby в двух вариантах: 1) С подписанием. 2) Без подписание Загружать входящие документы из Saby Получать идентификаторы контрагентов.

115900 руб.

09.12.2025    2313    3    0    

5

ЭДО и ОФД Мастера заполнения 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение добавляет возможность создавать ЭТрН и электронный заказ (заявку) на основании документа «Реализация товаров и услуг». При создании документа автоматически заполняются основные данные: участники перевозки, адреса, транспорт, водитель и сведения о грузе. Работает как расширение, не требует изменения типовой конфигурации и быстро подключается.

6000 руб.

13.05.2026    3339    33    7    

37

ЭДО и ОФД Учет документов 1С 8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

ПОДПИСЫВАЙТЕ ДОКУМЕНТЫ С ФИЗЛИЦАМИ ПО СМС. Ваши клиенты и сотрудники смогут подписывать документы простой электронной подписью (ПЭП) без визита к вам в офис. С телефона или компьютера без установки приложений и регистраций.

30490 руб.

28.05.2024    6126    24    2    

14

Кассовые операции Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД НДС 22% Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Специализированные обработки для загрузки кассовых чеков в локальных базах: 1С:БП 3.0, 1С:УНФ 3.0, 1С:Розница 3.0, 1С:КА. 2.5, 1С:ERP Управление предприятием 2.5 и 1С:УТ 11.5. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС или сканера штрихкодов и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах', 'Поступление денежных документов' и 'Реестры выплат самозанятым'. Обработка будет работать на любой версии конфигурации управляемые формы: базовой, ПРОФ или КОРП. Для загрузки чеков самозанятых достаточно только ссылки на чек.

6990 руб.

19.08.2020    83193    375    93    

268

Кассовые операции ЭДО и ОФД Бухгалтер 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Платные (руб)

Согласно 54-ФЗ по правилам ведения кассовых операций необходимо оформлять приходные кассовые ордера (ПКО) и расходные кассовые ордера (РКО) на основании чеков ККМ. Все данные о чеках, можно взять на сайте оператора фискальных данных (ОФД). Обработка загрузки данных из ОФД в 1С сделает за вас в 1С - ПКО и РКО, Операции по платежным картам или Отчет о розничных продажах (может создать номенклатуру в 1С, указать налоги и др. реквизиты в документах в зависимости от налогообложения ККМ в торговой точке).

7320 руб.

09.08.2017    169739    1010    377    

624

ЭДО и ОФД Учет документов 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Мощный, единый инструмент для решения всех проблем, связанных с переходом на ЭДО. Экономит бумагу и время – организует полностью соответствующий закону архив оригиналов первичных документов прямо в базе 1С, в прикрепленных файлах к соответствующим документам. Выявляет все возможные ошибки в ЭДО и помогает в несколько кликов их исправить. Взаимодействует напрямую с сервисами Диадок/СБИС, имеет интуитивно понятный интерфейс и учитывает 5-ти летний опыт 60+ клиентов.

19520 руб.

17.12.2018    51993    86    68    

88
Для отправки сообщения требуется регистрация/авторизация