Сегодня поговорим о том как в СКД реализовать разрыв страницы.
Содержание
1. Постановка задачи
2. Настройка СКД
3. Код вставки разрыва страницы
4. Полученный результат
1. Постановка задачи
У нас имеется простой отчет в СКД "Остатки по складам". Необходимо чтобы остатки по каждому складу начинались с новой страницы.
Так выглядят первоначально настройки отчета в СКД.
2. Настройка СКД
На вкладке Настройки добавляем пустую группировку, через контекстное меню выбираем пункт Установить имя и указываем имя - УстановитьРазрыв.
В настройках добавленной группировки на вкладке Выбранные поля удаляем поле Авто и добавляем параметр РазрывСтраницы, который создали на вкладке Параметры.
На вкладке Макеты добавляем макет группировки.
В появившемся окне в свойстве Имя группировки указываем имя переименованной группировки - УстановитьРазрыв.
В указанной строке, в любой ячейке пишим - ЭтоРазрывСтраницы. В свойстве Заполнение этой ячейки указываем тип Параметр. Слева в окне Параметры макета автоматически появится параметр ЭтоРазрывСтраницы.
У этого параметра в качестве выражения указываем созданный параметр РазрывСтраницы.
3. Код вставки разрыва страницы
В Модуле объекта отчета добавляем предопределенную процедуру ПриКомпоновкеРезультата().
В процедуре пишем код:
СтандартнаяОбработка = Ложь;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.НачатьВывод();
//Начало отлавливания значения
//УстановитьРазрывСтраницы и
//установка разрыва страницы
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Пока ЭлементРезультата <> Неопределено Цикл
Если ЭлементРезультата.ЗначенияПараметров.Количество() = 1
и ЭлементРезультата.ЗначенияПараметров[0].Значение = "УстановитьРазрывСтраницы" Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
КонецЦикла;
//Конец отлавливания значения
//УстановитьРазрывСтраницы и
//установка разрыва страницы
//Начало удаления последнего разрыва. В моем примере отнимаю 1, в Вашем может другое быть число
ОбластьСПоследнимРазрывомСтраницы = ДокументРезультат.Область("R" + (ДокументРезультат.ВысотаТаблицы - 1));
ДокументРезультат.УдалитьОбласть(ОбластьСПоследнимРазрывомСтраницы);
//Конец удаления последнего разрыва
ПроцессорВывода.ЗакончитьВывод();
4. Полученный результат
Комментариев нет:
Отправить комментарий