Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 05:03

Вывод результата СКД в таблицу значений

Автор MuI_I_Ika, 01 июл 2015, 12:42

0 Пользователей и 1 гость просматривают эту тему.

MuI_I_Ika

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

ТаблицаЗначений = Новый ТаблицаЗначений;
СКД = ОбработкаОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
СтруктураПараметров = Новый Структура();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
// ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных");
//Иначе
        ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
//КонецЕсли;

    Если ИсполняемыеНастройки = Неопределено Тогда
        ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;
ИсполняемыеНастройки.Отбор.Элементы.Очистить();
Для каждого Элемент из КонрагентыСписок.Отбор.Элементы Цикл

НовыйЭлемент = ИсполняемыеНастройки.Отбор.Элементы.Добавить(ТипЗнч(Элемент));
ЗаполнитьЗначенияСвойств(НовыйЭлемент,Элемент);

КонецЦикла;
    КонецЕсли;

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

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

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

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

    ПроцессорВывода.ОтображатьПроцентВывода = Истина;
    ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);

Теги:

Похожие темы (2)

Рейтинг@Mail.ru

Поиск