При разработке печатных форм документов, таких как путевые листы, квитанции или накладные, нередко возникает требование отправлять документ на печать на бумагу формата А5. Если не задать параметры печати программно, пользователям приходится каждый раз открывать диалог предварительного просмотра, вручную менять размер бумаги на А5 и переключать масштаб на режим «по ширине листа». Выясним, как автоматизировать этот процесс в процедуре формирования табличного документа, устранить обрезку краев и отправить форму на принтер.
Для настройки параметров страницы у объекта ТабличныйДокумент предусмотрены специальные свойства. Разберем ключевые настройки, которые необходимо задать перед выводом формы или отправкой ее на печать:
РазмерСтраницы. Обратите особое внимание: наименование формата задается строкой, и литера «A» обязательно должна быть набрана латиницей: "A5". Если случайно указать русскую букву «А», платформа не выдаст ошибку, но драйвер принтера не распознает значение и применит формат по умолчанию (как правило, A4).ОриентацияСтраницы.Портрет (книжная) или ОриентацияСтраницы.Ландшафт (альбомная).Автомасштаб = Истина заставляет платформу пропорционально сжать документ так, чтобы все колонки поместились на одном листе по ширине.Посмотрим на пример кода в процедуре формирования печатной формы:
ТабДок = Новый ТабличныйДокумент;
// Формирование содержимого документа (вывод секций макета)
// ...
// Задаем параметры страницы
ТабДок.РазмерСтраницы = "A5";
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.Автомасштаб = Истина;
На практике программисты часто сталкиваются с ситуацией, когда строка ТабДок.Автомасштаб = Истина прописана в коде, но при выводе документ все равно разбивается на две страницы по горизонтали, а правая колонка уходит на второй лист. Проанализируем основные причины такого поведения и способы исправления ситуации:
ТабДок.ИмяПараметровПечати, платформа сохраняет индивидуальные настройки предварительного просмотра (масштаб, поля, принтер) в системном хранилище пользователя. Если сотрудник хотя бы один раз вручную установил масштаб 90% или формат А4, эти сохраненные настройки будут переопределять программные директивы. Чтобы сбросить кэш, измените строковый ключ (например, добавьте суффикс версии: ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПутевойЛист_V2";) либо очистите сохраненные настройки пользователя.Посмотрим, как скорректировать поля табличного документа:
// Уменьшаем поля (значения указываются в миллиметрах)
ТабДок.ПолеСлева = 5;
ТабДок.ПолеСправа = 5;
ТабДок.ПолеСверху = 5;
ТабДок.ПолеСнизу = 5;
Не устанавливайте поля строго в 0 мм без необходимости: большинство офисных лазерных и струйных принтеров имеют непечатаемую аппаратную область протяжки бумаги (от 3 до 5 мм). При нулевых полях текст у границы листа физически обрежется принтером.
Некоторые модели принтеров или устаревшие версии драйверов некорректно обрабатывают строковую константу "A5". В этом случае мы можем задать размеры страницы в явном виде через миллиметры:
ТабДок.РазмерСтраницы = "Custom";
ТабДок.ШиринаСтраницы = 148; // миллиметры
ТабДок.ВысотаСтраницы = 210; // миллиметры
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.Автомасштаб = Истина;
Если задача заключается в том, чтобы полностью избавить операторов от лишних действий и сразу отправить готовый путевой лист на печать, рассмотрим метод Напечатать(). Метод вызывается на стороне клиента:
// При необходимости можно жестко указать принтер, где заправлена бумага А5:
// ТабДок.ИмяПринтера = "HP_LaserJet_A5_Tray";
// Печать без отображения стандартного диалога Windows
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
Если у пользователей в принтер заправлены только листы А4, а путевой лист формата А5 нужно печатать компактно, можно вывести две страницы документа на одном стандартном листе А4 с помощью свойства тиражирования:
ТабДок.РазмерСтраницы = "A4";
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.ЭкземпляровНаСтранице = 2;
ТабДок.Автомасштаб = Истина;
Таким образом, комплексная настройка формата листа А5 включает в себя корректное написание латинского кода размера, включение автомасштабирования, уменьшение отступов полей и управление идентификатором параметров печати.