Где найти и как отредактировать макет универсального передаточного документа (УПД) в 1С:Бухгалтерия предприятия 3.0

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

При работе в 1С:Бухгалтерия предприятия 3.0 (БП 3.0) часто возникает необходимость кастомизации печатных форм под нужды конкретного бизнеса. Одной из самых востребованных форм является Универсальный передаточный документ (УПД). Однако из-за сложности структуры конфигурации и механизмов динамического формирования печатных форм, поиск нужного макета может превратиться в настоящий квест. В этой статье мы подробно разберем, где «живет» макет УПД, как его правильно редактировать и какие нюансы следует учитывать при работе с программным кодом формирования этого документа.

Где искать макет УПД в конфигураторе

Для начала проанализируем структуру конфигурации. В современных версиях БП 3.0 разработчики 1С используют механизм выноса общей логики печати в специализированные объекты. Если мы откроем конфигуратор, то не найдем макет УПД непосредственно внутри документа РеализацияТоваровУслуг. Вместо этого нам следует обратить внимание на следующие места:

  1. Обработка «ПечатьУПД»: Это основной объект, отвечающий за формирование формы. Перейдем в ветку Обработки -> ПечатьУПД -> Макеты. Здесь вы увидите список макетов. Важно понимать, что имя макета часто содержит номер постановления правительства, которому он соответствует. Например, ищите макеты с именами типа ПФ_MXL_УниверсальныйПередаточныйДокумент или ПФ_MXL_УниверсальныйПередаточныйДокумент_534.
  2. Общие макеты: В последних релизах многие формы дублируются или полностью переносятся в ветку Общие макеты. Это позволяет системе использовать один и тот же шаблон для разных документов: реализаций, корректировок, передач ОС. Проверьте список общих макетов по маске «УниверсальныйПередаточныйДокумент».

Разберем, почему макетов может быть несколько. Законодательство в части НДС и счетов-фактур (на базе которых строится УПД) меняется регулярно. Программа должна уметь печатать старые документы по формам, действовавшим на дату их создания, и новые документы по актуальным формам. За выбор конкретного макета отвечает программный код в модуле менеджера или общем модуле.

Программная логика выбора макета

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


// Пример логики выбора макета в зависимости от даты
Если ДатаДокумента < ДатаНачалаДействияПостановления534 Тогда
    ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент_Старый";
ИначеЕсли ДатаДокумента < ДатаНовыхИзменений2024 Тогда
    ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент_534";
Иначе
    ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент_Актуальный";
КонецЕсли;

Чтобы точно выяснить, какой макет используется в вашем случае, рекомендуем запустить отладку в процедуре Печать соответствующего документа и проследить путь формирования коллекции печатных форм. Особое внимание уделите параметру ИмяМакета, который передается в метод ПолучитьМакет().

Редактирование макета без конфигуратора (в пользовательском режиме)

Многие специалисты забывают, что в 1С:Предприятие 8.3 реализован мощный механизм правки печатных форм без изменения самой конфигурации. Это «безопасный» способ, который не мешает последующему обновлению программы. Рассмотрим, как это сделать по шагам:

  1. Перейдем в раздел Администрирование.
  2. Выберем пункт Печатные формы, отчеты и обработки.
  3. Откроем гиперссылку Макеты печатных форм.
  4. В открывшемся списке воспользуемся поиском и найдем «Универсальный передаточный документ». Обратите внимание, что их может быть несколько для разных документов-оснований.
  5. Нажмем кнопку Изменить.

Система откроет встроенный редактор табличных документов. Здесь вы можете менять шрифты, добавлять логотипы, изменять границы ячеек. Важный нюанс: после сохранения макета он будет подсвечен в списке синим цветом. Это означает, что теперь система игнорирует «жестко заданный» макет из конфигуратора и использует ваш вариант. Если вы захотите вернуться к типовому виду, достаточно нажать кнопку Использовать стандартный макет.

Технические особенности: Статусы и динамические колонки

Выясним причину, почему иногда правка макета не дает нужного результата в части отображения данных. УПД имеет два статуса:

Статус 1: документ используется одновременно как счет-фактура и первичный передаточный документ (накладная/акт).

Статус 2: документ используется только как первичный передаточный документ.

В макете области для обоих статусов зачастую одни и те же, но программный код УниверсальныйПередаточныйДокумент.СформироватьПечатнуюФорму() скрывает блоки, относящиеся к налогам и ставкам НДС, если выбран Статус 2. Если ваша задача — добавить новую колонку, убедитесь, что она прописана в коде заполнения параметров, иначе она останется пустой.

Также проанализируем ситуацию с прослеживаемыми товарами. С 2021 года в УПД появились графы для РНПТ и единиц измерения по ОКЕИ для прослеживаемости. Эти колонки в макете могут быть очень узкими или скрытыми. Они расширяются кодом только в том случае, если в табличной части документа есть хотя бы одна позиция, подлежащая прослеживаемости. Вот пример того, как система управляет видимостью колонок:


// Примерный код управления видимостью колонок прослеживаемости
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
Если ЕстьПрослеживаемыеТовары Тогда
    ОбластьМакета.Параметры.Заполнить(ДанныеСтроки);
Иначе
    // Код скрытия или сжатия колонок 12, 12а, 13
КонецЕсли;

Использование расширений для изменения УПД

Если вам недостаточно простого изменения визуального оформления (например, нужно добавить вывод дополнительных данных из свойств номенклатуры), лучшим решением будет использование Расширений конфигурации. Рассмотрим, почему это эффективнее правки основной конфигурации:

Для этого создайте новое расширение, добавьте в него обработку ПечатьУПД и макет, который вы хотите изменить. Затем с помощью аннотации &Вместо или &После переопределите метод печати. Рассмотрим пример перехвата функции формирования печатной формы:


&Вместо("СформироватьКоллекциюПечатныхФорм")
Процедура Расш_СформироватьКоллекциюПечатныхФорм(ПараметрыПечати, КоллекцияПечатныхФорм)
    // Вызов стандартной логики или написание своей
    // Здесь можно подменить макет на свой собственный из расширения
КонецПроцедуры

Подведение итогов

Мы выяснили, что макет УПД в БП 3.0 — это сложный составной объект. Если вам нужно просто поменять шрифт или добавить логотип, используйте РегистрСведений.ПользовательскиеМакетыПечати (через меню Администрирование). Если же требуется серьезная переработка логики формирования документа, ищите макеты в Общих макетах или обработке ПечатьУПД, используя механизм расширений. Помните о зависимости формы от законодательных актов и проверяйте дату документа при тестировании внесенных изменений в макет.

← На главную