При работе с электронным документооборотом (ЭДО) в 1С:Управление торговлей 11.5 многие разработчики и администраторы сталкиваются с задачей изменения внешнего вида или состава данных передаваемого документа. Типичный пример — необходимость принудительной установки Статуса 1 в Универсальном передаточном документе (УПД). Попытки найти привычный макет (как в печатных формах) часто заканчиваются неудачей. Разберем подробно, как устроено формирование документов в ЭДО и где именно «прячутся» настройки их структуры.
Первое и самое важное, что мы должны уяснить: в ЭДО не существует «макета» в классическом понимании 1С (объекта типа Макет в конфигураторе). В то время как для печати на бумаге система формирует табличный документ (MXL), для ЭДО формируется файл в формате XML, строго соответствующий требованиям ФНС — для этого подойдёт обработка выгрузки УПД в формате XML для ЭДО.
Проанализируем ситуацию: когда вы нажимаете кнопку «Просмотреть электронный документ», система показывает вам визуализацию. Эта «картинка» формируется «на лету» путем наложения XML-данных на XSLT-трансформацию. Если вы измените визуальный макет, это изменит отображение документа только на вашем экране, но не затронет данные, которые получит контрагент. Контрагент получит XML-файл, который его учетная система (или оператор ЭДО) разберет согласно утвержденному формату (например, 5.01 или 820).
Статус УПД в ЭДО не является статичным полем. Рассмотрим логику, по которой 1С:УТ 11.5 вычисляет этот статус автоматически:
Счет-фактура выданная, связанный с документом реализации.Если ваша цель — всегда получать Статус 1, сначала проверьте настройки программы без вмешательства в код. Перейдем в раздел НСИ и администрирование — Настройка ИС и разделов — Обмен электронными документами — Настройки ЭДО. Здесь для конкретного контрагента в настройках отправки должна стоять галочка «Счет-фактура и первичный документ в одном документе». Если она установлена, но статус все равно «2», значит, в цепочке документов отсутствует выставленный счет-фактура. Для автоматического решения этой задачи по расписанию можно использовать обработку для автоматической простановки статуса УПД.
Если настройки не помогают и требуется программное вмешательство, нам придется обратиться к Библиотеке электронного документооборота (БЭД). Весь процесс формирования данных сосредоточен не в формах документов, а в общих модулях.
Выясним причину, по которой поиск по слову «Статус» в макетах не дает результата: данные собираются в структуру, которая затем передается в XDTO-пакет. Основные точки входа для анализа:
ЭлектронныйДокументооборотСлужебный.РеализацияТоваровУслугЭД или аналогичные (название зависит от версии БЭД, встроенной в вашу конфигурацию).Рассмотрим пример функции, которая может отвечать за определение типа контента. В коде это часто выглядит как заполнение свойства Функция или Статус в структуре данных:
// Пример логики в модулях БЭД
ДанныеДокумента.Вставить("Статус", ?(ДокументОснование.ВыставленСчетФактура, "1", "2"));
Чтобы «подсунуть» нужный статус, не снимая конфигурацию с поддержки, лучше всего использовать механизм расширений. Нам нужно перехватить процедуру, которая заполняет структуру данных перед их конвертацией в XML. Ищите методы с названиями вроде ПриОпределенииДанныхЭлектронногоДокумента или ЗаполнитьДанныеУПД. При необходимости изменения других реквизитов без написания кода можно воспользоваться расширением для произвольного заполнения полей УПД в ЭДО.
Разберем по шагам, как это реализовать:
УниверсальныйПередаточныйДокумент_5_01_ФНС).&После или &Вместо для процедуры, заполняющей структуру параметров.Пример кода в расширении для принудительной установки статуса:
&После("ЗаполнитьПараметрыУПД")
Процедура Расш_ЗаполнитьПараметрыУПД(Параметры, ДанныеДокумента)
// Принудительно устанавливаем статус 1 в структуре данных
Если Параметры.Свойство("Статус") Тогда
Параметры.Статус = "1";
КонецЕсли;
КонецПроцедуры
Важно: Помните, что просто изменить цифру недостаточно. Если вы ставите Статус 1, формат 820@ требует наличия заполненных полей счета-фактуры (номер, дата, налоговые ставки). Если этих данных не будет в XML, документ не пройдет форматный контроль у оператора.
Если же ваша задача — не изменить данные в XML, а просто добавить логотип или изменить шрифт при просмотре документа в интерфейсе 1С, вам нужно работать с Общими макетами. Посмотрите в конфигураторе макеты с типом XSL-трансформация.
Обычно они называются: ПФ_MXL_УниверсальныйПередаточныйДокумент_5_01_ФНС или аналогично. Изменение этого макета требует знаний языка XSLT. Однако помните, что это никак не повлияет на юридически значимый файл, который уйдет контрагенту.
Проанализируем ситуацию, когда отладчик не останавливается в нужных местах. В современных версиях 1С:УТ формирование электронных документов часто выносится в фоновые задания. Чтобы успешно отладить процесс:
"СтатусОкумента" (именно с опечаткой, которая иногда встречается в старых форматах) или "Статус" внутри модулей БЭД.НастройкиФормированияЭлектронныхДокументов, где может быть указан конкретный обработчик для формирования XML.Таким образом, для решения вашей задачи мы рекомендуем действовать по следующему алгоритму: сначала проверить наличие связанных счетов-фактур и настроек обмена, и только при невозможности решить вопрос типовыми средствами — внедряться в логику формирования структуры данных через расширение в модулях БЭД.