Как передать данные из внешней печатной формы в электронный документ (ЭДО) 1С

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

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

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

Почему ЭДО не «видит» внешнюю печатную форму?

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

Решение 1. Использование стандартного поля «Содержание»

Самый простой и методологически верный способ для услуг — использование реквизита Содержание в табличной части документа Реализация товаров и услуг. Рассмотрим этот вариант подробнее:

  1. В табличной части документа (вкладка «Услуги») есть скрытое или видимое поле Содержание.
  2. Если это поле заполнено, подсистема ЭДО при формировании XML-файла приоритетно берет текст из него, а не краткое наименование из справочника Номенклатура.
  3. Вместо того чтобы менять текст только во внешней печатной форме, перенесите логику формирования строки в код формы документа или подписки на событие ПриЗаписи.

Таким образом, данные будут физически храниться в документе, и ВПФ сможет их просто выводить, а ЭДО — автоматически подхватывать.

Решение 2. Настройка дополнительных полей ЭДО (без программирования)

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

  1. Перейдем в настройки ЭДО с конкретным контрагентом.
  2. Найдем раздел «Настройки формирования». В некоторых конфигурациях (на базе БЭД версии 1.9 и выше) можно указать дополнительные сведения или реквизиты, которые должны попадать в информационные поля (теги ИнфПолеТекст) или заменять стандартные поля.
  3. Если текст, который вы добавляете в ВПФ, можно вынести в Дополнительные сведения документа, вы сможете настроить их передачу в XML без изменения программного кода конфигурации.

Решение 3. Использование расширения конфигурации (для программистов)

Если требуется сложный алгоритм изменения наименования (например, сборка строки из характеристик, серий и номеров ГТД), который нельзя просто записать в Содержание, придется воспользоваться расширением. Нам необходимо перехватить формирование структуры данных для ЭДО.

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


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

КонецПроцедуры

Важно помнить, что в разных версиях БЭД названия процедур могут отличаться (например, ОпределитьДанныеДляПечати или ЗаполнитьДанныеДляЭлектронногоДокумента). Основная идея — найти таблицу, которая готовится к конвертации в XML, и изменить в ней строковые значения.

Решение 4. Настройка маппинга XML через правила оператора

Если вы используете внешние модули от операторов (например, Диадок или СБИС), у них часто есть встроенные редакторы правил заполнения. Рассмотрим этот сценарий:

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

Решение 5. Отправка печатной формы как произвольного документа

Если ваша печатная форма настолько специфична, что её невозможно уложить в жесткий формат УПД (например, сложная верстка, графики или дополнительные таблицы внутри строк), можно рассмотреть вариант отправки документа в формате PDF.

Внимание: Этот способ подходит только для неформализованных документов. Если вам нужно отправить юридически значимый Счет-фактуру или УПД со статусом 1, вы обязаны использовать формат XML, утвержденный ФНС. В этом случае PDF может идти только как дополнительное приложение к основному пакету документов.

Важные рекомендации при изменении данных ЭДО

Разберем важные моменты, связанные с налоговым учетом. При программном изменении наименований в ЭДО:

Подведем итог: наиболее надежным и «чистым» способом является запись нужных данных в поле Содержание документа еще на этапе его заполнения в 1С. Если же это невозможно, используйте механизмы расширений для подмены данных в структуре ДанныеЭлектронногоДокумента, что позволит синхронизировать вашу ВПФ и файл ЭДО без внесения изменений в типовой код конфигурации.

← На главную