Приветствую Вас ГостьВоскресенье, 05.05.2024, 13:10

Каталог статей


Вывести отчет из разных не связанных наборов данных

Потребовалось вывести в отчете 2 несвязанных набора данных. 

Создал обычный отчет СКД. Добавил в него параметр "ВыводитьСводныеДанные" типа Булево. Если Параметр = "Да", то отменяем стандартную обработку отчета, выводим отчет по основной схеме компоновки, затем формируем отчет по второму макету СКД и выводим его в результирующий табличный документ.

Недостаток: не смог победить расшифровку для второго отчета, пришлось её отключить.

Код модуля объекта отчета:


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

Процедура ВывестиОсновнуюСхему(Настройки, ДанныеРасшифровки, ДокументРезультат)
    
    // Сформируем макет компоновки данных.     
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    // Выполним компоновку данных.
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
    
    // Выведем результат компоновки в табличный документ.
    ДокументРезультат.Очистить();
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
КонецПроцедуры

Процедура ВывестиСхемуСводныхДанных(Настройки, ДокументРезультат)
    ТЗ = ПолучитьТаблицуДанныхОтчета(Настройки);    // выводим данные отчета по основному макету в таблицу значений
    ТаблицаЗамечаний = ЗаполнитьТаблицуЗамечаний(ТЗ); // по данным основного отчета формируем таблицу для передачи в дополнительный макет 
        
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("ТаблицаДанных",ТаблицаЗамечаний);    

    //Формируем отчет по дополнительному макету
    СКД = ПолучитьМакет("СводныеДанныеСКД");         
        
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, СКД.НастройкиПоУмолчанию); // У дополнительного макета свои настройки. Так как заполняем его внешними данными, которые рассчитаны на основании основного макета, в котором настройки пользователя уже учтены, то устанавливаем настройки СКД по умолчанию.
        
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
КонецПроцедуры

Функция ПолучитьТаблицуДанныхОтчета(Настройки)
    //Настройки = КомпоновщикНастроек.ПолучитьНастройки(); 
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    
    ТЗ = Новый ТаблицаЗначений();          
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    Возврат ТЗ;
КонецФункции

 

 

Категория: СКД | Добавил: leshic (14.01.2022)
Просмотров: 278 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0