При работе в 1С:Бухгалтерия предприятия 3.0 (БП 3.0) часто возникает необходимость кастомизации печатных форм под нужды конкретного бизнеса. Одной из самых востребованных форм является Универсальный передаточный документ (УПД). Однако из-за сложности структуры конфигурации и механизмов динамического формирования печатных форм, поиск нужного макета может превратиться в настоящий квест. В этой статье мы подробно разберем, где «живет» макет УПД, как его правильно редактировать и какие нюансы следует учитывать при работе с программным кодом формирования этого документа.
Для начала проанализируем структуру конфигурации. В современных версиях БП 3.0 разработчики 1С используют механизм выноса общей логики печати в специализированные объекты. Если мы откроем конфигуратор, то не найдем макет УПД непосредственно внутри документа РеализацияТоваровУслуг. Вместо этого нам следует обратить внимание на следующие места:
Обработки -> ПечатьУПД -> Макеты. Здесь вы увидите список макетов. Важно понимать, что имя макета часто содержит номер постановления правительства, которому он соответствует. Например, ищите макеты с именами типа ПФ_MXL_УниверсальныйПередаточныйДокумент или ПФ_MXL_УниверсальныйПередаточныйДокумент_534.Общие макеты. Это позволяет системе использовать один и тот же шаблон для разных документов: реализаций, корректировок, передач ОС. Проверьте список общих макетов по маске «УниверсальныйПередаточныйДокумент».Разберем, почему макетов может быть несколько. Законодательство в части НДС и счетов-фактур (на базе которых строится УПД) меняется регулярно. Программа должна уметь печатать старые документы по формам, действовавшим на дату их создания, и новые документы по актуальным формам. За выбор конкретного макета отвечает программный код в модуле менеджера или общем модуле.
Проанализируем ситуацию: вы нашли макет в конфигураторе, внесли изменения, но при печати в пользовательском режиме ничего не поменялось. Это происходит потому, что система динамически определяет, какой именно макет использовать. Рассмотрим упрощенный пример логики, которая обычно располагается в общем модуле УниверсальныйПередаточныйДокументПересчет или в менеджере обработки печати:
// Пример логики выбора макета в зависимости от даты
Если ДатаДокумента < ДатаНачалаДействияПостановления534 Тогда
ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент_Старый";
ИначеЕсли ДатаДокумента < ДатаНовыхИзменений2024 Тогда
ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент_534";
Иначе
ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент_Актуальный";
КонецЕсли;
Чтобы точно выяснить, какой макет используется в вашем случае, рекомендуем запустить отладку в процедуре Печать соответствующего документа и проследить путь формирования коллекции печатных форм. Особое внимание уделите параметру ИмяМакета, который передается в метод ПолучитьМакет().
Многие специалисты забывают, что в 1С:Предприятие 8.3 реализован мощный механизм правки печатных форм без изменения самой конфигурации. Это «безопасный» способ, который не мешает последующему обновлению программы. Рассмотрим, как это сделать по шагам:
Система откроет встроенный редактор табличных документов. Здесь вы можете менять шрифты, добавлять логотипы, изменять границы ячеек. Важный нюанс: после сохранения макета он будет подсвечен в списке синим цветом. Это означает, что теперь система игнорирует «жестко заданный» макет из конфигуратора и использует ваш вариант. Если вы захотите вернуться к типовому виду, достаточно нажать кнопку Использовать стандартный макет.
Выясним причину, почему иногда правка макета не дает нужного результата в части отображения данных. УПД имеет два статуса:
Статус 1: документ используется одновременно как счет-фактура и первичный передаточный документ (накладная/акт).
Статус 2: документ используется только как первичный передаточный документ.
В макете области для обоих статусов зачастую одни и те же, но программный код УниверсальныйПередаточныйДокумент.СформироватьПечатнуюФорму() скрывает блоки, относящиеся к налогам и ставкам НДС, если выбран Статус 2. Если ваша задача — добавить новую колонку, убедитесь, что она прописана в коде заполнения параметров, иначе она останется пустой.
Также проанализируем ситуацию с прослеживаемыми товарами. С 2021 года в УПД появились графы для РНПТ и единиц измерения по ОКЕИ для прослеживаемости. Эти колонки в макете могут быть очень узкими или скрытыми. Они расширяются кодом только в том случае, если в табличной части документа есть хотя бы одна позиция, подлежащая прослеживаемости. Вот пример того, как система управляет видимостью колонок:
// Примерный код управления видимостью колонок прослеживаемости
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
Если ЕстьПрослеживаемыеТовары Тогда
ОбластьМакета.Параметры.Заполнить(ДанныеСтроки);
Иначе
// Код скрытия или сжатия колонок 12, 12а, 13
КонецЕсли;
Если вам недостаточно простого изменения визуального оформления (например, нужно добавить вывод дополнительных данных из свойств номенклатуры), лучшим решением будет использование Расширений конфигурации. Рассмотрим, почему это эффективнее правки основной конфигурации:
Для этого создайте новое расширение, добавьте в него обработку ПечатьУПД и макет, который вы хотите изменить. Затем с помощью аннотации &Вместо или &После переопределите метод печати. Рассмотрим пример перехвата функции формирования печатной формы:
&Вместо("СформироватьКоллекциюПечатныхФорм")
Процедура Расш_СформироватьКоллекциюПечатныхФорм(ПараметрыПечати, КоллекцияПечатныхФорм)
// Вызов стандартной логики или написание своей
// Здесь можно подменить макет на свой собственный из расширения
КонецПроцедуры
Мы выяснили, что макет УПД в БП 3.0 — это сложный составной объект. Если вам нужно просто поменять шрифт или добавить логотип, используйте РегистрСведений.ПользовательскиеМакетыПечати (через меню Администрирование). Если же требуется серьезная переработка логики формирования документа, ищите макеты в Общих макетах или обработке ПечатьУПД, используя механизм расширений. Помните о зависимости формы от законодательных актов и проверяйте дату документа при тестировании внесенных изменений в макет.