новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

СКД. Вставка разрыва страницы

  • Добавить свою публикацию
  • для этого требуется регистрация

 

Столкнувшись с достаточно типовой проблемой при разработке отчетов на системе компоновки данных(СКД), вставка разрыва страницы после в конце группировки, на форумах и в документации не нашел простого решения этой задачи. Пост-обработкой табличного документа заниматься не хотелось, хотя совсем этого избежать пока не удалось :) , поэтому было найдено не сложное решение которым я хочу с вами поделиться.

Отчет будем формировать программно переопределив событие "ПриКомпоновкеРезультата"

 

Процедура ПриКомпоновкеРезультата(ДокументРезультатДанныеРасшифровкиСтандартнаяОбработка)
СтандартнаяОбработка=ЛОжь;

Настройки КомпоновщикНастроек.ПолучитьНастройки();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.НачатьВывод();

ЭлементРезультата ПроцессорКомпоновки.Следующий();
Пока 
ЭлементРезультата  Неопределено Цикл
    Если 
ЭлементРезультата.ЗначенияПараметров.Количество()=Тогда
            Если 
ЭлементРезультата.ЗначенияПараметров[0].Значение "Разорвать" Тогда
            
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
    КонецЕсли;
    
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    
ЭлементРезультата ПроцессорКомпоновки.Следующий();
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();

 

Как вы видите здесь все шаблонно, весь фокус находится в анализе ЭлементРезультата, в нем нужно определить когда собсвенно резать. Как я это решил для себя:

В СКД был добавлен Параметр РазрывСтраницы с типом строка и заданным значением "Разорвать"

Изображение

 

 

В моей задачи мне нужно было выводить показатели списка врачей, при этом каждый врач должен был печататься на своем листе. В настройках отчета я сделал именованную группировку:

 

Изображение

 

В настройка этой группировки я убрал Авто поля и вставил свой парметр РазрывСтраницы.

 

 Изображение

 

Далее для этой группировки сделал свой макет:

 

 Изображение

Чтобы сделать группировку не видимой я в настройках, для этой группировки установил условное оформление: цвета текста, фона, линий - белые.

На закладке Другие настройки установил: Тип макета - вертикально, Выводить отбор - не выводить.

Для чего все это было сделано, напомню кусочек кода:

 

    Если ЭлементРезультата.ЗначенияПараметров.Количество()=Тогда
            Если 
ЭлементРезультата.ЗначенияПараметров[0].Значение "Разорвать" Тогда
            
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
    КонецЕсли;

 

Для группировки ГруппировкаРазрыв у нас количество в коллекции ЗначенияПараметров будет равно 1. Всегда будет 1 параметр и его значение будет всегда равно нашей строке "Разорвать"  Благодаря этому и появляется выловить его при обходе результата. В пост обработки табличного документа придется удалить 2 последние строки, иначе у нас будет печататься пустая страница.

 
0
Читайте также
1С фриланс
В наше время становиться все более популярным удаленное программирование 1С фриланс - когда программисты создают собственные компоненты и плиложения для 1С удаленно.
Монитор дисковых ресурсов
Определив объекты метаданных, занимающих большой объем можно лишние данные вычищать, внести изменения в конфигурацию или в бизнес процесс.
[СКД] Организация простейшего отчета с помощью схемы компоновки данных
Схема компоновки данных представляет большие возможности по отборам, группировкам и оформлению выходного макета
Разработки
Консоль компоновки данных
Обработка состоит их запросов, СКД и объектов
Автоматическое резервное копирование: Effector saver 3
Резервное копирование методом архивирования баз данных
Удаленное управление с помощью нашего сервиса
Возможность удаленного управления
≡ к списку статей