Где хранятся макеты печатных форм в 1С 8.3 и почему не применяются изменения из конфигуратора?

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

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

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

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

Физически измененные макеты сохраняются непосредственно в информационной базе — в специальном регистре сведений ПользовательскиеМакетыПечати. Когда модуль менеджера вызывает функцию получения макета:

Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьТТН.ПФ_MXL_ТТН");

Система выполняет следующий алгоритм:

  1. Выполняется обращение к регистру сведений ПользовательскиеМакетыПечати по объекту метаданных и имени макета с проверкой признака Использование = Истина.
  2. Если запись в регистре найдена, загружается пользовательский макет из базы данных. Макет из дерева метаданных конфигурации при этом полностью игнорируется.
  3. Стандартный макет из конфигуратора считывается только тогда, когда пользовательская версия отсутствует или отключена.

Именно поэтому любые исправления табличного документа в конфигураторе не дают результата: система выводит сохраненную в базе пользовательскую копию макета.

Как вернуть стандартный макет или применить правки из конфигуратора

Разберем способы сброса пользовательских настроек:

  1. Через интерфейс пользователя: перейдем в раздел Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм. Найдем в списке нужную печатную форму (рядом с измененными макетами отображается специальная пиктограмма карандаша), выделим строку и нажмем кнопку «Использовать стандартный макет» (или удалим пользовательскую версию).
  2. Программный способ: для отключения пользовательского макета в коде БСП предусмотрена процедура УправлениеПечатью.ОтключитьПользовательскийМакет(ИмяВладельца, ИмяМакета). Также можно программно сбросить признак Использование = Ложь в регистре сведений ПользовательскиеМакетыПечати.

Где еще могут находиться макеты печатных форм?

Если макета нет в очевидном месте метаданных, проанализируем все возможные точки его размещения:

  1. Обработки печати: в типовых решениях (например, в «1С:Бухгалтерии») команды печати большинства документов вынесены в специализированные менеджеры печати — общие обработки (например, Обработка.ПечатьТТН, Обработка.ПечатьАктОбОказанииУслуг, Обработка.ПечатьЭтикетокИЦенников).
  2. Общие макеты: некоторые формы (например, унифицированные формы ТОРГ-12, счета-фактуры) могут лежать в ветке ОбщиеМакеты дерева метаданных.
  3. Макеты других объектов метаданных: макеты табличных документов могут быть вложены в справочники, документы, отчеты (включая схемы компоновки данных СКД), регистры сведений, регистры накопления, регистры бухгалтерии и расчетные регистры.
  4. Расширения конфигурации: макет может быть добавлен или переопределен в подключенном расширении (.cfe). В основной конфигурации его видно не будет.
  5. Справочник «Дополнительные отчеты и обработки»: печатная форма может быть реализована как внешняя (ВПФ) и храниться в двоичных данных соответствующего элемента справочника.
  6. Программное формирование: печатная форма может генерироваться полностью программно в коде модуля без использования визуального макета (путем создания ячеек и областей в объекте ТабличныйДокумент).

Несовпадение идентификаторов команд и реальных имен макетов

Рассмотрим еще одну распространенную причину путаницы — различие между идентификатором команды печати и фактическим именем макета. Посмотрим на типовой пример кода формирования команд печати:


КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьТТН";
КомандаПечати.Идентификатор = "ТН_РБ";

Идентификатор команды "ТН_РБ" — это внутренняя строка для диспетчеризации печати. Сам макет в обработке печати при этом может называться иначе, например ПФ_MXL_ТТН или ПФ_MXL_ТН_РБ.

Проанализируем процедуру печати в модуле менеджера соответствующей обработки:


Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТН_РБ") Тогда
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,
        "ТН_РБ",
        "Товарная накладная (ф. ТН-2)",
        СформироватьПечатнуюФормуТТН_ТН_Локализация(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
    );
КонецЕсли;

Внутри функции формирования печатной формы макет запрашивается по его точному имени метаданных. Кроме того, в локализованных конфигурациях подсистема печати БСП может автоматически добавлять суффиксы языка (например, ПФ_MXL_ТТН_ru, ПФ_MXL_ТТН_by) в зависимости от текущего языка формирования документов.

Риски при обновлении конфигураций

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

← На главную