Имя: Пароль:
1C
1С v8
СКД Добавить программно ресурс
0 Sereja
 
05.02.14
16:05
Добрый день. Есть отчет, СКД. НаборНаддых = Объект(ТаблицаЗначений)

Хочу добавить программно ресурс и измерение.

Ресурс1 и Измерение1 Добавил вручную в СКД. Ресурс2 и Измерени2 хочу вывести программно. Никак не получается. Посмотрите код:

Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Измерение1");
    Таблица.Колонки.Добавить("Измерение2");
    Таблица.Колонки.Добавить("Ресурс1");
    Таблица.Колонки.Добавить("Ресурс2");
    
    
    нс = Таблица.Добавить();
    нс.Измерение1 = "ааа";        
    нс.Измерение2 = "ббб";        
    нс.Ресурс1    = 1;
    нс.Ресурс2    = 2;
    
            
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("Перевозки",Таблица);
        
    СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
    
    НаборДанных  = СхемаКомпоновкиДанных.НаборыДанных[0];
    
    Поле1 = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    Поле1.Поле        = "Измерение2";
    Поле1.ПутьКДанным = "Измерение2";
    Поле1.Заголовок   = "Измерение2";
    
    Поле2 = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    Поле2.Поле        = "Ресурс2";
    Поле2.ПутьКДанным = "Ресурс2";
    Поле2.Заголовок   = "Ресурс2";


    ПолеРесурса             = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
    ПолеРесурса.ПутьКДанным = "Ресурс2";
    ПолеРесурса.Выражение   = "Сумма(Ресурс2)";
    
    //
    ЭлементыФормы.Результат.Очистить();
    Настройки = СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки;
    
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки      = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
      
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    ЭлементыФормы.Результат.ТолькоПросмотр = Истина;
1 szhukov
 
05.02.14
16:11
(0) Как в любом запросе, колонки должны быть типизированными в таблице значений. Укажи тип колонок.
2 Sereja
 
05.02.14
16:15
(1) Типизировал. Измерени1 и Ресурс1 выводятся и не типизированными.
Измерения2 и Ресурс2 не выводятся ни так, ни так
3 vicof
 
05.02.14
16:18
И как измерение1 выводится, если оно к этому коду вообще никакого отношения не имеет?
4 Sereja
 
05.02.14
16:23
(3)Измерение1 и Ресурс1 я вручную добавил в схему

А Измерени2 и Ресурс2 хотел добавить программно

Вопрос решен. Не хватало 2 строчек
ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить( Тип("ВыбранноеПолеКомпоновкиДанных"));
    ВыбранноеПоле.Заголовок = "Ресурс2";
    ВыбранноеПоле.Использование = Истина;
    ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Ресурс2");
5 Sereja
 
05.02.14
16:23
Спасибо
Основная теорема систематики: Новые системы плодят новые проблемы.