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

Документы и Печать · 12 мин

Как создать свою печатную форму в 1С

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

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

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

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

Выбор способа: типовой макет, внешняя форма или расширение

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

Внешняя печатная форма — это файл обработки с расширением .epf, который подключается в режиме 1С:Предприятие. Она регистрируется в подсистеме «Дополнительные отчеты и обработки» и появляется в кнопке «Печать» нужного документа. Конфигурация при этом остаётся на полной поддержке.

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

Способы создания печатной формы

Изменение типового макета

Быстро для разовой правки, но снимает объект с поддержки и осложняет обновления

Внешняя печатная форма (.epf)

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

Расширение конфигурации

Подходит, когда кроме печати нужно менять формы и логику; требует аккуратности при обновлениях

Подготовка: что понадобится перед началом работы

Для работы потребуется конфигуратор 1С с правами разработчика (роль с правом «Конфигуратор» и «Администрирование» для подключения обработки), доступ к базе в режиме предприятия и тестовая копия базы. Все эксперименты с печатными формами проводите на копии: ошибка в коде печати не испортит данные, но может вызвать ошибки у пользователей, печатающих документы прямо сейчас.

Уточните, какая подсистема печати используется в конфигурации. В конфигурациях на базе БСП (это почти все современные типовые решения) внешние формы подключаются через «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Если этого пункта нет, проверьте, включена ли функциональная опция «Дополнительные отчеты и обработки».

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

Откройте конфигуратор и выберите «Файл → Новый → Внешняя обработка». Задайте имя, например «СчетНаОплатуСЛоготипом». В дереве обработки добавьте макет типа «Табличный документ» — именно в нём рисуется внешний вид печатной формы.

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

bsl
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = Новый Структура;
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
	ПараметрыРегистрации.Вставить("Назначение", Новый Массив);
	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
	ПараметрыРегистрации.Вставить("Наименование", "Счет на оплату (с логотипом)");
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	ПараметрыРегистрации.Вставить("Информация", "Печать счета с логотипом компании");
	Команды = Новый ТаблицаЗначений;
	Команды.Колонки.Добавить("Представление");
	Команды.Колонки.Добавить("Идентификатор");
	Команды.Колонки.Добавить("Использование");
	Команды.Колонки.Добавить("ПоказыватьОповещение");
	Команды.Колонки.Добавить("Модификатор");
	Команда = Команды.Добавить();
	Команда.Представление = "Счет на оплату (с логотипом)";
	Команда.Идентификатор = "СчетСЛоготипом";
	Команда.Использование = "ВызовСерверногоМетода";
	Команда.ПоказыватьОповещение = Ложь;
	ПараметрыРегистрации.Вставить("Команды", Команды);
	Возврат ПараметрыРегистрации;
КонецФункции

Обратите внимание на параметр «Назначение»: в нём указывается точное имя объекта метаданных, например «Документ.СчетНаОплатуПокупателю». Если имя указано с ошибкой или документа с таким именем нет в конфигурации, обработка не подключится — 1С выдаст сообщение об отсутствии объектов назначения.

Построение макета печатной формы

Макет табличного документа состоит из именованных областей: «Шапка», «СтрокаТаблицы», «Подвал» и других. Область выделяется по строкам и получает имя через свойство «Имя» в палитре свойств. Код печати последовательно выводит эти области в итоговый табличный документ.

Внутри ячеек макета размещаются параметры — места подстановки данных. В свойстве ячейки «Заполнение» выберите «Параметр», а в свойстве «Параметр» укажите имя, например «НомерДокумента» или «Покупатель». Текст в квадратных скобках вида [НомерДокумента] тоже работает, если заполнение ячейки — «Шаблон».

Для табличной части документа создайте отдельную область строки с параметрами «Номенклатура», «Количество», «Цена», «Сумма». В коде эта область выводится в цикле по строкам табличной части документа. Не забудьте про итоги: область «Подвал» обычно содержит сумму прописью, подписи и печать.

Код вывода: процедура печати

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

bsl
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Макет = ЭтотОбъект.ПолучитьМакет("МакетСчета");
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТаблицы");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	Для Каждого Ссылка Из МассивОбъектов Цикл
		Данные = Ссылка.ПолучитьОбъект();
		ОбластьШапка.Параметры.НомерДокумента = Данные.Номер;
		ОбластьШапка.Параметры.Покупатель = Данные.Контрагент;
		ТабличныйДокумент.Вывести(ОбластьШапка);
		Для Каждого СтрокаТовара Из Данные.Товары Цикл
			ОбластьСтрока.Параметры.Заполнить(СтрокаТовара);
			ТабличныйДокумент.Вывести(ОбластьСтрока);
		КонецЦикла;
		ОбластьПодвал.Параметры.СуммаИтого = Данные.Товары.Итог("Сумма");
		ТабличныйДокумент.Вывести(ОбластьПодвал);
	КонецЦикла;
	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетСЛоготипом", "Счет на оплату", ТабличныйДокумент);
КонецПроцедуры

Метод ОбластьСтрока.Параметры.Заполнить(СтрокаТовара) автоматически подставляет в параметры значения одноимённых колонок строки табличной части — это избавляет от ручного перечисления полей. Если имя параметра не совпадает с именем колонки, заполните его отдельно.

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

Подключение формы в режиме предприятия

Сохраните обработку в файл .epf. В режиме 1С:Предприятие откройте «Администрирование → Печатные формы, отчеты и обработки», убедитесь, что включён флажок «Дополнительные отчеты и обработки», и перейдите по ссылке «Дополнительные отчеты и обработки». Нажмите «Создать» и выберите файл обработки.

После загрузки проверьте раздел «Размещение»: там должен быть указан нужный тип документа. Если список пуст — скорее всего, ошибка в массиве «Назначение» в функции СведенияОВнешнейОбработке. Сохраните элемент справочника и откройте любой документ нужного типа: в меню «Печать» появится новый пункт.

Порядок подключения
  1. 1
    Сохраните обработку из конфигуратора в файл .epf
  2. 2
    В режиме предприятия включите опцию «Дополнительные отчеты и обработки»
  3. 3
    Создайте новый элемент и загрузите файл обработки
  4. 4
    Проверьте размещение: должен быть указан нужный документ
  5. 5
    Откройте документ и найдите новую команду в меню «Печать»
  6. 6
    Напечатайте тестовый документ и сверьте все поля с данными

Проверка результата и типичные ошибки

После подключения напечатайте минимум два документа: один с одной строкой товаров, другой — с длинной табличной частью на несколько страниц. Проверьте, что итоги считаются верно, сумма прописью соответствует цифрам, а колонтитулы и номера страниц не «ломаются» на второй странице.

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

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

Новая команда в меню «Печать» документа
Норма

Команда видна и открывает табличный документ

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

Команды нет — проверьте размещение и массив «Назначение»

Заполнение полей
Норма

Все параметры подставлены, нет пустых ячеек

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

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

Многостраничная печать
Норма

Шапка таблицы повторяется, итоги на последней странице

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

Таблица обрывается или шапка пропадает — настройте повторяющиеся области

Типичные ошибки
01
Опечатка в имени объекта назначения — обработка загружается, но не привязывается к документу
02
Использование клиентских вызовов при варианте «ВызовСерверногоМетода» — ошибка выполнения при печати
03
Изменение типового макета вместо внешней формы — доработка теряется при обновлении конфигурации
04
Забытый безопасный режим или отключённая защита от опасных действий — 1С блокирует загрузку обработки
05
Тестирование только на документе с одной строкой — ошибки разбиения на страницы всплывают у пользователей

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

Храните исходный файл .epf вместе с текстовым описанием версии в общем сетевом каталоге или системе контроля версий. Когда через полгода понадобится добавить одно поле, найти актуальную версию обработки среди десятка файлов «Счет_новый_финал.epf» будет непросто.
ПЗ
Практическое замечание

Часто задаваемые вопросы

Можно ли создать печатную форму без конфигуратора, прямо в режиме предприятия?

Частично да. В типовых конфигурациях на базе БСП есть механизм редактирования макетов: «Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм». Там можно изменить существующий макет — поправить тексты, добавить реквизиты, логотип. Но полностью новую форму с собственной логикой без конфигуратора не создать.

Почему обработка не загружается: «Запрещено открытие внешних отчетов и обработок»?

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

Как вывести логотип или печать организации на форму?

Два способа: вставить рисунок прямо в макет табличного документа через «Рисунок» в редакторе макета — тогда изображение хранится внутри обработки; либо брать картинку из реквизита организации (например, «ФайлЛоготип» в типовых конфигурациях) и выводить программно. Второй вариант удобнее, если логотипы меняются.

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

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

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

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

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

Да. В массив «Назначение» в функции СведенияОВнешнейОбработке добавьте несколько имён, например «Документ.РеализацияТоваровУслуг» и «Документ.СчетНаОплатуПокупателю». В коде печати учтите различия в структуре данных этих документов — удобно формировать универсальную структуру параметров для макета.

Итог

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

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