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