Документы и Печать · 10 мин
Как вывести табличный документ на печать в 1С
Как вывести табличный документ на печать в 1С: интерактивная печать, программные методы, настройка параметров страницы, типичные ошибки и решения.
Табличный документ в 1С — универсальный объект, который используется для печатных форм, отчётов и любых выводимых на бумагу данных. Вывести его на печать можно двумя путями: интерактивно, через интерфейс пользователя, либо программно, из встроенного языка. Выбор зависит от задачи: разовая печать готовой формы выполняется кнопкой, а массовая рассылка документов или печать без участия пользователя требует кода.
Частая причина проблем с печатью — не сама команда вывода, а подготовка документа: не заданы параметры страницы, неправильно выбран масштаб, область печати выходит за границы листа. Поэтому рабочий процесс всегда состоит из трёх этапов: сформировать табличный документ, настроить параметры страницы, отправить на принтер или в предварительный просмотр.
Материал актуален для управляемых и обычных форм 1С:Предприятия 8.3. Синтаксис методов одинаков, отличается только контекст вызова — на клиенте или на сервере.
Интерактивная печать готовой печатной формы
Самый простой случай — документ или отчёт уже сформирован и отображён на экране как табличный документ. Откройте меню «Файл» и выберите пункт «Печать», либо нажмите сочетание клавиш Ctrl+P. Появится стандартный диалог печати операционной системы, где выбирается принтер, число копий и диапазон страниц.
Во многих типовых конфигурациях печатные формы формируются по кнопке «Печать» в форме документа. После выбора нужной формы открывается окно предварительного просмотра — это тот же табличный документ. Из него печать запускается кнопкой с изображением принтера на панели инструментов.
Перед отправкой на принтер проверьте предварительный просмотр: убедитесь, что шапка не отрезана, колонки не «уехали» на вторую страницу, а итоговые строки видны полностью. Исправить это после печати нельзя — придётся перепечатывать и тратить бумагу.
- 1Сформируйте печатную форму документа или отчёт
- 2Откройте предварительный просмотр и проверьте разметку страниц
- 3Нажмите Ctrl+P или кнопку с изображением принтера
- 4Выберите принтер, число копий и диапазон страниц
- 5Подтвердите печать и проверьте результат на бумаге
Программная печать методом Напечатать()
Для вывода из кода у объекта ТабличныйДокумент есть метод Напечатать(). Он принимает один необязательный параметр — РежимИспользованияДиалогаПечати, который определяет, будет ли показан диалог выбора принтера.
Типовой пример вызова с диалогом:
ТабДок = Новый ТабличныйДокумент;
// ... заполнение табличного документа ...
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
Если передать значение НеИспользовать, документ уйдёт на принтер по умолчанию без каких-либо окон. Этот режим применяют для автоматической печати: например, чеков, этикеток или пакетной печати комплекта документов. Будьте осторожны — при ошибке в макете на принтер уйдёт брак без предупреждения.
Метод доступен на толстом и тонком клиенте. На веб-клиенте прямая печать без диалога ограничена возможностями браузера: там надёжнее формировать PDF и отдавать его пользователю на печать средствами обозревателя.
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); // печать на принтере по умолчанию без диалогаПредварительный просмотр вместо прямой печати
Когда пользователь должен сначала увидеть результат, вместо Напечатать() используют показ документа. В управляемых формах табличный документ выводят в реквизит формы типа «ТабличныйДокумент» с полем вида «Поле табличного документа». Пользователь видит форму и сам решает, печатать ли её.
Альтернатива — метод Показать(), который открывает табличный документ в отдельном окне. Он подходит для простых решений на обычных формах и для отладки: разработчик быстро проверяет, что попало в макет, не подключая форму.
Из окна предварительного просмотра доступны и сохранение в файл, и печать, поэтому этот вариант считается самым безопасным для пользователя: он контролирует результат до расхода бумаги.
Способы вывода табличного документа
Подходит для разовой печати по кнопке; пользователь сам выбирает принтер и копии
Для автоматической и пакетной печати; риск уйти браком на принтер по умолчанию
Предварительный просмотр перед печатью; требует действий пользователя
Для веб-клиента, отправки по почте и архива; печать выполняется из просмотрщика PDF
Настройка параметров страницы перед печатью
Большинство жалоб «печатает криво» решаются свойствами табличного документа, которые нужно задать до вызова печати. Ключевые свойства: ОриентацияСтраницы (книжная или альбомная), АвтоМасштаб (подгонка ширины под страницу), МасштабПечати (явный процент), поля страницы и ЧерноБелаяПечать.
Если документ шире листа, включите АвтоМасштаб = Истина — платформа уменьшит масштаб так, чтобы колонки помещались по ширине. Для точного контроля задайте МасштабПечати в процентах, но проверяйте читаемость: мелкий шрифт ниже примерно 70 % масштаба трудно читать на бумаге.
Для многостраничных документов полезны свойства повтора строк: ПовторятьПриПечатиСтроки позволяет выводить шапку таблицы на каждой странице. Также проверьте разделители страниц — методы ПроверитьВывод() и ПроверитьПрисоединение() помогают программно определить, поместится ли следующая область на текущий лист, и вовремя вставить разрыв.
Пакетная печать нескольких документов
Когда нужно напечатать комплект — например, счёт, накладную и акт по одной сделке, — каждый документ формируется в отдельный табличный документ, а затем они либо объединяются в один через Вывести() с разрывами страниц, либо печатаются последовательно в цикле.
При объединении в один табличный документ между формами выводите горизонтальный разделитель страниц, иначе начало следующего документа «приклеится» к концу предыдущего. Проверить корректность разрывов можно в предварительном просмотре в режиме «Разметка страниц».
В типовых конфигурациях для этого существует подсистема печати (менеджер печати объекта), где формы регистрируются и выводятся единым механизмом. Если вы дорабатываете типовое решение, добавляйте свою форму через эту подсистему, а не прямым вызовом Напечатать() — так печать будет работать и из списка документов, и сгруппируется в общий комплект.
Типичные ошибки и их устранение
Ошибка «Метод объекта не обнаружен» при вызове Напечатать() обычно означает, что метод вызван на сервере. Печать возможна только на клиенте — перенесите вызов в клиентскую процедуру, а формирование документа оставьте на сервере, передавая готовый табличный документ через временное хранилище.
Пустые страницы в конце документа появляются из-за лишних пустых строк в макете или области с невидимыми, но занимающими место элементами. Откройте макет и удалите неиспользуемые строки ниже последней области.
Если печать «обрезает» правую часть документа — проверьте ориентацию страницы и автомасштаб. Если шрифт на бумаге отличается от экранного — убедитесь, что шрифт макета установлен на компьютере, с которого выполняется печать, иначе система подставит ближайший доступный.
Проверка результата
После настройки пройдите контрольный цикл: сформируйте документ, откройте предварительный просмотр в режиме разметки страниц, убедитесь, что число страниц соответствует ожиданию, шапка повторяется, итоги на месте. Затем напечатайте одну пробную копию и сверьте с экраном.
Для автоматической печати добавьте в журнал запись о факте отправки на принтер — так проще разбирать ситуации «документ не напечатался», когда причина была в отключённом принтере, а не в коде.
Как проверить результат
Каждый документ начинается с нового листа, шапка повторяется
Формы слипаются, шапка только на первой странице
Все колонки помещаются, текст читаем
Правая часть обрезана или масштаб мельче читаемого
Документ вышел на нужном устройстве
Печать ушла на сетевой принтер другого отдела
Что важно запомнить
Интерактивно печатайте через Ctrl+P из предварительного просмотра, программно — методом Напечатать() только на клиенте. Перед печатью задайте ориентацию, масштаб и разрывы страниц, а пакетную печать всегда проверяйте на пробном экземпляре.
Частые вопросы
Как напечатать табличный документ без диалога выбора принтера?
Вызовите метод Напечатать() с параметром РежимИспользованияДиалогаПечати.НеИспользовать. Документ уйдёт на принтер по умолчанию. Предварительно убедитесь, что на рабочем месте назначен правильный принтер, и протестируйте печать на одном документе.
Почему Напечатать() не работает в серверной процедуре?
Интерактивные операции, включая печать, доступны только в клиентском контексте. Сформируйте табличный документ на сервере, верните его на клиент (например, через адрес временного хранилища) и вызовите Напечатать() уже в клиентской процедуре.
Как вывести табличный документ в PDF вместо принтера?
Используйте метод Записать() с типом файла ТипФайлаТабличногоДокумента.PDF. Полученный файл можно сохранить, отправить по почте или открыть в просмотрщике и напечатать оттуда. Это основной способ печати в веб-клиенте.
Как заставить шапку таблицы повторяться на каждой странице?
Задайте свойство ПовторятьПриПечатиСтроки у табличного документа, указав область строк с заголовком. Проверьте результат в режиме разметки страниц: шапка должна появляться на каждом листе после первого разрыва.
Документ шире листа, колонки обрезаются. Что делать?
Установите свойство АвтоМасштаб = Истина, чтобы платформа подогнала ширину под страницу, либо переключите ОриентацияСтраницы в альбомную. Если масштаб становится слишком мелким, пересмотрите макет: сократите число колонок или уменьшите отступы.
Можно ли напечатать сразу несколько разных документов одной командой?
Да. Сформируйте каждую печатную форму и выведите их последовательно в один табличный документ, вставляя между ними разрыв страницы, либо вызывайте Напечатать() для каждого в цикле. В типовых конфигурациях для этого используется штатная подсистема печати с выбором комплекта форм.