Где хранятся макеты печатных форм в УТ 11.4 и как с ними работать

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

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

Поиск места хранения макетов

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

Проанализируем, где могут физически находиться макеты:

  1. Объекты конфигурации: Это классический вариант. Макет встроен в документ, справочник или общую форму. Мы видим его в дереве метаданных.
  2. Регистр сведений ПользовательскиеМакетыПечати: Здесь хранятся копии макетов, которые были отредактированы пользователем непосредственно в режиме «Предприятие». Данные хранятся в ресурсе Макет, имеющем тип ХранилищеЗначения.
  3. Расширения конфигурации: Программист может создать расширение и переопределить макет там, не снимая основную конфигурацию с поддержки.

Иерархия и приоритеты использования макетов

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

  1. Пользовательский макет: Если в регистре ПользовательскиеМакетыПечати есть запись для данной печатной формы, система всегда возьмет именно её. Даже если вы полностью перепишете макет в конфигураторе, пользовательская версия в базе данных будет иметь приоритет.
  2. Макет из расширения: Если пользовательской правки нет, система проверяет наличие активных расширений, в которых может быть переопределен данный макет.
  3. Стандартный макет конфигурации: Это тот самый макет, который мы видим в дереве объектов метаданных. Он используется только в том случае, если не найдены версии из пунктов выше.

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

Как определить, что именно изменено в макете

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

Перейдем в раздел НСИ и Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм. В этом списке мы увидим все доступные формы системы. Для создания и визуальной настройки шаблонов непосредственно в пользовательском интерфейсе также подойдёт конструктор печатных форм для объектов базы.

Обратим внимание на следующие индикаторы:

Способы переноса измененного макета в другую базу

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

Способ 1: Использование файлов MXL (Пользовательский)

Это самый простой способ, не требующий работы в конфигураторе:

  1. В исходной базе зайдем в список Макеты печатных форм.
  2. Откроем нужный макет для редактирования.
  3. В меню выберем Файл — Сохранить как... и сохраним документ в формате .mxl на диск.
  4. В целевой базе откроем тот же список макетов, найдем нужную форму и нажмем «Изменить».
  5. Загрузим данные из файла .mxl через меню Таблица — Импорт или просто скопировав содержимое ячеек.

Способ 2: Перенос через XML (Административный)

Поскольку все пользовательские настройки лежат в регистре ПользовательскиеМакетыПечати, мы можем использовать стандартную обработку «Выгрузка и загрузка данных XML»:

  1. Запустим обработку в исходной базе.
  2. Выберем регистр сведений ПользовательскиеМакетыПечати.
  3. Настроим отбор по конкретному имени макета, чтобы не переносить лишнего.
  4. Выгрузим файл и загрузим его в новой базе.

Особенности программной работы с макетами

Рассмотрим пример кода, который часто вызывает вопросы при попытке программно изменить логику вывода. Если макет находится в обработке ПечатьТТН, а вы хотите добавить новый параметр НовыйПараметр, недостаточно просто добавить его в макет. Посмотрим, как может выглядеть обращение к макету в коде менеджера печати:


// Пример получения макета с учетом пользовательских настроек (БСП)
Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьТТН.Макет");

// Заполнение области
Область = Макет.ПолучитьОбласть("Заголовок");
Область.Параметры.НовыйПараметр = "Значение для печати";
ТабДок.Вывести(Область);

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

Рекомендации по разработке

Проанализировав механизмы БСП, мы рекомендуем придерживаться следующих правил при кастомизации форм:

← На главную