В чем разница между новым и заимствованным объектом в расширении 1С и как правильно изменять макеты печатных форм

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Анализ проблемы: почему новый макет в расширении не подменяет типовой

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

Однако при выводе на печать система продолжает открывать макет основной конфигурации. Попробуем разобраться, почему так происходит и как платформа «1С:Предприятие» обрабатывает объекты в расширениях.

Заимствованный объект против нового объекта в расширении

Выясним основные технические различия между двумя подходами к работе с метаданными в расширении:

  1. Заимствованный объект (из основной конфигурации): При заимствовании объекта (например, макета печатной формы) с сохранением его исходного имени платформа на внутреннем уровне производит подмену. Любые стандартные вызовы, такие как метод ПолучитьМакет() или механизмы Библиотеки Стандартных Подсистем (БСП), автоматически получают макет из расширения вместо оригинального. Дополнительный код для перехвата функции печати в этом случае не требуется.
  2. Новый объект в расширении: Если в расширении создается новый макет с другим именем, подсистема печати БСП продолжает искать макет по оригинальному имени из основной конфигурации. Новая сущность существует в контексте самого расширения, и чтобы ее задействовать, необходимо явно переопределять код формирования печатной формы.

Способы решения задачи доработки печатной формы

Разберем подробнее, как корректно внести изменения в макет в зависимости от выбранного архитектурного решения.

Вариант 1. Заимствование существующего макета (оптимальный способ через расширение)

Проанализируем шаги для подмены типового макета без переписывания логики формирования:

  1. Найдем нужный макет в дереве метаданных основной конфигурации и добавим (заимствуем) его в расширение. Имя макета должно остаться прежним.
  2. Внесем необходимые правки в заимствованный макет в расширении (добавим ячейки, изменим форматирование или текст).
  3. Заменять процедуры печати в модуле объекта или модуле менеджера не требуется — платформа автоматически подставит отредактированный макет при формировании печатной формы.

Вариант 2. Создание нового макета с перехватом процедуры печати

Если по каким-то причинам требуется сохранить старый макет и добавить новый параллельно:

  1. Создаем новый макет в расширении с уникальным именем.
  2. Заимствуем модуль менеджера документа или модуль подсистемы печати.
  3. Используем аннотацию &Вместо для переопределения функции печати и в коде указываем вызов нового макета.

Посмотрим на пример перехвата функции печати с использованием аннотации:


&Вместо("Печать")
Функция Расш1_Печать(МассивОбъектов, ПараметрыПечати, КомплектПечати, ОбъектыПечати, КоллекцияПечатныхФорм)
    // Логика формирования табличного документа с новым макетом
    Макет = ПолучитьМакет("НовыйМакетПечатнойФормы");
    // Формирование и возврат печатной формы
КонецФункции

Вариант 3. Редактирование макета в режиме «1С:Предприятие» (без конфигуратора)

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

  1. Перейдем в раздел Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм.
  2. Найдем необходимый макет в списке и откроем его для редактирования.
  3. Отредактируем форму прямо в режиме предприятия и сохраним результат.

Важно: Пользовательский макет БСП имеет наивысший приоритет. Если пользователь ранее изменил макет в режиме предприятия, изменения из расширения не отобразятся, пока пользовательский макет не будет сброшен к стандартному.

Вариант 4. Использование внешней печатной формы (ВПФ)

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

Таким образом, для простых изменений оформления достаточно заимствовать макет в расширение или воспользоваться пользовательской настройкой макетов БСП в режиме «1С:Предприятие».

← На главную