К статье
Практический материал

Документы и Печать · 11 мин

Как вывести макет на печать в 1С

Как вывести макет на печать в 1С: печать табличных документов, настройка параметров страницы, масштаб, колонтитулы, вывод из кода и решение типичных проблем.

Вывод макета на печать в 1С — задача, с которой сталкиваются и обычные пользователи, и разработчики. Пользователю нужно распечатать счёт, акт или отчёт так, чтобы документ поместился на лист и выглядел аккуратно. Разработчику — сформировать печатную форму программно: заполнить макет данными, вывести области в табличный документ и отправить его на принтер или в файл.

В 1С:Предприятии печать строится вокруг объекта «Табличный документ». Именно он хранит итоговую печатную форму: текст, оформление, разрывы страниц, параметры листа. Макет при этом — только шаблон, из которого табличный документ собирается. Понимание этой двухступенчатой схемы снимает большинство вопросов: сначала заполняется макет, затем результат выводится в табличный документ, и только потом документ печатается или сохраняется.

Материал охватывает обе стороны задачи: работу пользователя в режиме предприятия (предпросмотр, настройка страницы, сохранение в PDF) и программный вывод макета на печать через встроенный язык. Отдельно разобраны типичные проблемы — обрезанные колонки, пустые листы, неверный масштаб — и способы их устранения.

Печать макета в режиме пользователя

Самый частый сценарий — печать готовой печатной формы из документа или отчёта. Откройте нужный документ, нажмите кнопку «Печать» (обычно в командной панели формы или в меню «Ещё») и выберите требуемую форму: счёт на оплату, ТОРГ-12, акт и т.п. Система сформирует табличный документ и покажет его на экране.

Дальше есть два пути. Можно сразу нажать «Печать» на панели табличного документа — документ уйдёт на принтер по умолчанию с текущими настройками. Либо сначала открыть предварительный просмотр и убедиться, что содержимое помещается на лист: не обрезаны колонки, нет пустых страниц, шапка таблицы повторяется на каждом листе, если это предусмотрено макетом.

Если печатной формы нет в списке, проверьте, подключены ли дополнительные печатные формы (раздел «Администрирование» → «Печатные формы, отчёты и обработки»). Во многих конфигурациях внешние печатные формы добавляются именно туда, и без их подключения нужный макет в меню «Печать» не появится.

Порядок действий при печати из документа
  1. 1
    Откройте документ и нажмите «Печать», выберите нужную форму
  2. 2
    Дождитесь формирования табличного документа и осмотрите его
  3. 3
    Откройте «Файл → Предварительный просмотр» и проверьте разбивку на страницы
  4. 4
    При необходимости настройте параметры страницы: ориентацию, поля, масштаб
  5. 5
    Нажмите «Печать» и выберите принтер либо сохраните документ в PDF

Настройка параметров страницы перед печатью

Большинство проблем с печатью решается в диалоге «Параметры страницы» (меню «Файл» табличного документа). Здесь задаётся ориентация листа, размер бумаги, поля и масштаб. Для широких таблиц первое действие — переключить ориентацию на альбомную: часто этого достаточно, чтобы колонки перестали обрезаться.

Масштаб задаётся в процентах. Значение меньше 100 ужимает содержимое, но помните: при масштабе ниже примерно 70% мелкий шрифт становится трудночитаемым. Более аккуратная альтернатива — автоподбор ширины: у табличного документа есть свойство «АвтоМасштаб», а в интерактивных настройках — режим «поместить по ширине страницы», который подбирает масштаб автоматически.

Отдельно проверьте поля. Если принтер не печатает до самого края листа (а большинство офисных принтеров имеют непечатаемую зону), слишком маленькие поля приведут к обрезанию содержимого. Безопасное значение полей — 10–15 мм с каждой стороны. Также полезно включить колонтитулы с номером страницы для многостраничных документов.

Программный вывод макета: базовая схема

Для разработчика вывод макета на печать начинается с получения макета и заполнения его областей. Макет хранится в конфигурации (общие макеты или макеты объекта) и содержит именованные области: «Шапка», «Строка», «Подвал» и т.д. Каждая область получается методом ПолучитьОбласть и выводится в табличный документ методом Вывести.

ТабДок = Новый ТабличныйДокумент;

Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("Акт");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.НомерДокумента = Ссылка.Номер;

ОбластьШапка.Параметры.Контрагент = Ссылка.Контрагент;

ТабДок.Вывести(ОбластьШапка);

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

Для Каждого СтрокаТовара Из Ссылка.Товары Цикл

ОбластьСтрока.Параметры.Заполнить(СтрокаТовара);

ТабДок.Вывести(ОбластьСтрока);

КонецЦикла;

ТабДок.Показать("Акт оказания услуг");

Ключевые моменты этой схемы: параметры области заполняются до её вывода; метод Параметры.Заполнить() подставляет одноимённые поля из строки табличной части автоматически; метод Показать открывает документ пользователю, а для прямой печати без предпросмотра используется ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать).

Если макет создаётся с нуля, в конструкторе макета задайте имена областей и в ячейках укажите тип заполнения «Параметр» для подставляемых значений и «Шаблон» для смешанных строк вида «Акт № [НомерДокумента] от [ДатаДокумента]». Неверно выбранный тип заполнения — частая причина того, что вместо значения печатается имя параметра в квадратных скобках.

bsl
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);

Разрывы страниц и повторение шапки

Когда табличная часть не помещается на один лист, важно управлять разрывами страниц. Метод ПроверитьВывод позволяет заранее узнать, поместятся ли очередные области на текущей странице, и при необходимости вывести горизонтальный разделитель страниц и повторить шапку таблицы.

МассивОбластей = Новый Массив;

МассивОбластей.Добавить(ОбластьСтрока);

МассивОбластей.Добавить(ОбластьПодвал);

Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда

ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

ТабДок.Вывести(ОбластьШапкаТаблицы); // повтор шапки

КонецЕсли;

ТабДок.Вывести(ОбластьСтрока);

Проверять нужно не только строку, но и подвал: иначе возможна ситуация, когда последняя строка таблицы окажется на одной странице, а итоги и подписи — на следующей. Именно поэтому в ПроверитьВывод передаётся массив областей: система проверяет, поместятся ли они все вместе.

Для простых отчётов без кода есть альтернатива: в свойствах макета или табличного документа можно задать сквозные строки и колонки (свойства «ПовторятьПриПечатиСтроки/Колонки» в макете, параметр «СквозныеСтроки» у табличного документа). Тогда шапка будет повторяться на каждой странице автоматически, без программной логики.

Перед выводом печатной формы сразу задайте табличному документу свойства ОриентацияСтраницы, АвтоМасштаб и Поля — пользователи редко меняют эти настройки вручную, и документ сразу напечатается корректно.
ПЗ
Практическое замечание

Сохранение в файл вместо печати на принтер

Не всегда макет нужно выводить именно на бумагу. Табличный документ сохраняется в PDF, Excel, HTML и других форматах методом Записать. Это удобно для отправки документов контрагентам по электронной почте или для архива.

ТабДок.Записать("C:\Документы\Акт.pdf", ТипФайлаТабличногоДокумента.PDF);

В режиме пользователя та же возможность доступна через «Файл → Сохранить» или «Сохранить копию» в окне табличного документа. Для документов, которые будут подписываться или печататься контрагентом, предпочтителен PDF: он сохраняет разбивку на страницы и шрифты независимо от компьютера получателя. Формат Excel подходит, когда получателю нужно редактировать данные.

Типичные проблемы и их решение

Обрезанные колонки — самая частая жалоба. Причины: книжная ориентация при широкой таблице, слишком большие поля, отключённый автомасштаб. Решается переключением на альбомную ориентацию, уменьшением полей или включением автоподбора масштаба по ширине страницы.

Пустые страницы в середине или конце документа обычно означают лишний выведенный разделитель страниц или область с пустыми строками внизу макета. Откройте макет в конфигураторе и проверьте, нет ли в областях пустых строк с заданной высотой — они занимают место и провоцируют разрыв.

Если вместо значений печатаются имена параметров в квадратных скобках — параметр не заполнен или назван в коде не так, как в макете. Имена параметров чувствительны к опечаткам, но не к регистру. Если печатная форма вообще не формируется и появляется ошибка «Макет не найден», проверьте имя макета в вызове ПолучитьМакет и наличие макета у объекта.

Типичные ошибки
01
Заполнение параметров области после её вывода — значения не попадают в документ
02
Проверка ПроверитьВывод только для строки без подвала — итоги отрываются от таблицы
03
Ручная настройка масштаба у пользователя вместо АвтоМасштаб в коде — у каждого печатается по-разному
04
Доработка типового макета вместо внешней печатной формы — изменения теряются при обновлении
05
Сохранение в Excel вместо PDF для контрагента — разбивка на страницы нарушается

Проверка результата перед отправкой

Перед массовой печатью или отправкой документа контрагенту пройдите контрольные точки: откройте предпросмотр, пролистайте все страницы, убедитесь, что итоги не оторваны от таблицы, номера страниц присутствуют, а подписи и печати расположены на последнем листе целиком.

Контрольные точки

Как проверить результат

Разбивка на страницы в предпросмотре
Норма

Каждая страница заполнена, шапка таблицы повторяется, нет пустых листов

Тревожный признак

Пустые страницы, обрезанные колонки, подвал на отдельном листе

Значения параметров
Норма

Все поля заполнены реальными данными документа

Тревожный признак

Видны имена параметров в квадратных скобках или пустые поля

Масштаб и читаемость
Норма

Текст читается без увеличения, таблица помещается по ширине

Тревожный признак

Мелкий нечитаемый шрифт, содержимое выходит за поля

Если документ печатается регулярно в большом количестве экземпляров, полезно один раз настроить параметры страницы в макете или коде и зафиксировать их — тогда каждый пользователь получит одинаковый результат без ручных настроек.

Итог

Что важно запомнить

Печать в 1С строится по схеме: макет → табличный документ → принтер или файл. Пользователю достаточно кнопки «Печать» и настройки параметров страницы; разработчику — методов ПолучитьМакет, ПолучитьОбласть, Вывести и ПроверитьВывод. Доработки печатных форм делайте через внешние формы или расширения, а не изменением типовой конфигурации.

Частые вопросы

Как распечатать документ без предварительного просмотра?

В пользовательском режиме нажмите кнопку «Печать» на панели табличного документа — документ уйдёт на принтер сразу. В коде используйте метод ТабДок.Напечатать() с параметром НеИспользовать диалога печати: тогда печать выполнится на принтер по умолчанию без каких-либо окон.

Почему таблица обрезается справа при печати?

Чаще всего ширина таблицы превышает ширину печатной области при книжной ориентации. Переключите ориентацию на альбомную, уменьшите поля или включите автомасштаб. Если и это не помогает, уменьшите масштаб вручную, но не ниже уровня, при котором текст остаётся читаемым.

Как вывести на печать отчёт, сформированный на СКД?

Отчёт на системе компоновки данных формируется в тот же табличный документ, поэтому печатается стандартно: кнопка «Печать» в форме отчёта. Разбивкой на страницы и повторением шапки управляют настройки самого отчёта и параметры табличного документа результата.

Можно ли печатать сразу несколько документов одной командой?

Да. В списке документов выделите нужные строки и выберите команду печати — большинство конфигураций сформируют единый табличный документ со всеми печатными формами. Программно это делается циклом: для каждой ссылки формируются области и выводятся в общий табличный документ с разделителями страниц между документами.

Как добавить свою печатную форму, не меняя конфигурацию?

Используйте механизм внешних печатных форм: создайте внешнюю обработку с процедурой печати по стандартному интерфейсу и подключите её в разделе «Дополнительные отчёты и обработки». Альтернатива — расширение конфигурации, если нужно изменить существующую типовую форму.

Почему в PDF пропадают шрифты или «съезжает» вёрстка?

Такое бывает, если в документе используются шрифты, отсутствующие на компьютере, где формируется PDF, либо при сохранении через сторонние виртуальные принтеры. Используйте штатный метод Записать с типом файла PDF и стандартные шрифты в макете — тогда результат будет одинаковым на любой машине.