Часто возникает ситуация, когда в компании используется внешняя печатная форма (ВПФ) для документов реализации. В этой форме программно формируется расширенное или измененное наименование товаров и услуг, которое необходимо для клиента. Однако при отправке документа через 1С:ЭДО контрагент получает стандартные наименования из справочника Номенклатура. Это происходит потому, что механизмы ЭДО формируют XML-файл на основе данных объекта (документа), а не на основе сформированной печатной формы.
В этой статье мы разберем несколько способов, как синхронизировать данные внешней печатной формы и электронного документа, чтобы избежать расхождений и претензий со стороны контрагентов.
Прежде всего, проанализируем ситуацию: типовой механизм ЭДО в 1С работает через Библиотеку электронных документов (БЭД). Когда вы нажимаете кнопку «Сформировать электронный документ», система не запускает формирование печатной формы. Вместо этого она вызывает специальные процедуры в модуле менеджера документа или общих модулях, которые напрямую считывают данные из табличных частей документа в базе данных. Внешняя печатная форма — это отдельный объект, алгоритмы которого никак не связаны с процессом генерации XML-файла для ЭДО. Выясним причину расхождений: ваши правки существуют только в «оперативной памяти» в момент печати, но не записаны в базу данных и не известны подсистеме ЭДО.
Самый простой и методологически верный способ для услуг — использование реквизита Содержание в табличной части документа Реализация товаров и услуг. Рассмотрим этот вариант подробнее:
Содержание.Номенклатура.ПриЗаписи.Таким образом, данные будут физически храниться в документе, и ВПФ сможет их просто выводить, а ЭДО — автоматически подхватывать.
В современных версиях 1С реализован функционал настройки заполнения электронных документов. Разберем по шагам, как это работает:
ИнфПолеТекст) или заменять стандартные поля.Дополнительные сведения документа, вы сможете настроить их передачу в XML без изменения программного кода конфигурации.Если требуется сложный алгоритм изменения наименования (например, сборка строки из характеристик, серий и номеров ГТД), который нельзя просто записать в Содержание, придется воспользоваться расширением. Нам необходимо перехватить формирование структуры данных для ЭДО.
Проанализируем ключевые точки входа. В модуле менеджера документа (или в специализированных модулях БЭД) существует процедура, отвечающая за заполнение данных для электронного документа. Рассмотрим пример использования аннотации &После для процедуры формирования данных:
&После("ПриФормированииДанныхЭлектронногоДокумента")
Процедура Расш_ПриФормированииДанныхЭлектронногоДокумента(Объект, ДанныеЭлектронногоДокумента)
// Проходим по строкам сформированных данных для ЭДО
Для Каждого СтрокаТЧ Из ДанныеЭлектронногоДокумента.ТаблицаТовары Цикл
// Здесь можно вызвать алгоритм из вашей внешней печатной формы
// или продублировать его. Например:
НовоеНаименование = СформироватьНаименованиеПоАлгоритмуВПФ(СтрокаТЧ.Номенклатура, Объект);
// Подменяем наименование в структуре данных
СтрокаТЧ.Наименование = НовоеНаименование;
КонецЦикла;
КонецПроцедуры
Важно помнить, что в разных версиях БЭД названия процедур могут отличаться (например, ОпределитьДанныеДляПечати или ЗаполнитьДанныеДляЭлектронногоДокумента). Основная идея — найти таблицу, которая готовится к конвертации в XML, и изменить в ней строковые значения.
Если вы используете внешние модули от операторов (например, Диадок или СБИС), у них часто есть встроенные редакторы правил заполнения. Рассмотрим этот сценарий:
В настройках модуля оператора можно прописать скрипт на встроенном языке 1С, который будет выполняться непосредственно перед отправкой. В этом скрипте вы можете программно обратиться к метаданным документа и принудительно заменить значение тега НаимТов на результат выполнения функции из вашей внешней печатной формы.
Если ваша печатная форма настолько специфична, что её невозможно уложить в жесткий формат УПД (например, сложная верстка, графики или дополнительные таблицы внутри строк), можно рассмотреть вариант отправки документа в формате PDF.
Внимание: Этот способ подходит только для неформализованных документов. Если вам нужно отправить юридически значимый Счет-фактуру или УПД со статусом 1, вы обязаны использовать формат XML, утвержденный ФНС. В этом случае PDF может идти только как дополнительное приложение к основному пакету документов.
Разберем важные моменты, связанные с налоговым учетом. При программном изменении наименований в ЭДО:
Подведем итог: наиболее надежным и «чистым» способом является запись нужных данных в поле Содержание документа еще на этапе его заполнения в 1С. Если же это невозможно, используйте механизмы расширений для подмены данных в структуре ДанныеЭлектронногоДокумента, что позволит синхронизировать вашу ВПФ и файл ЭДО без внесения изменений в типовой код конфигурации.