Как доработать типовую печатную форму в УТ 11 и вывести добавленный реквизит?

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

Рассмотрим распространенную задачу: в документ конфигурации (например, Заказ поставщику) через расширение добавлен новый реквизит. Теперь необходимо вывести значение этого реквизита в стандартную печатную форму. Разберем архитектурные особенности 1С:Управление Торговлей 11 (и аналогичных конфигураций на базе БСП: ERP, КА), выясним, где находится код печати, и проанализируем варианты реализации.

Где искать код формирования печатной формы?

В отличие от старых конфигураций, в УТ 11 код печати не находится в модуле формы документа. Архитектура построена на Библиотеке Стандартных Подсистем (БСП). Разберем по шагам, где искать логику:

  1. Модуль менеджера документа. В большинстве случаев основная процедура печати располагается именно здесь. Нам нужно искать экспортную процедуру, обычно называющуюся Печать().
  2. Обработка коллекции печатных форм. Современный механизм не возвращает сразу табличный документ. Процедура печати заполняет коллекцию печатных форм. Внутри модуля менеджера часто встречаются процедуры вида СформироватьПечатныеФормы() или ПодготовитьДанныеДляПечати().
  3. Общие модули и обработки. Для унифицированных форм (например, ТОРГ-12, УПД, Счет-фактура) код часто вынесен из документа в общие модули или специализированные обработки (например, Обработка.ПечатьОбъектов). Чтобы быстрее разобраться в этих механизмах, рекомендуем использовать справочник по методам БСП, который содержит примеры работы со стандартными подсистемами.

Вариант 1: Использование пользовательских макетов (Без программирования)

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

  1. Перейдем в раздел НСИ и АдминистрированиеПечатные формы, отчеты и обработки.
  2. Откроем пункт Макеты печатных форм.
  3. Найдем нужный документ (например, Заказ поставщику) и его печатную форму.
  4. Откроем макет для просмотра и редактирования.
  5. Попробуем добавить параметр в ячейку. Если добавленный нами реквизит доступен в структуре данных объекта, система часто может вывести его автоматически, просто сопоставив имя параметра с именем реквизита — в этом поможет вывод весогабаритных характеристик в печатную форму.

Вариант 2: Внешняя печатная форма (ВПФ)

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

Преимущества:

Недостатки:

Вариант 3: Доработка через расширение (Выбор автора)

Автор темы выбрал путь доработки через расширение. Разберем нюансы этого метода, так как здесь есть "подводные камни". Помимо обычных форм, через расширения удобно реализовывать и более сложные задачи, такие как печать договоров по шаблонам Word.

Подход А: Полное копирование (Опасно)

Мы копируем макет и процедуру печати в расширение, аннотируем её как &Вместо и добавляем свой код.

Риск: Как справедливо заметили участники обсуждения, при этом мы "замораживаем" логику печати. Если выйдет обновление УТ 11, наш код с аннотацией &Вместо перекроет исправления.

Подход Б: Программная модификация (Рекомендуем)

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

Алгоритм действий:

  1. Позволяем типовому механизму сформировать стандартный табличный документ.
  2. В расширении перехватываем управление после формирования.
  3. Программно находим нужную область в табличном документе и вставляем туда значение нашего реквизита.

При таком подходе при обновлении типовой конфигурации макет обновится автоматически, а наша "надстройка" просто добавит данные в нужное место.

Важное замечание про хранение данных в расширениях

В теме было отмечено: "Не надо добавлять реквизиты через расширения". Давайте поясним этот момент.

Хранение важных данных исключительно в расширении несет риски потери данных при удалении расширения. Если вам нужно просто увидеть содержимое всех полей объекта для отладки, поможет специальная печать реквизитов документов и справочников для конфигураций на БСП.

Вывод

Для решения задачи вывода реквизита в печатную форму:

  1. Если задача простая — пробуем Пользовательские макеты.
  2. Если нужна сложная логика — используем Расширение, стараясь применять программную модификацию. Понять принципы автоматической сборки данных поможет универсальная печатная форма для всех документов 1С.
  3. Если критична стабильность и независимость от обновлений платформы — делаем Внешнюю печатную форму.
← На главную