Имя: Пароль:
1C
1С v8
1C УНФ. СКД. Свернуть группировки при построении отчета
0 Beeezy
 
05.06.22
12:27
Добрый день. Существует такая проблема, не могу свернуть группировки при построении отчета в СКД. На просторах необъятного предоставляется только один вариант сворачивания через "ПоказатьУровеньГруппировокСтрок(n)" (код ниже). Но не срабатывает. 1С УНФ 1.6.24.2. Может кто сталкивался. На форме отчета правда есть родные кнопки свернуть/развернуть, но не отыскал их обработчик. Спасибо

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

КонецПроцедуры
1 Kigo_Kigo
 
06.06.22
08:34
Попробуй так
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
                КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
                Настройки = КомпоновщикНастроек.ПолучитьНастройки();
                Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
                
                ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;    
                ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
                
                ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
                ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
                ПроцессорВывода.НачатьВывод();
                Пока истина Цикл
                               ЭлементРезультата = ПроцессорКомпоновки.Следующий();
                               Если ЭлементРезультата = Неопределено Тогда
                                               прервать;
                               КонецЕсли;      
                               ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
                КонецЦикла;
                ПроцессорВывода.ЗакончитьВывод();
                ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0); //Вот это свернет все группировки до 0-вого уровня
КонецПроцедуры
2 Beeezy
 
06.06.22
10:50
(1) Попробовал, все равно не прокатило. Такое ощущение, что после построения срабатывает какая-то обработка. Залез на общую форму для отчетов, нашел вот такой код:

&НаКлиенте
Процедура ПоказатьВыбранныйУровеньГруппировок(УровеньГруппировки = Неопределено)
    
    Если УровеньГруппировки = Неопределено Тогда
        УровеньГруппировки = 999;
    КонецЕсли;
    
    Индекс = УровеньГруппировки - 1;
    Граница = ОтчетТабличныйДокумент.КоличествоУровнейГруппировокСтрок() - 1;
    
    Пока Граница > Индекс Цикл
        
        ОтчетТабличныйДокумент.ПоказатьУровеньГруппировокСтрок(Граница);
        Граница = Граница - 1;
        
    КонецЦикла;
    
    ОтчетТабличныйДокумент.ПоказатьУровеньГруппировокСтрок(Индекс);
    
    Кнопки = Элементы.КонтекстноеМенюОбластиОбщееМенюУровниГруппировок.ПодчиненныеЭлементы;
    
    Для Каждого Кнопка Из Кнопки Цикл
        Кнопка.Пометка = Ложь;
    КонецЦикла;
    
    ИмяКнопки = Элементы.КонтекстноеМенюОбластиОбщееПоказатьУровеньГруппировок.Имя + УровеньГруппировки;
    Кнопка = Кнопки.Найти(ИмяКнопки);
    
    Если Кнопка <> Неопределено Тогда
        Кнопка.Пометка = Истина;
    КонецЕсли;
    
КонецПроцедуры

И где можно посмотреть код стандартных кнопок?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший