Вывод горизонтальных разделителей в отчете на СКДСтатья описывает один из возможных способов организации вывода горизонтальных разделителей в отчете на основе системы компоновки данных. | | Автор статьи: Последняя редакция №1 от 29.05.10 URL: http://kb.mista.ru/article.php?id=791 | |
Ключевые слова: разделитель, СКД, v8
Многие сталкивались с проблемой возможности вывода в отчете на СКД горизонтальных разделителей страниц. В этой статье будет изложено одно из возможных решений для платформы 8.2 для управляемой формы отчета.
Итак, имеем отчет на СКД.
В СКД создаем вычисляемое поле «Горизонтальный разделитель страниц».
<IMG SRC="files/">
&НаКлиенте
Процедура КомандаСформироватьСРазделителями(Команда)
КомандаСформироватьСРазделителямиСервер();
КонецПроцедуры
&НаСервере
Процедура КомандаСформироватьСРазделителямиСервер()
ДанныеРасшифровкиВ =Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета =Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки =КомпоновщикМакета.Выполнить(Отчеты.Отчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"),Отчет.КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровкиВ);
ПроцессорКомпоновки =Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровкиВ);
ПроцессорВывода =Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Результат.Очистить();
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.НачатьВывод();
ПервыйПропущен =Ложь;
Пока Истина Цикл
ЭлементРезультата =ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата =Неопределено Тогда
Прервать;
Иначе
Для Каждого Параметр Из ЭлементРезультата.ЗначенияПараметров Цикл
Если Параметр.Значение="Горизонтальный разделитель страниц" Тогда
Если ПервыйПропущен Тогда
Результат.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПервыйПропущен=Истина;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;
КонецЦикла;
//Зачистим поля с горизонтальным разделителем страниц
НайденнаяОбласть =Результат.НайтиТекст("Горизонтальный разделитель страниц");
Пока НайденнаяОбласть<>Неопределено Цикл
НайденнаяОбласть.Текст="";
НайденнаяОбласть =Результат.НайтиТекст("Горизонтальный разделитель страниц");
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
ДанныеРасшифровки =ПоместитьВоВременноеХранилище(ДанныеРасшифровкиВ,Новый УникальныйИдентификатор);
КонецПроцедуры
|