Имя: Пароль:
1C
1С v8
Уровни группировок в СКД
,
0 prilforreal
 
07.02.18
10:46
Доброго всем! Часто пишу отчеты в СКД, появилась необходимость задать изанчальный уровень группировок, пишу в модуле отчета код:

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

КонецПроцедуры

Но все группировки остаются раскрытыми, помогите разобраться, в чем же дело.
1 GGDots
 
07.02.18
10:54
Может это поможет:

v8: СКД. Уровни группировок.

то что надо?
2 prilforreal
 
07.02.18
11:20
(1) Пробовал и так, все равно все группировки раскрыты
3 evorle145
 
07.02.18
11:25
(2) да, кажется была такая проблема.. выкручивался как то через форму документа... то есть  ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0) в форме документа вызывал при каком то событии.. Но могу дико ошибаться..
4 Rokford
 
07.02.18
11:35
у меня в ПриКомпоновкеРезультата работает

    //ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2); //Уровень 3
    //ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1); //Уровень 2
    ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);   //Уровень 1
5 prilforreal
 
07.02.18
11:39
(4) А вы где либо эту процедуру указываете?
6 Rokford
 
07.02.18
11:41
Где ж может быть ПриКомпоновкеРезультата? В модуле объекта, конечно.
7 Rokford
 
07.02.18
11:44
Код один в один как в (0). Только в разных отчетах параметр (уровень) разный. Всегда работало. (необходимость была только в БП 3.0 пока)
8 Mankubus
 
07.02.18
11:47
(0) а эта процедура выполняется вообще? Может вы забыли привязать её к событию?
9 prilforreal
 
07.02.18
11:47
(6) Вот же, а у меня процедура в модуле формы)
10 prilforreal
 
07.02.18
11:54
(7) Прописал процедуру в модуле объекта и все заработало, теперь другой вопрос, при раскрытии уровня вснутренние уровни оказываются раскрыты, как с этим бороться?
11 Rokford
 
07.02.18
11:55
(9) Бывает :)
(10) Задай в параметре нужный уровень, до которого нужно раскрывать. У тебя сейчас 0 стоит, т.е. все раскрыто (по-моему)
12 Rokford
 
07.02.18
12:02
(9)Пользуйся кнопкой "Процедуры и функции". Не ошибешься где и что.
https://hkar.ru/SQlg
(10) синтакс-помощник рулит :)
13 prilforreal
 
07.02.18
12:17
(11) 0 как раз таки все закрыто, точнее закрыто до верхнего уровня, его раскрываю, и внутри все уровни открыты.
(12) Спасибо, реально полезная вещь!)
14 Rokford
 
07.02.18
12:49
(13) Тупой вариант
...
ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1);
ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);



Лучший вариант (еще раз намекаю на СП)

    У = ДокументРезультат.КоличествоУровнейГруппировокСтрок() - 1;
    
    Пока У <> 0 Цикл
        ДокументРезультат.ПоказатьУровеньГруппировокСтрок(У);
        У = У - 1;
    КонецЦикла;
    ДокументРезультат.ПоказатьУровеньГруппировокСтрок(У);

Будут вложенные тоже свернуты.
15 prilforreal
 
07.02.18
14:51
(14) Идеально! Спасибо, Мастер!)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан