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

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


Программное заполнение отчета (источник - внешние данные)

Если простым запросом нельзя получить нужные данные, то придется заполнять данные для отчета СКД программно.

Пример

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

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


    // определяем значения параметров из пользовательских настроек
    Организация = Неопределено;
    ПараметрОрганизация = НастройкиСКД.ПараметрыДанных.Элементы.Найти("Организация"); 
    Если ПараметрОрганизация <> Неопределено И ПараметрОрганизация.Использование И ЗначениеЗаполнено(ПараметрОрганизация.Значение) Тогда
        Организация =  ПараметрОрганизация.Значение;
    КонецЕсли;     
 

    ПериодОтчета = Новый СтандартныйПериод();
    ПараметрПериодОтчета = НастройкиСКД.ПараметрыДанных.Элементы.Найти("ПериодОтчета"); 
    Если ПараметрПериодОтчета <> Неопределено И ПараметрПериодОтчета.Использование И ЗначениеЗаполнено(ПараметрПериодОтчета.Значение) Тогда
        ПериодОтчета =  ПараметрПериодОтчета.Значение;
    КонецЕсли;
    
    
    Запрос = Новый Запрос();
    Запрос.Текст = "...";    
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("ДатаНачала", ПериодОтчета.ДатаНАчала);
    Запрос.УстановитьПараметр("ДатаОкончания", ПериодОтчета.ДатаОкончания);     

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

    СКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

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

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

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