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