При интеграции электронного документооборота с учетной системой нередко возникает задача передачи нестандартных данных в электронный документ (УПД, УКД или накладную). Для этого в модуле Диадока используется плагин «Изменение контента» и сценарии типа ДополнительныеСведения. Однако если реквизиты в документ РеализацияТоваровУслуг были добавлены через расширение конфигурации, при попытке настроить передачу в визуальном интерфейсе колонка «Ссылка» не отображает новые поля. Разберем причины такого поведения и способы корректной передачи реквизитов.
Проанализируем механику работы визуальной настройки в плагине Диадока. В сценарии ДополнительныеСведения визуальный конструктор ориентирован исключительно на типовой механизм БСП — подсистему «Дополнительные реквизиты и сведения». Список выбора в столбце «Ссылка» формируется динамически на основании данных плана видов характеристик ДополнительныеРеквизитыИСведения, а также связанных регистров сведений ДополнительныеСведения и ЗначенияСвойствОбъектов.
Собственные реквизиты шапки документа (как типовые реквизиты конфигурации, так и новые реквизиты, добавленные разработчиком через расширение) конструктивно не попадают в этот перечень, поскольку плагин в визуальном режиме не считывает метаданные самого объекта 1С.
Для того чтобы задействовать реквизиты шапки документа, необходимо перейти в экспертный режим плагина. Разберем по шагам, как это сделать:
ДополнительныеСведения для документа РеализацияТоваровУслуг.Снятие этого флага переключает плагин из табличного режима привязок БСП в режим исполнения произвольного программного кода на встроенном языке 1С. В этом режиме разработчику становится доступен контекст выполнения, в котором передаются объектные данные документа и структура формируемого электронного документа.
Рассмотрим подробнее, как обратиться к реквизиту из расширения в коде сценария. В контексте обработчика доступна ссылка на исходный документ (обычно через переменную Документ1С) и XDTO-структура контента формируемого файла (например, Content или специализированные коллекции информационных полей):
// Получаем значение реквизита, добавленного через расширение конфигурации
ЗначениеПоля = Документ1С.ИмяНовогоРеквизита;
Если ЗначениеЗаполнено(ЗначениеПоля) Тогда
// Заполняем пользовательское информационное поле УПД (ИнфПолФХЖ1)
ИнфоПоле = Content.AddAdditionalInfo();
ИнфоПоле.Id = "ИдентификаторПоля";
ИнфоПоле.Value = Строка(ЗначениеПоля);
КонецЕсли;
Обратите внимание: обращение к свойству Документ1С.ИмяНовогоРеквизита работает напрямую, так как расширение дополняет структуру объекта при условии корректного применения в информационной базе.
При работе с реквизитами из расширений необходимо учитывать технические нюансы платформы 1С:Предприятие:
Поле объекта не обнаружено. Перед вызовом в критичных сценариях рекомендуется проверять доступность реквизита.Если требуется передать данные без отключения визуальной настройки или без модификации кода сценария, рассмотрим два альтернативных подхода:
Вместо добавления реквизита в метаданные через расширение можно создать стандартное дополнительное сведение. Для этого перейдем в раздел «Администрирование» → «Общие настройки» → «Дополнительные реквизиты и сведения» и назначим для документа Реализация (акты, накладные, УПД) нужное свойство. Такое сведение сразу появится в выпадающем списке колонки «Ссылка» при включенной визуальной настройке плагина.
Если алгоритм заполнения требует сложных расчетов, анализа нескольких регистров или строгого форматирования по требованиям контрагента, оптимально вынести обработку во внешний подключаемый модуль (.epf). В подключаемом модуле переопределяется процедура заполнения контента перед формированием XML-файла УПД, что позволяет централизованно управлять логикой формирования электронных документов.