Заполнение подписанта в 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С 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    22832    8    0    

7

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

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

115900 руб.

09.12.2025    2861    6    0    

5

Кассовые операции Файловый обмен (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    83891    383    93    

269

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

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

6000 руб.

13.05.2026    3845    35    7    

39

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

Работаете по контрактной схеме, сталкивались с проблемой, что в контракте жестко указаны наименование, цена, единица измерения товара. И не все готовы создавать новую номенклатуру под каждый контракт или менять наименование и единицу измерения для уже имеющейся. Тем более, бывает так, что контракт - это формальность. Контракт не описывает жесткие условия поставки, нужно соблюсти правильность в предоставлении документов. Данное решение позволит вам загружать контракты напрямую с 1с одной кнопкой, оперировать своей номенклатурой при оформлении реализаций по государственному контракту в УТ 11.5 и КА 2.5.11, в то же время выводить на печать документы, соответствующие данным контракта, отправлять документы по контракту напрямую сайта госзакупок (ЕИС) по 44-ФЗ из 1с.

73200 руб.

19.12.2022    18485    43    30    

25

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

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

30490 руб.

28.05.2024    6495    22    2    

15

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

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

7320 руб.

09.08.2017    170428    1014    377    

627
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AleksandrM 09.11.26 21:08 Сейчас в теме
Добрый день.

Немного не понятно, почему не подтягиваются ФИО и должность подписанта из настроек сертификата.

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

1С

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


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


Вот этот блок немножко не понятен.

Спасибо заранее.
2. Sanyadol 49 09.11.26 21:10 Сейчас в теме
(1) Добрый день. Вы выгружаете xml в стороннюю программу, сертификат на стороне 1С никак не используется, так как подпись происходит в сторонней программе..
AleksandrM; +1 – Ответить
3. AleksandrM 10.11.26 07:12 Сейчас в теме
(2) Я столкнулся с следущей ситуацией, ранее при подписании УПД в 1С ЭДО в графе должность проставлялся прочерк, после какого-то обновления стало проставляться должность "ИП". В качестве организации выступает Индивидуальный предприниматель, но подписывает сотрудник по МЧД. В МЧД - должность указана, у сотрудника - должность указана, в 1С, в свойствах сертификата указана должно, но проставляется после подписания "ИП" .
Сегодня доберусь до конфигуратора и с помощью вашей статьи попробую отловить этот момент.

А так я правильно понимаю, что при выгрузке в XML должность не должна проставляться, в остальных случаях она должна подставляться из настроек сертификата ?
Для отправки сообщения требуется регистрация/авторизация