При работе с электронным документооборотом (ЭДО) часто возникает необходимость передать контрагенту специфические данные, которые не предусмотрены стандартными полями формы УПД или счета-фактуры. В системе 1С для таких целей используются Дополнительные сведения. Однако просто заполнить их в документе недостаточно — нужно «научить» модуль ЭДО подтягивать эти значения в XML-файл электронного документа, в частности в блок ИнфПолФХЖ1 (Информационное поле факта хозяйственной жизни). Для этой задачи можно использовать расширение для передачи кодов подразделений и реквизитов договора через дополнительные сведения.
Рассмотрим подробно, как настроить автоматическую передачу этих данных без программирования и снятия конфигурации с поддержки, используя встроенный редактор формул 1С-ЭДО.
Прежде чем переходить к настройке, разберем, как 1С формирует электронный документ. Блок ИнфПолФХЖ1 представляет собой таблицу из пар «Имя — Значение». Типовой модуль ЭДО предоставляет специальный интерфейс, где можно сопоставить имя поля в XML с конкретным реквизитом или формулой на языке 1С. Вычисление этих формул происходит в момент формирования электронного документа через функцию Вычислить() в безопасном режиме. Это означает, что мы можем использовать обращения к полям объекта, но имеем ограничения на использование некоторых серверных процедур.
Для начала нам необходимо найти место, где настраиваются правила заполнения для конкретного контрагента или для всех сразу. Проанализируем путь к этим настройкам:
В открывшейся форме нам нужно создать запись, которая укажет системе, какое «Имя» будет у тега в XML и откуда брать «Значение».
При добавлении нового поля нам предложат выбрать «Имя поля». Это произвольная строка, которую увидит ваш контрагент (например, «НомерДоговора» или «ФИО_Водителя»). Самое важное — поле Способ формирования. Здесь мы выбираем вариант Формула.
Теперь разберем самый сложный момент — синтаксис формулы. В отличие от обычных реквизитов (таких как Дата или Номер), дополнительные сведения не являются «жесткими» полями объекта. Они хранятся в отдельном регистре сведений. Однако конструктор формул ЭДО в современных версиях (БП 3.0.122 и выше) умеет работать с ними через дерево доступных реквизитов. Для своевременного получения необходимых обновлений и корректной работы конструктора удобно использовать программу для автоматического обновления баз 1С.
Рассмотрим типичную ситуацию: вам нужно достать сведение «ДСблабла» из документа реализации. В редакторе формул вы увидите дерево доступных полей. Проанализируем структуру этого дерева:
Пример формулы, которую сгенерирует конструктор, если просто перетащить поле:
Источник.Свойства.ИмяВашегоСведения
Если вы хотите написать формулу вручную, помните, что обращение идет через коллекцию свойств объекта Источник. Если система выдает ошибку при проверке, попробуйте обратиться к значению через стандартные функции преобразования типов, так как XML-тег ожидает строку:
Строка(Источник.Свойства.ДСблабла)
Иногда дополнительное сведение имеет тип, отличный от строки (например, «СправочникСсылка: Контрагенты» или «Число»). Выясним, как правильно передать такие данные. Если мы передадим ссылку «как есть», 1С попытается преобразовать её в уникальный идентификатор (GUID), что вряд ли поймет контрагент. Чтобы передать наименование, используйте обращение через точку:
Источник.Свойства.ВашПеревозчик.Наименование
Если ваше сведение может быть не заполнено, желательно добавить проверку на пустое значение, чтобы не передавать пустые теги в XML:
?(ЗначениеЗаполнено(Источник.Свойства.Тест), Строка(Источник.Свойства.Тест), "Значение не указано")
Важно помнить, что вычисление формул в ЭДО происходит через механизм ОбщегоНазначения.ВычислитьВБезопасномРежиме(). Это накладывает определенные ограничения:
УправлениеСвойствами.ЗначениеСвойства(...) напрямую в поле формулы, скорее всего, приведет к ошибке прав доступа или ошибке проверки формулы.После того как формула написана, обязательно воспользуйтесь кнопкой Проверить формулу. Если проверка прошла успешно, сохраните настройки.
Обратите внимание: изменения в формулах не применяются к уже сформированным электронным документам. Чтобы проверить результат, выполните следующие действия: также для контроля отсутствия расхождений в учете после настройки обмена можно автоматически сверить бухгалтерские и налоговые проводки.
ИнфПолФХЖ1.Использование формул в настройках ЭДО — это мощный инструмент «low-code» разработки. Мы выяснили, что для передачи дополнительных сведений достаточно правильно указать путь к свойству через объект Источник. Это позволяет избежать создания расширений и написания кода в конфигураторе, сохраняя при этом гибкость настройки под требования каждого конкретного контрагента.