Разработка и Конфигурация · 11 мин
Как добавить макет в расширение 1С
Как добавить макет в расширение 1С: создание макета в конфигураторе, заимствование из основной конфигурации, обращение к макету из кода и типичные ошибки.
Макеты в расширении 1С нужны, когда требуется добавить внешнюю печатную форму, шаблон табличного документа, схему компоновки данных или двоичные данные, не изменяя основную конфигурацию. Расширение позволяет хранить собственные макеты и обращаться к ним из заимствованного или собственного кода, сохраняя конфигурацию на поддержке.
Добавить макет в расширение можно двумя способами: создать новый макет с нуля в дереве расширения или заимствовать существующий макет из основной конфигурации и изменить его. Первый вариант подходит для новых печатных форм и шаблонов, второй — когда нужно скорректировать типовой макет, не трогая его в конфигурации поставщика.
Ниже разобран полный порядок работы: от создания расширения до обращения к макету из программного кода и проверки результата. Примеры приведены для конфигуратора в режиме управляемого приложения, но общий подход одинаков для большинства типовых конфигураций на платформе 8.3.
Подготовка: создаём или открываем расширение
Перед добавлением макета убедитесь, что расширение создано и подключено к информационной базе. В конфигураторе откройте меню «Конфигурация» → «Расширения конфигурации». Если расширения ещё нет, создайте его командой «Создать», укажите имя и префикс. Префикс важен: он используется для уникальности имён объектов, добавляемых расширением.
Дважды щёлкните по расширению в списке — откроется окно конфигурации расширения с собственным деревом объектов. Именно в этом дереве будут создаваться макеты. Обратите внимание на свойства расширения: для хранения макетов назначение может быть «Дополнение» или «Исправление», ограничений по типам макетов между ними нет.
Способ 1: создание нового макета в расширении
В дереве конфигурации расширения найдите ветку «Общие» → «Макеты», либо откройте ветку «Макеты» конкретного объекта, если макет нужен для документа или справочника. Вызовите контекстное меню и выберите «Добавить». Платформа предложит выбрать тип макета.
Доступные типы макетов: табличный документ (для печатных форм), схема компоновки данных (для отчётов), макет оформления компоновки, текстовый документ, двоичные данные, HTML-документ, географическая схема, графическая схема и другие. Для печатной формы почти всегда выбирается «Табличный документ», для отчёта на СКД — «Схема компоновки данных».
После создания макета заполните его содержимое. Для табличного документа задайте области (шапка, строка, подвал) и параметры вида [НаименованиеПараметра] — они будут заполняться из кода. Сохраните расширение клавишей F7 или командой «Обновить конфигурацию базы данных».
- 1Откройте окно конфигурации расширения двойным щелчком
- 2В ветке «Общие» → «Макеты» выберите «Добавить» из контекстного меню
- 3Укажите имя макета и выберите тип (например, «Табличный документ»)
- 4Заполните области и параметры макета
- 5Сохраните расширение и обновите конфигурацию базы данных (F7)
Способ 2: заимствование макета из основной конфигурации
Если нужно изменить типовой макет, не создавая его с нуля, используйте заимствование. В дереве конфигурации расширения найдите объект основной конфигурации, содержащий нужный макет, — он отображается, если соответствующий объект уже заимствован. Если объекта нет, сначала добавьте его в расширение через контекстное меню «Добавить в расширение» в основной конфигурации.
Затем в дереве расширения раскройте заимствованный объект, найдите нужный макет и через контекстное меню выберите «Добавить в расширение». Макет появится в расширении как изменяемый: его содержимое можно править, при этом в основной конфигурации он останется нетронутым. При работе программы будет использоваться версия из расширения.
Учтите важное ограничение: если поставщик обновит типовой макет при обновлении конфигурации, ваша версия из расширения продолжит «перекрывать» новую. После каждого обновления конфигурации проверяйте заимствованные макеты на актуальность — иначе печатные формы могут устареть или перестать соответствовать новым требованиям.
Сравнение вариантов
Полный контроль над содержимым, нет зависимости от обновлений поставщика. Подходит для собственных печатных форм и отчётов.
Быстрый старт на базе типового шаблона, но требует контроля после каждого обновления конфигурации. Подходит для точечной корректировки типовых форм.
Обращение к макету из программного кода
Код, который использует макет, должен находиться в самом расширении — в заимствованном общем модуле, модуле объекта или в собственной обработке. Обращение выполняется стандартными методами платформы, никакого специального синтаксиса для расширений не требуется.
Для общего макета используется метод ПолучитьОбщийМакет("ИмяМакета"), для макета объекта — ПолучитьМакет("ИмяМакета") в контексте менеджера объекта, например Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати"). Если макет заимствован и изменён, эти же методы вернут версию из расширения автоматически — платформа сама подставит актуальный макет активного расширения.
Процедура ПечатьФормы(СсылкаНаДокумент) Экспорт
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МойМакетПечати");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
ТабДок.Вывести(ОбластьШапка);
ТабДок.Показать("Печатная форма");
КонецПроцедурыЕсли макет нужен внешней обработке или отчёту, подключаемому через механизм дополнительных отчётов и обработок (БСП), макет хранится в самой обработке, а не в расширении. Расширение в этом сценарии используют для добавления макета в типовой объект, чтобы типовой код мог его найти.
Проверка результата и подключение расширения
После сохранения расширения убедитесь, что оно подключено и активно. В режиме предприятия откройте «Администрирование» → «Печатные формы, отчёты и обработки» → «Расширения» (в типовых конфигурациях на БСП) и проверьте, что у расширения снят флаг «Безопасный режим» при необходимости и установлено состояние «Используется».
Проверьте работу макета: вызовите печатную форму или отчёт, который его использует. Если вместо результата появляется ошибка «Макет не найден», сначала убедитесь, что имя макета в коде точно совпадает с именем в дереве расширения, включая регистр символов, и что сеанс запущен уже после подключения расширения — изменения расширений подхватываются при новом входе в сеанс.
Как проверить результат
Статус «Подключено», без предупреждений
Статус «Отключено» или ошибка применения
Возвращается табличный документ без исключения
Ошибка «Макет не найден»
Выводятся области и параметры из макета расширения
Используется старая типовая версия макета
Типичные ошибки и ограничения
Самая частая проблема — расширение создано, но не применено в текущем сеансе. После добавления или изменения макета перезапустите сеанс предприятия: платформа загружает расширения при старте сеанса, и изменения «на лету» не подхватываются.
Вторая распространённая ошибка — попытка обратиться к макету расширения из кода основной конфигурации, который не знает о его существовании. Типовой код увидит новый макет только если обращается к нему по имени, которое уже предусмотрено логикой (например, заимствованный и изменённый макет). Совершенно новый макет должен вызываться из кода самого расширения.
Также помните: в безопасном режиме расширения часть операций может быть ограничена профилями безопасности кластера, а в сервисе (SaaS) действуют дополнительные проверки расширений — макеты с внешними компонентами или нестандартным содержимым могут не пройти аудит.
Когда расширение не подходит: альтернативы
Если задача — разовая печатная форма без изменения логики конфигурации, проще использовать внешнюю печатную форму через механизм «Дополнительные отчёты и обработки». Макет хранится внутри файла обработки, расширение не требуется, а подключение выполняется пользователем с правами администратора без конфигуратора.
Если же требуется массовая доработка множества объектов и макетов с глубоким изменением логики, расширение может оказаться недостаточным по возможностям — в таком случае рассматривают доработку основной конфигурации со снятием объектов с поддержки. Это крайняя мера: она усложняет последующие обновления, поэтому сначала оцените, закрывает ли задачу связка «расширение + внешние обработки».
Как выбрать действие
Часто задаваемые вопросы
Можно ли добавить в расширение макет типа «Схема компоновки данных»?
Да. При добавлении макета выберите тип «Схема компоновки данных» и настройте наборы данных, ресурсы и варианты настроек. Такой макет используется для отчётов: его можно передать в объект отчёта программно или заимствовать типовую СКД и изменить запрос либо настройки.
Почему типовой код не видит мой новый макет из расширения?
Типовой код обращается к макетам по фиксированным именам, заложенным разработчиком конфигурации. Новый макет с произвольным именем типовая логика не вызовет. Либо заимствуйте и измените существующий типовой макет, либо вызывайте новый макет из собственного кода расширения.
Нужно ли перезапускать сеанс после изменения макета в расширении?
Да. Расширения загружаются платформой при старте сеанса. После обновления конфигурации базы данных с изменённым расширением завершите текущий сеанс и войдите заново, иначе будет использоваться прежняя версия макета.
Что произойдёт с заимствованным макетом при обновлении конфигурации?
Макет в расширении останется без изменений и продолжит перекрывать типовой. Если поставщик изменил типовой макет, ваша версия не обновится автоматически — сравните содержимое вручную и при необходимости перенесите изменения поставщика в макет расширения.
Можно ли хранить в макете расширения картинки или файлы?
Да, для этого предназначен тип макета «Двоичные данные» или «ActiveDocument». В макет можно поместить изображение, шаблон Word или Excel, а затем получить его в коде через ПолучитьОбщийМакет() и сохранить во временный файл для дальнейшей обработки.
Работают ли макеты расширений в мобильной платформе и веб-клиенте?
Макеты табличных документов и СКД работают во всех клиентах, если само расширение применено в сеансе. Ограничения касаются отдельных типов макетов и операций с файловой системой в веб-клиенте — там двоичные данные из макета обрабатываются через временное хранилище.
Что важно запомнить
Макет добавляется в дерево конфигурации расширения: новый — через «Добавить», типовой — через заимствование. Обращение из кода идёт стандартными методами ПолучитьМакет() и ПолучитьОбщийМакет(), а изменения применяются после перезапуска сеанса. После каждого обновления конфигурации проверяйте заимствованные макеты на актуальность.