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