Как найти и изменить макет УПД в ЭДО для 1С:УТ 11.5 и программно управлять статусом документа?

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

При работе с электронным документооборотом (ЭДО) в 1С:Управление торговлей 11.5 многие разработчики и администраторы сталкиваются с задачей изменения внешнего вида или состава данных передаваемого документа. Типичный пример — необходимость принудительной установки Статуса 1 в Универсальном передаточном документе (УПД). Попытки найти привычный макет (как в печатных формах) часто заканчиваются неудачей. Разберем подробно, как устроено формирование документов в ЭДО и где именно «прячутся» настройки их структуры.

Различие между печатной формой и электронным документом

Первое и самое важное, что мы должны уяснить: в ЭДО не существует «макета» в классическом понимании 1С (объекта типа Макет в конфигураторе). В то время как для печати на бумаге система формирует табличный документ (MXL), для ЭДО формируется файл в формате XML, строго соответствующий требованиям ФНС — для этого подойдёт обработка выгрузки УПД в формате XML для ЭДО.

Проанализируем ситуацию: когда вы нажимаете кнопку «Просмотреть электронный документ», система показывает вам визуализацию. Эта «картинка» формируется «на лету» путем наложения XML-данных на XSLT-трансформацию. Если вы измените визуальный макет, это изменит отображение документа только на вашем экране, но не затронет данные, которые получит контрагент. Контрагент получит XML-файл, который его учетная система (или оператор ЭДО) разберет согласно утвержденному формату (например, 5.01 или 820).

Как определяется Статус УПД (1 или 2) в системе

Статус УПД в ЭДО не является статичным полем. Рассмотрим логику, по которой 1С:УТ 11.5 вычисляет этот статус автоматически:

  1. Статус 1 присваивается, если документ объединяет в себе функции счета-фактуры и первичного документа (накладной/акта). Для этого в системе обязательно должен быть создан и проведен документ Счет-фактура выданная, связанный с документом реализации.
  2. Статус 2 устанавливается, если передается только первичный документ без функций счета-фактуры (например, если организация работает без НДС или СФ еще не выписана).

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

Где искать логику формирования XML в коде

Если настройки не помогают и требуется программное вмешательство, нам придется обратиться к Библиотеке электронного документооборота (БЭД). Весь процесс формирования данных сосредоточен не в формах документов, а в общих модулях.

Выясним причину, по которой поиск по слову «Статус» в макетах не дает результата: данные собираются в структуру, которая затем передается в XDTO-пакет. Основные точки входа для анализа:

Рассмотрим пример функции, которая может отвечать за определение типа контента. В коде это часто выглядит как заполнение свойства Функция или Статус в структуре данных:


// Пример логики в модулях БЭД
ДанныеДокумента.Вставить("Статус", ?(ДокументОснование.ВыставленСчетФактура, "1", "2"));

Использование расширений для подмены данных

Чтобы «подсунуть» нужный статус, не снимая конфигурацию с поддержки, лучше всего использовать механизм расширений. Нам нужно перехватить процедуру, которая заполняет структуру данных перед их конвертацией в XML. Ищите методы с названиями вроде ПриОпределенииДанныхЭлектронногоДокумента или ЗаполнитьДанныеУПД. При необходимости изменения других реквизитов без написания кода можно воспользоваться расширением для произвольного заполнения полей УПД в ЭДО.

Разберем по шагам, как это реализовать:

  1. Создайте новое расширение.
  2. Найдите общий модуль, отвечающий за формирование УПД (например, УниверсальныйПередаточныйДокумент_5_01_ФНС).
  3. Используйте аннотацию &После или &Вместо для процедуры, заполняющей структуру параметров.

Пример кода в расширении для принудительной установки статуса:


&После("ЗаполнитьПараметрыУПД")
Процедура Расш_ЗаполнитьПараметрыУПД(Параметры, ДанныеДокумента)
    // Принудительно устанавливаем статус 1 в структуре данных
    Если Параметры.Свойство("Статус") Тогда
        Параметры.Статус = "1";
    КонецЕсли;
КонецПроцедуры

Важно: Помните, что просто изменить цифру недостаточно. Если вы ставите Статус 1, формат 820@ требует наличия заполненных полей счета-фактуры (номер, дата, налоговые ставки). Если этих данных не будет в XML, документ не пройдет форматный контроль у оператора.

Как изменить визуальное отображение (XSLT)

Если же ваша задача — не изменить данные в XML, а просто добавить логотип или изменить шрифт при просмотре документа в интерфейсе 1С, вам нужно работать с Общими макетами. Посмотрите в конфигураторе макеты с типом XSL-трансформация.

Обычно они называются: ПФ_MXL_УниверсальныйПередаточныйДокумент_5_01_ФНС или аналогично. Изменение этого макета требует знаний языка XSLT. Однако помните, что это никак не повлияет на юридически значимый файл, который уйдет контрагенту.

Почему отладка может «проскакивать» нужные моменты

Проанализируем ситуацию, когда отладчик не останавливается в нужных местах. В современных версиях 1С:УТ формирование электронных документов часто выносится в фоновые задания. Чтобы успешно отладить процесс:

  1. Включите в настройках отладки возможность остановки в фоновых заданиях.
  2. Используйте поиск по конфигурации строки "СтатусОкумента" (именно с опечаткой, которая иногда встречается в старых форматах) или "Статус" внутри модулей БЭД.
  3. Обратите внимание на справочник НастройкиФормированияЭлектронныхДокументов, где может быть указан конкретный обработчик для формирования XML.

Таким образом, для решения вашей задачи мы рекомендуем действовать по следующему алгоритму: сначала проверить наличие связанных счетов-фактур и настроек обмена, и только при невозможности решить вопрос типовыми средствами — внедряться в логику формирования структуры данных через расширение в модулях БЭД.

← На главную