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