Разработка и Конфигурация · 10 мин
Как скопировать макет в 1С: все способы с пошаговыми инструкциями
Как скопировать макет в 1С: в конфигураторе, между объектами, через внешний файл и программно. Разбор ошибок, проверка результата и ответы на вопросы.
Макет в 1С — это шаблон, на основе которого формируются печатные формы, отчёты и табличные документы. Копировать макет приходится часто: при создании новой печатной формы на базе типовой, при переносе наработок между конфигурациями, при доработке внешних печатных форм. Задача выглядит простой, но на практике вызывает вопросы: куда именно копируется макет, почему после копирования печатная форма не меняется, как перенести макет в другую базу.
Способ копирования зависит от того, где находится макет: в конфигураторе, в режиме «Предприятие» как внешняя печатная форма или внутри обработки. Ниже разобраны все основные сценарии — от простого копирования в дереве конфигурации до программного чтения и сохранения макета через встроенный язык.
Перед любыми изменениями в конфигураторе убедитесь, что у вас есть актуальная копия базы. Ошибка при редактировании макета не испортит данные учёта, но некорректная печатная форма может уйти контрагенту или в архив документов.
Где находятся макеты в конфигурации
Макеты в 1С хранятся в дереве конфигурации и привязаны к конкретным объектам. Откройте конфигуратор, перейдите в меню «Конфигурация — Открыть конфигурацию» и найдите нужный объект. Макеты могут располагаться в нескольких местах.
Во-первых, у каждого объекта метаданных — справочника, документа, отчёта, обработки — есть ветка «Макеты». Например, макет печатной формы счёта на оплату обычно лежит в ветке документа «СчетНаОплату» или «ЗаказКлиента». Во-вторых, существуют общие макеты: они находятся в ветке «Общие — Макеты» и доступны из любого объекта конфигурации.
Тип макета видно в его свойствах: табличный документ, схема компоновки данных, HTML-документ, текстовый документ, двоичные данные и другие. Способ копирования содержимого зависит от типа — чаще всего встречается табличный документ, и именно с ним связано большинство практических задач.
Как скопировать макет внутри конфигуратора
Самый простой сценарий — создать копию макета в той же конфигурации, чтобы доработать её, не трогая оригинал. Это безопасный подход: типовая печатная форма остаётся нетронутой, а все эксперименты идут с копией.
Порядок действий для макета типа «Табличный документ» следующий. Откройте исходный макет двойным щелчком. Кликните в область табличного документа и нажмите Ctrl+A — выделится всё содержимое. Скопируйте его через Ctrl+C. Затем создайте новый макет: правой кнопкой по ветке «Макеты» нужного объекта — «Добавить», укажите имя и тип «Табличный документ». В открывшемся пустом макете нажмите Ctrl+V — содержимое вставится вместе с именованными областями, параметрами и форматированием.
После вставки проверьте именованные области: они определяют, какие фрагменты макета программа выводит и в каком порядке. Если код печатной формы обращается к областям по именам («Шапка», «СтрокаТаблицы», «Подвал»), эти имена в копии должны совпадать с оригиналом, иначе при формировании печатной формы возникнет ошибка.
- 1Откройте исходный макет двойным щелчком в дереве конфигурации
- 2Кликните в табличный документ и нажмите Ctrl+A, затем Ctrl+C
- 3Создайте новый макет: правая кнопка на ветке «Макеты» — «Добавить»
- 4Выберите тип «Табличный документ», задайте имя
- 5Вставьте содержимое через Ctrl+V и проверьте именованные области
- 6Сохраните конфигурацию (Ctrl+S) и обновите конфигурацию базы данных (F7)
Как скопировать макет между объектами и конфигурациями
Перенос между объектами одной базы
Копирование содержимого через буфер обмена работает и между разными объектами: можно скопировать макет из документа в обработку или в общие макеты. Ограничение одно — типы макетов должны совпадать. Табличный документ нельзя вставить в макет типа «Схема компоновки данных», и наоборот.
Перенос между разными базами через файл
Если базы разные (например, рабочая и тестовая, или две разные конфигурации), удобнее сохранить макет в файл. Откройте макет, перейдите в меню «Файл — Сохранить как» и выберите формат «Табличный документ (*.mxl)». В другой базе создайте новый макет того же типа, откройте его и через «Файл — Открыть» загрузите сохранённый MXL-файл. Содержимое полностью заменит пустой шаблон.
Этот же приём работает в режиме «Предприятие»: любой табличный документ (в том числе сформированную печатную форму) можно сохранить в MXL и затем загрузить в макет в конфигураторе. Так удобно переносить макет, доработанный пользователем прямо в режиме «Предприятие», обратно в конфигурацию.
Копирование макета внешней печатной формы
Внешние печатные формы — это файлы обработок с расширением EPF, которые подключаются к базе без изменения конфигурации. Чтобы скопировать макет такой формы, откройте EPF-файл в конфигураторе через «Файл — Открыть». В структуре обработки найдите ветку «Макеты» и работайте с ней так же, как с макетами конфигурации: копируйте содержимое через буфер обмена или сохраняйте в MXL.
Типовая практика доработки внешней печатной формы выглядит так: сохраните EPF под новым именем, откройте копию в конфигураторе, скопируйте в её макет нужные изменения (или отредактируйте существующий), сохраните файл и зарегистрируйте новую форму в справочнике «Дополнительные отчеты и обработки». Старая форма при этом остаётся рабочей — её можно вернуть в любой момент.
Учтите: если внешняя печатная форма хранится внутри базы (в справочнике дополнительных обработок), сначала выгрузите её на диск кнопкой «Сохранить на диск» или аналогичной командой в вашей конфигурации, и только потом открывайте в конфигураторе.
Программное копирование макета
Иногда макет нужно скопировать программно — например, чтобы сформировать документ на основе макета и сохранить его как файл, или чтобы собрать новый табличный документ из областей нескольких макетов. Для этого используется объект «ТабличныйДокумент» встроенного языка.
Типовой приём — получить макет методом ПолучитьМакет() и вывести его области в новый табличный документ. Фактически это и есть программное копирование: новый документ содержит те же области, оформление и заполненные параметры, но существует независимо от макета.
Макет = Обработки.МояОбработка.ПолучитьМакет("МакетПечати");
НовыйДокумент = Новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
НовыйДокумент.Вывести(ОбластьШапка);
НовыйДокумент.Записать("C:\\Temp\\КопияМакета.mxl");Метод Записать() сохраняет табличный документ в файл MXL, который затем можно открыть в конфигураторе и использовать как макет. Это удобно, когда макет формируется или изменяется на лету, а результат нужно зафиксировать как шаблон.
Проверка результата и типичные ошибки
После копирования макета обязательно проверьте результат до того, как форма попадёт к пользователям. Сформируйте печатную форму на тестовом документе с реальными данными: проверьте, что все поля заполняются, переносы страниц корректны, итоги выводятся на своих местах.
Если печатная форма после замены макета не изменилась — чаще всего причина в том, что код обращается к старому макету по имени. Проверьте вызов ПолучитьМакет() в модуле: имя макета в коде должно совпадать с именем нового макета. Вторая частая причина — конфигурация базы данных не обновлена: после сохранения конфигурации нажмите F7 и перезапустите сеанс.
Как проверить результат
Совпадают с именами, которые использует код печатной формы
Области безымянные или переименованы — код выдаст ошибку «Область не найдена»
В сформированной форме реальные данные документа
На печати видны конструкции вида [ИмяПараметра] — параметр не заполняется
ПолучитьМакет() вызывается с именем нового макета
Код обращается к старому макету — изменения не видны
Часто задаваемые вопросы
Можно ли скопировать макет без конфигуратора?
Да, частично. В режиме «Предприятие» сформированную печатную форму можно сохранить в файл MXL через «Файл — Сохранить как», а затем отредактировать в любом другом сеансе 1С. Но вернуть результат обратно как макет конфигурации без конфигуратора нельзя — для этого нужен доступ к дереву конфигурации.
Почему после вставки макета пропали именованные области?
Области теряются, если копировать не весь документ целиком, а отдельные строки или ячейки. Выделяйте содержимое через Ctrl+A внутри табличного документа — тогда копируются и области, и параметры. Если области всё же потеряны, создайте их вручную: выделите нужные строки и задайте имя в поле имени области слева от табличного документа.
Как скопировать макет типа «Схема компоновки данных»?
Через буфер обмена такой макет не копируется. Откройте схему, в конструкторе макета или через меню сохраните её в файл XML, затем в новом макете того же типа загрузите схему из файла. Альтернатива — скопировать весь объект-владелец (отчёт или обработку) целиком через буфер обмена в дереве конфигурации.
Можно ли скопировать макет из одной конфигурации в другую, например из УТ в БП?
Да, через файл MXL: сохраните макет в исходной базе, создайте макет того же типа в целевой и загрузите файл. Учтите, что параметры макета привязаны к данным конкретной конфигурации — код заполнения и имена реквизитов придётся адаптировать под структуру целевой базы.
Что делать, если кнопка «Добавить» у макетов недоступна?
Объект находится на поддержке без возможности изменения, или конфигурация закрыта от изменений. Проверьте настройку поддержки: «Конфигурация — Поддержка — Настройка поддержки». Если изменять типовой объект нельзя или нежелательно, создайте макет во внешней обработке или в расширении конфигурации.
Как скопировать макет вместе с кодом печатной формы?
Макет и код — разные сущности. Макет копируется через буфер обмена или файл MXL, а процедуры формирования — копированием текста из модуля объекта или менеджера объекта (обычно это процедуры Печать и ДобавитьКомандуПечати). Переносите обе части и проверяйте, что имена макета и областей в коде совпадают с фактическими.
Что важно запомнить
Макет табличного документа копируется через Ctrl+A / Ctrl+C / Ctrl+V в конфигураторе, а между базами — через файл MXL. Главные условия успеха: совпадение типов макетов, сохранение имён областей, корректное имя макета в коде и обновление конфигурации базы данных. Типовые макеты лучше не править напрямую — делайте копию во внешней печатной форме или расширении.