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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разберем распространенную проблему при выводе печатной формы: данные в ПолеТабличногоДокумента выводится узко и не заполняют всю ширину страницы. Попытка установить свойство АвтоМасштаб = Истина не дает результата, а ручное увеличение масштаба (например, МасштабПечати = 140) приводит к появлению лишней пустой страницы.

Рассмотрим подробно причины такого поведения платформы 1С и проанализируем проверенные способы решения этой задачи.

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

Выясним причину, почему штатные механизмы масштабирования работают именно так:

  1. Ограничение свойства АвтоМасштаб: В платформе 1С свойство АвтоМасштаб = Истина работает только в сторону уменьшения (когда печатная форма превышает ширину листа). Если документ уже умещается на странице, автомасштабирование оставляет масштаб равным 100% и не растягивает его по ширине.
  2. Двумерное пропорциональное масштабирование: Свойство МасштабПечати увеличивает документ одновременно и по ширине, и по высоте. Если установить МасштабПечати = 140, то ширина таблицы увеличится в 1,4 раза, но ровно во столько же раз увеличится и высота каждой строки. В результате нижняя часть печатной формы перестает помещаться по высоте и переносится на второй лист.
  3. Влияние полей и колонтитулов: Верхние и нижние поля (ПолеСверху, ПолеСнизу), а также размеры колонтитулов (РазмерКолонтитулаСнизу) забирают полезную высоту страницы. При увеличении масштаба строк доступного места по высоте становится еще меньше.
  4. Закешированные параметры печати: Если для табличного документа задано ИмяПараметровПечати, платформа может накладывать ранее сохраненные пользовательские настройки страницы.

Вариант 1. Автоматический подбор масштаба через КоличествоСтраниц или ПроверитьВывод

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

Разберем пример кода с использованием метода КоличествоСтраниц():


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

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

// Отключаем автомасштабирование и устанавливаем желаемый повышенный масштаб
ТабДокумент.АвтоМасштаб = Ложь;
ТабДокумент.МасштабПечати = 140;

// Уменьшаем масштаб с шагом, пока документ не станет умещаться на 1 странице
Пока ТабДокумент.КоличествоСтраниц() > 1 И ТабДокумент.МасштабПечати > 100 Цикл
    ТабДокумент.МасштабПечати = ТабДокумент.МасштабПечати - 5;
КонецЦикла;

Альтернативный вариант — использовать метод ПроверитьВывод() для массива выводимых областей:


ВыводимыеОбласти = Новый Массив;
ВыводимыеОбласти.Добавить(ОбластьСтрока);

ТабДокумент.АвтоМасштаб = Ложь;
ТабДокумент.МасштабПечати = 140;

Пока НЕ ТабДокумент.ПроверитьВывод(ВыводимыеОбласти) И ТабДокумент.МасштабПечати > 100 Цикл
    ТабДокумент.МасштабПечати = ТабДокумент.МасштабПечати - 5;
КонецЦикла;

Вариант 2. Компенсация высоты за счет уменьшения полей

Если необходимо сохранить максимальную ширину при МасштабПечати = 140, разберем вариант с уменьшением технологических отступов. Это высвободит дополнительную высоту страницы для увеличившихся по высоте строк:


// Уменьшаем поля и колонтитулы до минимума
ТабДокумент.ПолеСверху = 2;
ТабДокумент.ПолеСнизу = 2;
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;

// Задаем увеличенный масштаб печати
ТабДокумент.МасштабПечати = 140;

Вариант 3. Изменение ширины колонок вместо масштабирования печати

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

Вариант 4. Проверка макета и сброс параметров печати

Проанализируем еще два важных момента:

  1. Удаление пустых колонок: Проверим макет в конфигураторе. Наличие пустых колонок справа или слева приводит к тому, что при увеличении масштаба в 1.4 раза они становятся шире и выходят за границу печатной области. Их необходимо выделить и полностью удалить.
  2. Сброс имени параметров печати: Если к документу применяются ранее сохраненные настройки пользователя, очистим свойство ИмяПараметровПечати перед формированием:

ТабДокумент.ИмяПараметровПечати = "";

← На главную