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