К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как скопировать макет в 1С: все способы с пошаговыми инструкциями

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

Макет в 1С — это шаблон, на основе которого формируются печатные формы, отчёты и табличные документы. Копировать макет приходится часто: при создании новой печатной формы на базе типовой, при переносе наработок между конфигурациями, при доработке внешних печатных форм. Задача выглядит простой, но на практике вызывает вопросы: куда именно копируется макет, почему после копирования печатная форма не меняется, как перенести макет в другую базу.

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

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

Где находятся макеты в конфигурации

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

Во-первых, у каждого объекта метаданных — справочника, документа, отчёта, обработки — есть ветка «Макеты». Например, макет печатной формы счёта на оплату обычно лежит в ветке документа «СчетНаОплату» или «ЗаказКлиента». Во-вторых, существуют общие макеты: они находятся в ветке «Общие — Макеты» и доступны из любого объекта конфигурации.

Тип макета видно в его свойствах: табличный документ, схема компоновки данных, HTML-документ, текстовый документ, двоичные данные и другие. Способ копирования содержимого зависит от типа — чаще всего встречается табличный документ, и именно с ним связано большинство практических задач.

Как скопировать макет внутри конфигуратора

Самый простой сценарий — создать копию макета в той же конфигурации, чтобы доработать её, не трогая оригинал. Это безопасный подход: типовая печатная форма остаётся нетронутой, а все эксперименты идут с копией.

Порядок действий для макета типа «Табличный документ» следующий. Откройте исходный макет двойным щелчком. Кликните в область табличного документа и нажмите Ctrl+A — выделится всё содержимое. Скопируйте его через Ctrl+C. Затем создайте новый макет: правой кнопкой по ветке «Макеты» нужного объекта — «Добавить», укажите имя и тип «Табличный документ». В открывшемся пустом макете нажмите Ctrl+V — содержимое вставится вместе с именованными областями, параметрами и форматированием.

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

Копирование макета в конфигураторе
  1. 1
    Откройте исходный макет двойным щелчком в дереве конфигурации
  2. 2
    Кликните в табличный документ и нажмите Ctrl+A, затем Ctrl+C
  3. 3
    Создайте новый макет: правая кнопка на ветке «Макеты» — «Добавить»
  4. 4
    Выберите тип «Табличный документ», задайте имя
  5. 5
    Вставьте содержимое через Ctrl+V и проверьте именованные области
  6. 6
    Сохраните конфигурацию (Ctrl+S) и обновите конфигурацию базы данных (F7)

Как скопировать макет между объектами и конфигурациями

Перенос между объектами одной базы

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

Перенос между разными базами через файл

Если базы разные (например, рабочая и тестовая, или две разные конфигурации), удобнее сохранить макет в файл. Откройте макет, перейдите в меню «Файл — Сохранить как» и выберите формат «Табличный документ (*.mxl)». В другой базе создайте новый макет того же типа, откройте его и через «Файл — Открыть» загрузите сохранённый MXL-файл. Содержимое полностью заменит пустой шаблон.

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

Копирование макета внешней печатной формы

Внешние печатные формы — это файлы обработок с расширением EPF, которые подключаются к базе без изменения конфигурации. Чтобы скопировать макет такой формы, откройте EPF-файл в конфигураторе через «Файл — Открыть». В структуре обработки найдите ветку «Макеты» и работайте с ней так же, как с макетами конфигурации: копируйте содержимое через буфер обмена или сохраняйте в MXL.

Типовая практика доработки внешней печатной формы выглядит так: сохраните EPF под новым именем, откройте копию в конфигураторе, скопируйте в её макет нужные изменения (или отредактируйте существующий), сохраните файл и зарегистрируйте новую форму в справочнике «Дополнительные отчеты и обработки». Старая форма при этом остаётся рабочей — её можно вернуть в любой момент.

Учтите: если внешняя печатная форма хранится внутри базы (в справочнике дополнительных обработок), сначала выгрузите её на диск кнопкой «Сохранить на диск» или аналогичной командой в вашей конфигурации, и только потом открывайте в конфигураторе.

Программное копирование макета

Иногда макет нужно скопировать программно — например, чтобы сформировать документ на основе макета и сохранить его как файл, или чтобы собрать новый табличный документ из областей нескольких макетов. Для этого используется объект «ТабличныйДокумент» встроенного языка.

Типовой приём — получить макет методом ПолучитьМакет() и вывести его области в новый табличный документ. Фактически это и есть программное копирование: новый документ содержит те же области, оформление и заполненные параметры, но существует независимо от макета.

bsl
Макет = Обработки.МояОбработка.ПолучитьМакет("МакетПечати");
НовыйДокумент = Новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
НовыйДокумент.Вывести(ОбластьШапка);
НовыйДокумент.Записать("C:\\Temp\\КопияМакета.mxl");

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

Проверка результата и типичные ошибки

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

Если печатная форма после замены макета не изменилась — чаще всего причина в том, что код обращается к старому макету по имени. Проверьте вызов ПолучитьМакет() в модуле: имя макета в коде должно совпадать с именем нового макета. Вторая частая причина — конфигурация базы данных не обновлена: после сохранения конфигурации нажмите F7 и перезапустите сеанс.

Типичные ошибки
01
Копирование только ячеек без именованных областей — код не находит области по имени и печатная форма падает с ошибкой
02
Несовпадение типов макетов при вставке — содержимое не вставляется или вставляется частично
03
Забытое обновление конфигурации базы данных (F7) — пользователи продолжают видеть старую форму
04
Правка типового макета вместо копии — при обновлении конфигурации доработки теряются или блокируют обновление
05
Потеря параметров области при ручном пересоздании макета — вместо данных выводятся имена параметров в угловых скобках
Контрольные точки

Как проверить результат

Имена областей в копии
Норма

Совпадают с именами, которые использует код печатной формы

Тревожный признак

Области безымянные или переименованы — код выдаст ошибку «Область не найдена»

Заполнение параметров
Норма

В сформированной форме реальные данные документа

Тревожный признак

На печати видны конструкции вида [ИмяПараметра] — параметр не заполняется

Имя макета в коде
Норма

ПолучитьМакет() вызывается с именем нового макета

Тревожный признак

Код обращается к старому макету — изменения не видны

Часто задаваемые вопросы

Можно ли скопировать макет без конфигуратора?

Да, частично. В режиме «Предприятие» сформированную печатную форму можно сохранить в файл MXL через «Файл — Сохранить как», а затем отредактировать в любом другом сеансе 1С. Но вернуть результат обратно как макет конфигурации без конфигуратора нельзя — для этого нужен доступ к дереву конфигурации.

Почему после вставки макета пропали именованные области?

Области теряются, если копировать не весь документ целиком, а отдельные строки или ячейки. Выделяйте содержимое через Ctrl+A внутри табличного документа — тогда копируются и области, и параметры. Если области всё же потеряны, создайте их вручную: выделите нужные строки и задайте имя в поле имени области слева от табличного документа.

Как скопировать макет типа «Схема компоновки данных»?

Через буфер обмена такой макет не копируется. Откройте схему, в конструкторе макета или через меню сохраните её в файл XML, затем в новом макете того же типа загрузите схему из файла. Альтернатива — скопировать весь объект-владелец (отчёт или обработку) целиком через буфер обмена в дереве конфигурации.

Можно ли скопировать макет из одной конфигурации в другую, например из УТ в БП?

Да, через файл MXL: сохраните макет в исходной базе, создайте макет того же типа в целевой и загрузите файл. Учтите, что параметры макета привязаны к данным конкретной конфигурации — код заполнения и имена реквизитов придётся адаптировать под структуру целевой базы.

Что делать, если кнопка «Добавить» у макетов недоступна?

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

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

Макет и код — разные сущности. Макет копируется через буфер обмена или файл MXL, а процедуры формирования — копированием текста из модуля объекта или менеджера объекта (обычно это процедуры Печать и ДобавитьКомандуПечати). Переносите обе части и проверяйте, что имена макета и областей в коде совпадают с фактическими.

Итог

Что важно запомнить

Макет табличного документа копируется через Ctrl+A / Ctrl+C / Ctrl+V в конфигураторе, а между базами — через файл MXL. Главные условия успеха: совпадение типов макетов, сохранение имён областей, корректное имя макета в коде и обновление конфигурации базы данных. Типовые макеты лучше не править напрямую — делайте копию во внешней печатной форме или расширении.