Как передать дополнительные сведения документа в 1С-ЭДО через формулы

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

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

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

Понимание механизма работы дополнительных полей в ЭДО

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

Шаг 1. Поиск настроек заполнения дополнительных полей

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

  1. Перейдем в раздел Администрирование — Обмен электронными документами.
  2. Откроем пункт Настройки ЭДО.
  3. В списке настроек выберем нужную строку с контрагентом и организацией.
  4. В колонке Настройки отправки нажмем на ссылку (обычно это вид документа, например, «УПД»).
  5. В открывшейся форме настроек формирования документа найдем таблицу или гиперссылку Настройка правил заполнения дополнительных полей.

Шаг 2. Добавление нового информационного поля

В открывшейся форме нам нужно создать запись, которая укажет системе, какое «Имя» будет у тега в XML и откуда брать «Значение».

При добавлении нового поля нам предложат выбрать «Имя поля». Это произвольная строка, которую увидит ваш контрагент (например, «НомерДоговора» или «ФИО_Водителя»). Самое важное — поле Способ формирования. Здесь мы выбираем вариант Формула.

Шаг 3. Составление формулы для Дополнительных сведений

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

Рассмотрим типичную ситуацию: вам нужно достать сведение «ДСблабла» из документа реализации. В редакторе формул вы увидите дерево доступных полей. Проанализируем структуру этого дерева:

Пример формулы, которую сгенерирует конструктор, если просто перетащить поле:

Источник.Свойства.ИмяВашегоСведения

Если вы хотите написать формулу вручную, помните, что обращение идет через коллекцию свойств объекта Источник. Если система выдает ошибку при проверке, попробуйте обратиться к значению через стандартные функции преобразования типов, так как XML-тег ожидает строку:

Строка(Источник.Свойства.ДСблабла)

Шаг 4. Обработка сложных случаев и типов данных

Иногда дополнительное сведение имеет тип, отличный от строки (например, «СправочникСсылка: Контрагенты» или «Число»). Выясним, как правильно передать такие данные. Если мы передадим ссылку «как есть», 1С попытается преобразовать её в уникальный идентификатор (GUID), что вряд ли поймет контрагент. Чтобы передать наименование, используйте обращение через точку:

Источник.Свойства.ВашПеревозчик.Наименование

Если ваше сведение может быть не заполнено, желательно добавить проверку на пустое значение, чтобы не передавать пустые теги в XML:


?(ЗначениеЗаполнено(Источник.Свойства.Тест), Строка(Источник.Свойства.Тест), "Значение не указано")

Особенности работы в безопасном режиме

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

Проверка и отладка

После того как формула написана, обязательно воспользуйтесь кнопкой Проверить формулу. Если проверка прошла успешно, сохраните настройки.

Обратите внимание: изменения в формулах не применяются к уже сформированным электронным документам. Чтобы проверить результат, выполните следующие действия: также для контроля отсутствия расхождений в учете после настройки обмена можно автоматически сверить бухгалтерские и налоговые проводки.

  1. Зайдите в документ 1С.
  2. Нажмите ЭДО — Просмотреть электронный документ.
  3. Если документ уже был сформирован ранее, нажмите Другие действия — Переформировать.
  4. После обновления документа найдите в визуализации раздел «Дополнительные сведения» или откройте XML-файл и проверьте наличие тега ИнфПолФХЖ1.

Резюме

Использование формул в настройках ЭДО — это мощный инструмент «low-code» разработки. Мы выяснили, что для передачи дополнительных сведений достаточно правильно указать путь к свойству через объект Источник. Это позволяет избежать создания расширений и написания кода в конфигураторе, сохраняя при этом гибкость настройки под требования каждого конкретного контрагента.

← На главную