Книга знаний

1С:Предприятие / Объекты конфигурации / Отчеты

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

Статья описывает один из возможных способов организации вывода горизонтальных разделителей в отчете на основе системы компоновки данных.Автор статьи:
Последняя редакция №1 от 29.05.10
URL: http://kb.mista.ru/article.php?id=791

Ключевые слова: разделитель, СКД, v8


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

<IMG SRC="files/">
&НаКлиенте
Процедура КомандаСформироватьСРазделителями(Команда)
     КомандаСформироватьСРазделителямиСервер();    
КонецПроцедуры

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

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика