Имя: Пароль:
1C
1С v8
СКД Группировки кодом
0 Sj
 
19.12.12
11:29
Есть рабочий код, который делает группировку внутри группировки, а как сделать, чтобы следующая группировка была на том же уровне, что и предыдущая?

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

       ПолеГруппировки = ОтчетГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));      
       ПолеГруппировки.Использование      = Истина;
       ПолеГруппировки.Поле               = Новый ПолеКомпоновкиДанных(Строка(Стр.Поле));
       ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
       ПолеГруппировки.ТипДополнения      = ТипДополненияПериодаКомпоновкиДанных.БезДополнения;

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

КонецПроцедуры
1 чувак
 
19.12.12
11:32
Это надо сделать в структуре настройки
2 Sj
 
19.12.12
11:33
нее... надо кодом.
3 чувак
 
19.12.12
11:35
(2) Можно кодом
4 Sj
 
19.12.12
11:40
Вот я и спрашиваю: как?
5 чувак
 
19.12.12
11:40
6 Sj
 
19.12.12
12:39
короче, надо вот так

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