Как редактировать печатные формы в ЭДО и добавлять собственные документы с электронной подписью

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Понимание форматов: формализованные и произвольные документы

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

  1. Формализованные документы: Это счета-фактуры, УПД, акты и накладные, формат которых строго регламентирован приказами ФНС (например, приказ №155 для электронных счетов-фактур). Такие документы передаются в виде XML-файлов. То, что мы видим на экране — это не сам документ, а его визуализация, полученная путем наложения специального шаблона (XSLT) на данные XML.
  2. Произвольные документы: Это файлы любых форматов (PDF, Excel, Word, JPG). Они не имеют жесткой структуры XML, и их визуализация полностью соответствует тому файлу, который вы загрузили в систему.

Если нам нужно изменить внешний вид УПД, мы работаем с XSLT-шаблонами. Если нам нужно отправить уникальную «Спецификацию», которую бухгалтер хочет видеть в определенном дизайне, мы используем механизм отправки произвольных документов.

Вариант 1: Редактирование визуализации формализованных документов (XSLT)

Выясним причину, по которой стандартная печатная форма может не устраивать: например, требуется добавить дополнительные поля или изменить шрифт. В системе 1С за отображение XML-файлов отвечают правила преобразования. Разберем по шагам, как найти и отредактировать такой макет.

Для внесения изменений нам потребуется доступ к регистру сведений РегистрСведений.ПравилаПреобразованияФорматов. Рассмотрим алгоритм действий:

  1. Переходим в функции для технического специалиста и находим регистр ПравилаПреобразованияФорматов.
  2. В списке макетов находим тот, который отвечает за нужный тип документа. Например, для счетов на оплату это может быть макет, связанный с PaymentInvoice.
  3. Выполняем двойной клик по макету и нажимаем кнопку «Выгрузить в файл». Сохраняем архив на диск (например, под именем custom_layout.zip).
  4. Распаковываем архив. Внутри вы найдете файлы с расширением .xsl.
  5. Открываем нужный файл (например, CML208_PaymentInvoice_view.xsl) через текстовый редактор, поддерживающий синтаксис XML (рекомендуется Notepad++ или специализированные IDE).
  6. Редактируем код шаблона, сохраняем изменения и запаковываем файлы обратно в ZIP-архив.
  7. В 1С загружаем измененный архив обратно в макет.

Важно: При обновлении конфигурации стандартные правила могут быть перезаписаны. Чтобы избежать потери правок, рекомендуется использовать механизм Расширений конфигурации для подмены макетов или создавать собственные записи в справочниках настроек печати, если конфигурация это позволяет.

Вариант 2: Отправка собственных печатных форм (PDF) с подписью

Рассмотрим ситуацию, когда у вас есть внешняя печатная форма (файл .epf), например, «Спецификация», и вам нужно отправить её через ЭДО так, чтобы она была подписана электронной подписью. Как мы выяснили, отправлять её как «прикрепленный файл» к УПД — не лучший вариант, так как подпись часто накладывается на основной документ, а вложение остается просто файлом.

Правильный путь — формирование Произвольного документа ЭДО. В этом случае файл (например, PDF) передается как самостоятельный объект обмена, к которому прикладывается файл отсоединенной электронной подписи.

Проанализируем программный способ реализации этой задачи. Допустим, у нас есть макет табличного документа, который мы хотим превратить в PDF и отправить в ЭДО.


// Пример формирования PDF из табличного документа для ЭДО
ТабДок = Новый ТабличныйДокумент;
// ... здесь код заполнения ТабДока данными из вашей спецификации ...

ПутьКФайлу = КаталогВременныхФайлов() + "Спецификация_" + НомерДокумента + ".pdf";
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);

// Далее необходимо программно создать объект "ЭлектронныйДокумент" 
// и привязать его к владельцу (например, к Реализации товаров и услуг)
// В типовых конфигурациях для этого используется программный интерфейс модуля "ЭДО"

В типовых конфигурациях 1С (БП 3.0, УТ 11) предусмотрена возможность настройки отправки любых печатных форм. В настройках обмена с конкретным контрагентом можно указать, что для определенного типа документа будет использоваться формат PDF. При нажатии кнопки «Отправить по ЭДО» в документе-основании, система сама сформирует файл по вашему макету и предложит его подписать.

Визуализация подписи (Штамп ЭП)

Посмотрим на ситуацию со стороны бухгалтера: им важно, чтобы на документе «стояла печать». При отправке произвольного PDF через сервис 1С-ЭДО (оператор Калуга Астрал), система позволяет автоматически накладывать штамп визуализации электронной подписи.

Этот штамп содержит информацию о владельце сертификата, серийном номере и периоде действия. Он не является самой подписью (подпись — это криптографический файл рядом), но он делает PDF-документ привычным для человеческого восприятия. Настройка этого штампа обычно находится в разделе: Администрирование -> Обмен электронными документами -> Настройки формирования штампа отметки об электронной подписи.

Использование дополнительных полей в XML

Если вы все же решили использовать формализованный УПД, но вам нужно передать в нем данные из вашей спецификации, разберем метод Дополнительных полей. Формат ФНС предусматривает блок ИнфПолФХЖ1 (Информационное поле факта хозяйственной жизни). Вы можете программно заполнить эти теги любыми данными.

Пример структуры кода для добавления доп. сведений в XML через расширение (перехват процедуры формирования данных):


// В расширении перехватываем формирование данных для XML
Процедура ПередЗаписьюДанныхЭДО(ДанныеДокумента, Источник)
    // Добавляем свои данные в структуру
    НоваяСтрокаДопИнфо = ДанныеДокумента.ДополнительныеСведения.Добавить();
    НоваяСтрокаДопИнфо.Имя = "НомерСпецификации";
    НоваяСтрокаДопИнфо.Значение = "СП-001/2023";
КонецПроцедуры

Однако помните: чтобы эти данные увидел контрагент, его система ЭДО должна уметь отображать эти поля, либо вы должны предоставить ему свой отредактированный XSLT-шаблон (хотя в роуминге это работает редко). Поэтому для передачи сложной графической части или специфических таблиц вариант с PDF является наиболее надежным.

Подведем итоги

Для успешного внедрения своих форм в ЭДО мы рекомендуем придерживаться следующей стратегии:

  1. Для юридически значимых данных (цены, налоги, реквизиты) используйте стандартные УПД, дополняя их через расширения в блоки дополнительных сведений.
  2. Для визуально сложных документов (спецификации с чертежами, сложные условия поставок) используйте отправку произвольных документов в формате PDF.
  3. Для изменения внешнего вида используйте редактирование XSLT в регистре ПравилаПреобразованияФорматов, предварительно выгрузив и изучив структуру существующих шаблонов.

Такой подход обеспечит корректную обработку документов на стороне контрагента и полное соответствие требованиям законодательства при использовании электронной подписи.

← На главную