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