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