Как задать альбомную ориентацию и параметры печати отчета в СКД при компоновке результата

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

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

Разберем подробно причины такого поведения платформы 1С и рассмотрим надежные способы программной настройки параметров страницы в обработчике ПриКомпоновкеРезультата.

Причины сброса настроек печати в отчетах СКД

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

  1. Кэширование настроек печати в хранилище системных настроек: платформа 1С автоматически запоминает индивидуальные параметры печати пользователя для каждого отчета по его имени или свойству КлючПараметровПечати. Если пользователь хотя бы один раз открывал или распечатывал этот отчет со стандартными настройками, сохраненные параметры имеют наивысший приоритет над свойствами, назначенными в коде.
  2. Особенности стандартного вывода: если в процедуре ПриКомпоновкеРезультата оставить флаг СтандартнаяОбработка = Истина, платформа выполняет инициализацию и заполнение табличного документа после завершения процедуры, что может переопределить свойства ДокументРезультат.
  3. Ошибки в раскладке символов при указании формата: формат листа в свойстве РазмерСтраницы задается строкой, и литерал должен быть написан на латинице (например, "A4" или "A5"). Если написать букву «А» на кириллице, платформа не сможет сопоставить формат и применит системные настройки по умолчанию.

Способ 1. Полный программный вывод отчета с установкой свойств

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

Посмотрим на пример правильной реализации в модуле объекта отчета:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	// Получаем настройки компоновки данных
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	
	// Инициализируем процессор компоновки
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных, , ДанныеРасшифровки, Истина);
	
	// Очищаем результирующий документ перед выводом
	ДокументРезультат.Очистить();
	
	// Выводим результат в табличный документ
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
	
	// Устанавливаем параметры страницы после вывода
	ДокументРезультат.ОриентацияСтраницы   = ОриентацияСтраницы.Ландшафт;
	ДокументРезультат.РазмерСтраницы       = "A5";
	ДокументРезультат.АвтоМасштаб          = Истина;
	ДокументРезультат.ЭкземпляровНаСтранице = 2;
	
	// Назначаем уникальный ключ параметров печати
	ДокументРезультат.КлючПараметровПечати = "ПараметрыПечати_ОтчетПоСписанию_Ландшафт_v1";

КонецПроцедуры

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

Способ 2. Управление ключом параметров печати и сброс кэша

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

  1. Изменение значения КлючПараметровПечати: укажем новое уникальное строковое имя для настроек печати (например, добавим к нему суффикс версии). Поскольку для нового ключа сохраненных параметров в базе еще нет, платформа применит свойства из программного кода.
  2. Программная очистка сохраненных настроек: если требуется сбросить старые настройки для текущего пользователя, выполним вызов метода хранилища:
    
    ХранилищеСистемныхНастроек.Удалить("Общее/ПараметрыПечатиТабличныхДокументов", "ПараметрыПечати_ОтчетПоСписанию", ИмяПользователя());
    
  3. Ручное сохранение через предварительный просмотр: откроем сформированный отчет, перейдем в предварительный просмотр или параметры страницы, убедимся в выборе альбомной ориентации и нажмем «Печать» или сохраним параметры. После этого новые настройки закрепятся в системном хранилище для данного пользователя.

Способ 3. Установка параметров в управляемой форме отчета

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


&НаСервере
Процедура СформироватьОтчетНаСервере()
	
	ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	ОтчетОбъект.СкомпоноватьРезультат(Элементы.Результат);
	
	// Назначаем свойства реквизиту формы типа ТабличныйДокумент
	Элементы.Результат.ОриентацияСтраницы   = ОриентацияСтраницы.Ландшафт;
	Элементы.Результат.АвтоМасштаб          = Истина;
	Элементы.Результат.КлючПараметровПечати = "ПараметрыПечати_ФормаОтчета_Ландшафт";
	
КонецПроцедуры

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

← На главную