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

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

Как создать внешний макет в 1С: полное руководство

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

Внешний макет в 1С — это шаблон печатной формы или отчёта, который создаётся и дорабатывается без изменения типовой конфигурации. Такой подход позволяет настроить счёт, акт, ТОРГ-12 или любой другой документ под требования компании, сохранив возможность обновлять конфигурацию в автоматическом режиме. Внешние макеты особенно востребованы там, где типовая печатная форма не содержит нужных реквизитов, логотипа или особой структуры таблицы.

Работа ведётся в конфигураторе 1С:Предприятие и не требует глубоких навыков программирования на начальном этапе: простой табличный макет можно собрать через конструктор печати за несколько минут. Сложнее обстоит дело с выводом данных — здесь потребуется понимание структуры модулей и обращения к реквизитам объекта.

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

Что такое макет в 1С и какие виды существуют

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

Основные типы макетов, доступные в конфигураторе:

  • Табличный документ — универсальный вариант для счетов, актов, накладных, доверенностей. Поддерживает области, параметры, картинки и форматирование.
  • Схема компоновки данных (СКД) — используется для отчётов с группировками, отборами и настройками пользователя без программирования интерфейса.
  • HTML-документ — для веб-представлений и писем.
  • Текстовый документ — для выгрузок, шаблонов договоров и служебных файлов.
  • Active Document — для форм на базе внешних приложений, используется редко.

Для внешней печатной формы документа в подавляющем большинстве случаев выбирается табличный документ. Именно этот тип дальше рассматривается подробно, поскольку он покрывает типовые задачи учёта и согласования документов.

Когда нужен внешний макет, а не правка типового

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

Внешний макет оправдан в следующих ситуациях:

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

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

Создание внешней обработки и макета в конфигураторе

Работа начинается с создания файла внешней обработки. Откройте конфигуратор, выберите меню Файл → Новый → Внешняя обработка. Задайте имя, например ВнешняяПечатнаяФормаСчета, и сохраните файл с расширением .epf в рабочую папку проекта.

Дальше добавьте макет: в дереве обработки нажмите правой кнопкой на ветку Макеты и выберите Добавить. Укажите тип Табличный документ и имя, например МакетСчета. Откроется редактор, внешне напоминающий электронную таблицу.

Быстрый способ собрать структуру — конструктор печати. Для документов он доступен через Конструкторы → Конструктор печати при работе с объектом конфигурации: мастер сам предложит выбрать реквизиты шапки и табличной части, сформирует макет с областями и даже сгенерирует код процедуры печати. Для внешней обработки конструктор напрямую недоступен, поэтому типовой подход — скопировать макет и код из похожей типовой формы и адаптировать под свои нужды.

Порядок действий
  1. 1
    Создайте новую внешнюю обработку через Файл → Новый и сохраните её с расширением .epf
  2. 2
    Добавьте макет типа Табличный документ в ветку Макеты
  3. 3
    Скопируйте структуру из типовой печатной формы или постройте макет вручную
  4. 4
    Разметьте области: Шапка, СтрокаТаблицы, Подвал и задайте параметры в ячейках
  5. 5
    Напишите код вывода данных в модуле объекта обработки
  6. 6
    Протестируйте форму на копии базы и подключите через дополнительные отчёты и обработки

Разметка областей и параметров макета

Макет печатной формы делится на области — именованные блоки, которые программа выводит в нужном порядке. Типичная структура: Шапка (номер, дата, реквизиты сторон), ШапкаТаблицы (заголовки колонок), Строка (одна позиция табличной части, выводится в цикле), Подвал (итоги, сумма прописью, подписи).

Чтобы создать область, выделите нужные строки, затем через меню Таблица → Имена → Назначить имя задайте имя области, например Шапка. Внутри области в ячейках размещаются параметры — места, куда подставятся данные. Параметр задаётся в свойстве ячейки Заполнение: значение Параметр означает, что текст ячейки — это имя параметра, например НомерДокумента или Покупатель.

Полезные приёмы при разметке:

  • для значений, которые нужно форматировать (даты, суммы), используйте шаблон: в свойстве Заполнение выберите Шаблон и пишите текст вида Счёт № [НомерДокумента] от [ДатаДокумента];
  • для логотипа добавьте рисунок через Таблица → Рисунки → Вставить рисунок и загрузите картинку в макет;
  • настройте ширину колонок и перенос текста заранее — иначе длинные наименования номенклатуры «разорвут» таблицу;
  • проверяйте высоту строк с учётом переноса: включите свойство Автовысота строки для ячеек с длинными текстами.

Вывод данных: код в модуле обработки

После разметки макета данные в него подставляются программно. Для внешней печатной формы, подключаемой через механизм БСП (библиотека стандартных подсистем), в модуле объекта обработки обязательна экспортная функция СведенияОВнешнейОбработке() и процедура Печать(...), формирующая табличный документ.

Типовая логика процедуры печати выглядит так: получить макет методом ПолучитьМакет("МакетСчета"), получить область Макет.ПолучитьОбласть("Шапка"), заполнить параметры области через Область.Параметры.НомерДокумента = Номер и вывести область в результирующий табличный документ методом ТабДок.Вывести(Область). Область строки выводится в цикле по табличной части документа.

Пример фрагмента кода:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();

ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");

Возврат ПараметрыРегистрации;

КонецФункции

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "МакетСчета");

ТабДок = Новый ТабличныйДокумент;

Макет = ЭтотОбъект.ПолучитьМакет("МакетСчета");

// далее: заполнение областей и вывод

КонецПроцедуры

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

bsl
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = ДанныеДокумента.Номер;
ОбластьШапка.Параметры.Покупатель = ДанныеДокумента.Контрагент;
ТабДок.Вывести(ОбластьШапка);

Подключение внешней печатной формы в базе

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

Нажмите Добавить из файла, выберите сохранённую обработку. Платформа прочитает функцию СведенияОВнешнейОбработке() и предложит зарегистрировать форму. Проверьте назначение — список документов, для которых форма доступна, — и при необходимости скорректируйте его вручную. После записи новая команда появится в меню Печать соответствующих документов.

Если конфигурация не содержит БСП (редкие самописные решения), внешнюю обработку можно открыть вручную через Файл → Открыть и вызвать печать из её формы, либо встроить вызов в расширение конфигурации. Расширение — промежуточный вариант: оно хранится отдельно от основной конфигурации и не блокирует обновление, но требует аккуратности при смене релизов.

Контрольные точки

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

Открытие формы из документа
Норма

Команда видна в меню Печать, форма открывается без сообщений об ошибках

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

Команды нет в списке или появляется окно с текстом исключения

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

Все поля содержат данные документа, даты и суммы отформатированы

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

Пустые ячейки, имена параметров выведены как текст

Табличная часть
Норма

Строки соответствуют документу, итоги сходятся

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

Строки дублируются, пропущены или итог не совпадает с документом

Печать на бумаге
Норма

Все колонки помещаются на лист, разрывы страниц корректны

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

Таблица обрезана, подвал уехал на отдельную страницу

Типичные ошибки и ограничения

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

Типичные ошибки
01
Опечатка в имени параметра макета — в печатной форме появляется пустая ячейка без какого-либо предупреждения
02
Неверно указано назначение в СведенияОВнешнейОбработке — команда печати не появляется в нужном документе
03
Область строки выводится вне цикла или цикл идёт не по той табличной части — в форме одна строка вместо всех позиций
04
Не настроен перенос и автовысота строк — длинные наименования обрезаются или ломают вёрстку
05
Тестирование только на пустом тестовом документе — на реальных данных всплывают проблемы с длиной полей и итогами
06
Правка файла .epf и повторное подключение без удаления старой версии — в базе работает прежний вариант формы

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

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

Итог

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

Внешний макет создаётся в составе внешней обработки: макет размечается областями с параметрами, код в модуле заполняет их данными и выводит в табличный документ, а подключение выполняется через механизм дополнительных отчётов и обработок. Тестируйте форму на копии базы и на реальных документах — это защитит от сбоев у пользователей.

Частые вопросы о внешних макетах 1С

Можно ли создать внешний макет без навыков программирования?

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

Чем внешняя печатная форма отличается от расширения конфигурации?

Внешняя обработка — отдельный файл, который подключается пользователем без доступа к конфигуратору и не затрагивает конфигурацию вообще. Расширение встраивается в структуру конфигурации, может переопределять типовые процедуры, но требует прав администратора и проверки совместимости при обновлениях. Для простой печатной формы достаточно внешней обработки.

Почему после подключения команда печати не появляется в документе?

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

Как добавить в макет сумму прописью?

Сумма прописью формируется кодом, а не средствами макета. В типовых конфигурациях есть готовые функции работы с числами прописью (в БСП — модуль работы с числами/строками). Вызовите соответствующую функцию в модуле обработки, результат присвойте параметру области и выведите как обычный текст.

Что делать, если печатная форма обрезается при выводе на принтер?

Проверьте настройки страницы табличного документа: ориентацию, поля и масштаб. В коде можно задать свойства ТабДок — например, альбомную ориентацию и автомасштаб. Также убедитесь, что суммарная ширина колонок макета не превышает ширину листа при выбранном масштабе.

Можно ли использовать один макет для нескольких видов документов?

Да. В назначении обработки перечислите несколько типов документов, а в коде процедуры печати учитывайте различия в структуре — например, через проверку типа ссылки или универсальные обращения к реквизитам. Если структуры сильно различаются, удобнее сделать отдельные области или отдельные макеты внутри одной обработки.