Книга знаний

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

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

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

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


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

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

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

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


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

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

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