Каталог решений - Вывод горизонтальных разделителей в отчете на СКД

Вывод горизонтальных разделителей в отчете на СКД

Вывод горизонтальных разделителей в отчете на СКД

В наличии

Многие сталкивались с проблемой  возможности вывода в отчете на СКД горизонтальных разделителей страниц.  В этой статье будет изложено одно из возможных решений для платформы 8.2 для управляемой формы отчета.

Категория:

Описание

Итак, имеем отчет на СКД.


В СКД создаем вычисляемое поле «Горизонтальный разделитель страниц».



На форме отчета создаем команду для вывода отчета с разделителями:


Код команды:

&НаКлиенте
Процедура КомандаСформироватьСРазделителями(Команда)
КомандаСформироватьСРазделителямиСервер();
КонецПроцедуры

&НаСервере
Процедура КомандаСформироватьСРазделителямиСервер()
ДанныеРасшифровкиВ =Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета =Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки =КомпоновщикМакета.Выполнить(Отчеты.Отчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"),Отчет.КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровкиВ);
ПроцессорКомпоновки =Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровкиВ);
ПроцессорВывода =Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Результат.Очистить();
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.НачатьВывод();
ПервыйПропущен =Ложь;
Пока Истина Цикл
ЭлементРезультата =ПроцессорКомпоновки.Следующий();
Если
ЭлементРезультата =Неопределено Тогда
Прервать;
Иначе
Для Каждого
Параметр Из ЭлементРезультата.ЗначенияПараметров Цикл
Если
Параметр.Значение="Горизонтальный разделитель страниц" Тогда
Если
ПервыйПропущен Тогда
Результат.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПервыйПропущен=Истина;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;
КонецЦикла;
//Зачистим поля с горизонтальным разделителем страниц
НайденнаяОбласть =Результат.НайтиТекст("Горизонтальный разделитель страниц");
Пока
НайденнаяОбласть<>Неопределено Цикл
НайденнаяОбласть.Текст="";
НайденнаяОбласть =Результат.НайтиТекст("Горизонтальный разделитель страниц");
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
ДанныеРасшифровки =ПоместитьВоВременноеХранилище(ДанныеРасшифровкиВ,Новый УникальныйИдентификатор);
КонецПроцедуры


В результате этой команды будет сформирован табличный документ ,  где перед каждым выводом группировки, в которой будет участвовать поле «Горизонтальный разделитель страниц» ,будет выведен горизонтальный разделитель страницы, само поле, как и его заголовок будут выведены пустыми.
Недостатком предложенного способа является образование лишней незаполненной колонки таблицы отчета.

has been added to your cart:
Оформление заказа