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