При разработке и формировании отчетов на базе системы компоновки данных (СКД) часто возникает ситуация, когда сформированный табличный документ при выводе на печать не помещается по горизонтали на один лист формата А4. Из-за этого крайние колонки переносятся на следующие страницы, что делает работу с печатной версией крайне неудобной.
Разберем по шагам, почему это происходит, как настроить корректное масштабирование штатными средствами интерфейса, а также как зафиксировать параметры печати в схеме компоновки или программном коде, чтобы пользователю не приходилось менять их вручную при каждом формировании.
Табличный документ платформы 1С сохраняет индивидуальные пользовательские параметры печати (ориентацию листа, поля, масштаб) только в том случае, если для него явно определено свойство ИмяПараметровПечати. Если этот строковый идентификатор не задан, платформа не может сопоставить сохраненные настройки диалогового окна с конкретным отчетом, и при каждом повторном открытии или перезапуске сеанса параметры возвращаются к значениям по умолчанию.
Если отчет уже сформирован и требуется быстро подогнать его под формат бумаги без изменения конфигурации, выполним следующие действия:
Рассмотрим, как задать автоматическое масштабирование непосредственно в конфигураторе внутри схемы СКД, чтобы настройки применялись по умолчанию для всех пользователей:
Проанализируем программный способ управления печатью. В модуле объекта отчета можно переопределить стандартное событие компоновки. При этом не требуется вручную переписывать запросы или использовать построитель — стандартный вывод заполнит табличный документ с учетом переданных настроек.
Посмотрим на пример переопределения процедуры ПриКомпоновкеРезультата:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Задаем уникальный идентификатор для сохранения пользовательских настроек печати
ДокументРезультат.ИмяПараметровПечати = "ПараметрыПечати_МойОтчет";
// Включаем автоматическую подгонку по ширине листа
ДокументРезультат.АвтоМасштаб = Истина;
// Задаем альбомную ориентацию и минимальные поля (в миллиметрах)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ДокументРезультат.ПолеСлева = 10;
ДокументРезультат.ПолеСправа = 10;
КонецПроцедуры
Благодаря заполнению свойства ИмяПараметровПечати любые изменения параметров печати, внесенные пользователем через стандартный диалог, будут сохраняться в системных настройках пользователя и не сбросятся после перезапуска программы.
Если для отчета разработана отдельная управляемая форма, разберем настройку элемента управления, отображающего результат:
Результат (имеющий тип ПолеТабличногоДокумента).ПриСозданииНаСервере или при формировании отчета задаем имя настроек для поля табличного документа:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Результат.ИмяПараметровПечати = "ПараметрыПечати_ФормаМоегоОтчета";
КонецПроцедуры
Если в отчете содержится большое количество колонок, простое включение автомасштабирования может сделать текст слишком мелким и нечитаемым. В таких ситуациях полезно применить дополнительные настройки оформления полей в СКД: