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

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

Как вывести табличный документ на печать в 1С

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

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

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

Материал актуален для управляемых и обычных форм 1С:Предприятия 8.3. Синтаксис методов одинаков, отличается только контекст вызова — на клиенте или на сервере.

Интерактивная печать готовой печатной формы

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

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

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

Порядок действий для интерактивной печати
  1. 1
    Сформируйте печатную форму документа или отчёт
  2. 2
    Откройте предварительный просмотр и проверьте разметку страниц
  3. 3
    Нажмите Ctrl+P или кнопку с изображением принтера
  4. 4
    Выберите принтер, число копий и диапазон страниц
  5. 5
    Подтвердите печать и проверьте результат на бумаге

Программная печать методом Напечатать()

Для вывода из кода у объекта ТабличныйДокумент есть метод Напечатать(). Он принимает один необязательный параметр — РежимИспользованияДиалогаПечати, который определяет, будет ли показан диалог выбора принтера.

Типовой пример вызова с диалогом:

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

// ... заполнение табличного документа ...

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

Если передать значение НеИспользовать, документ уйдёт на принтер по умолчанию без каких-либо окон. Этот режим применяют для автоматической печати: например, чеков, этикеток или пакетной печати комплекта документов. Будьте осторожны — при ошибке в макете на принтер уйдёт брак без предупреждения.

Метод доступен на толстом и тонком клиенте. На веб-клиенте прямая печать без диалога ограничена возможностями браузера: там надёжнее формировать PDF и отдавать его пользователю на печать средствами обозревателя.

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

Предварительный просмотр вместо прямой печати

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

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

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

Способы вывода табличного документа

Напечатать() с диалогом

Подходит для разовой печати по кнопке; пользователь сам выбирает принтер и копии

Напечатать() без диалога

Для автоматической и пакетной печати; риск уйти браком на принтер по умолчанию

Показать() / поле в форме

Предварительный просмотр перед печатью; требует действий пользователя

Записать() в PDF

Для веб-клиента, отправки по почте и архива; печать выполняется из просмотрщика PDF

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

Большинство жалоб «печатает криво» решаются свойствами табличного документа, которые нужно задать до вызова печати. Ключевые свойства: ОриентацияСтраницы (книжная или альбомная), АвтоМасштаб (подгонка ширины под страницу), МасштабПечати (явный процент), поля страницы и ЧерноБелаяПечать.

Если документ шире листа, включите АвтоМасштаб = Истина — платформа уменьшит масштаб так, чтобы колонки помещались по ширине. Для точного контроля задайте МасштабПечати в процентах, но проверяйте читаемость: мелкий шрифт ниже примерно 70 % масштаба трудно читать на бумаге.

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

Пакетная печать нескольких документов

Когда нужно напечатать комплект — например, счёт, накладную и акт по одной сделке, — каждый документ формируется в отдельный табличный документ, а затем они либо объединяются в один через Вывести() с разрывами страниц, либо печатаются последовательно в цикле.

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

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

Типичные ошибки и их устранение

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

Пустые страницы в конце документа появляются из-за лишних пустых строк в макете или области с невидимыми, но занимающими место элементами. Откройте макет и удалите неиспользуемые строки ниже последней области.

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

Типичные ошибки
01
Вызов Напечатать() в серверной процедуре — метод недоступен, печать выполняют только на клиенте
02
Печать без предварительного просмотра в пакетном режиме — брак уходит на бумагу пачкой
03
Не задан автомасштаб для широкой формы — колонки обрезаются или переносятся на лишние страницы
04
Отсутствуют разрывы страниц между документами комплекта — формы слипаются на одном листе
05
Шрифт макета не установлен на рабочем месте — на печати подменяется другим шрифтом

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

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

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

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

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

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

Каждый документ начинается с нового листа, шапка повторяется

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

Формы слипаются, шапка только на первой странице

Ширина таблицы на бумаге
Норма

Все колонки помещаются, текст читаем

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

Правая часть обрезана или масштаб мельче читаемого

Принтер при печати без диалога
Норма

Документ вышел на нужном устройстве

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

Печать ушла на сетевой принтер другого отдела

Итог

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

Интерактивно печатайте через Ctrl+P из предварительного просмотра, программно — методом Напечатать() только на клиенте. Перед печатью задайте ориентацию, масштаб и разрывы страниц, а пакетную печать всегда проверяйте на пробном экземпляре.

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

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

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

Почему Напечатать() не работает в серверной процедуре?

Интерактивные операции, включая печать, доступны только в клиентском контексте. Сформируйте табличный документ на сервере, верните его на клиент (например, через адрес временного хранилища) и вызовите Напечатать() уже в клиентской процедуре.

Как вывести табличный документ в PDF вместо принтера?

Используйте метод Записать() с типом файла ТипФайлаТабличногоДокумента.PDF. Полученный файл можно сохранить, отправить по почте или открыть в просмотрщике и напечатать оттуда. Это основной способ печати в веб-клиенте.

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

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

Документ шире листа, колонки обрезаются. Что делать?

Установите свойство АвтоМасштаб = Истина, чтобы платформа подогнала ширину под страницу, либо переключите ОриентацияСтраницы в альбомную. Если масштаб становится слишком мелким, пересмотрите макет: сократите число колонок или уменьшите отступы.

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

Да. Сформируйте каждую печатную форму и выведите их последовательно в один табличный документ, вставляя между ними разрыв страницы, либо вызывайте Напечатать() для каждого в цикле. В типовых конфигурациях для этого используется штатная подсистема печати с выбором комплекта форм.