Имя: Пароль:
1C
 
Иерархическая группировка в табличном документе.
0 Reflection1
 
08.08.25
11:39
Всем привет, как уже понятно из темы мне нужно сделать группировку в табличном документе. Группировка должна быть по Контрагенту, сделкам и реализациям. Проблема в том, что сейчас строка только закрывается и открывается. То есть внутри строки нет еще 2 уровней по сделке и реализациям. Буду благодарен за подсказку.

Код:
    
Для Каждого СтрГруппировка Из ТЗГруппировка Цикл
        ТабличныйДокумент.НачатьГруппуСтрок(,Истина);  
        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|НомерПП");
        ОбластьМакета.Параметры.НомерПП = НомерПП;
        ТабличныйДокумент.Вывести(ОбластьМакета);
        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|Контрагент");
        ОбластьМакета.Параметры.Контрагент = СтрГруппировка.Контрагент;
        ТабличныйДокумент.Присоединить(ОбластьМакета);
//Здесь должен быть 2 уровень        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|ПерваяСделка");
        ОбластьМакета.Параметры.ПерваяСделка = СтрГруппировка.ПерваяСделка;
        ТабличныйДокумент.Присоединить(ОбластьМакета,2,,Истина);  
        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|ПовторнаяСделка");
        ОбластьМакета.Параметры.ПовторнаяСделка = СтрГруппировка.ПовторнаяСделка;
        ТабличныйДокумент.Присоединить(ОбластьМакета);      
        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|БезПовторныхСделок90Дней");
        ОбластьМакета.Параметры.БезПовторныхСделок90Дней = СтрГруппировка.БезПовторныхСделок90Дней;
        ТабличныйДокумент.Присоединить(ОбластьМакета);  
//Здесь должен быть 3 уровень            
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|ВыручкаГод");
        ОбластьМакета.Параметры.ВыручкаГод=СтрГруппировка.ВыручкаГод;  
        ТабличныйДокумент.Присоединить(ОбластьМакета,3);
        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|ОбщаяВыручка");
        ОбластьМакета.Параметры.ОбщаяВыручка = СтрГруппировка.ОбщаяВыручка;
        ТабличныйДокумент.Присоединить(ОбластьМакета);    
        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|ПрофитГод");
        ОбластьМакета.Параметры.ПрофитГод = СтрГруппировка.ПрофитГод;
        ТабличныйДокумент.Присоединить(ОбластьМакета);    
        
        ОбластьМакета=Макет.ПолучитьОбласть("СтрТЧ|ОбщийПрофит");
        ОбластьМакета.Параметры.ОбщийПрофит = СтрГруппировка.ОбщийПрофит;
        ТабличныйДокумент.Присоединить(ОбластьМакета);
        
        ОбластьМакета=Макет.ПолучитьОбласть("СтрТЧ|ДоляВыручкиГод");    
        ОбластьМакета.Параметры.ДоляВыручкиГод=СтрГруппировка.ДоляВыручкиГод;
        ТабличныйДокумент.Присоединить(ОбластьМакета);      
        
        ОбластьМакета=Макет.ПолучитьОбласть("СтрТЧ|ОбщаяДоляВыручки");
        ОбластьМакета.Параметры.ДоляВыручкиОбщая = СтрГруппировка.ОбщаяВыручка / СтрГруппировка.ВыручкаОбщаяЗаВесьПериод * 100;    
        ТабличныйДокумент.Присоединить(ОбластьМакета);        
        
        ОбластьМакета=Макет.ПолучитьОбласть("СтрТЧ|ДоляПрофитаГод");
        ОбластьМакета.Параметры.ДоляПрофитаГод=СтрГруппировка.ДоляПрофитаГод;
        ТабличныйДокумент.Присоединить(ОбластьМакета);
        
        ОбластьМакета = Макет.ПолучитьОбласть("СтрТЧ|ОбщаяДоляПрофита");
        ОбластьМакета.Параметры.ДоляПрофитаОбщая=СтрГруппировка.ОбщийПрофит / СтрГруппировка.ПрофитОбщийЗаВесьПериод * 100;
        ТабличныйДокумент.Присоединить(ОбластьМакета);  
        
        ТабличныйДокумент.ЗакончитьГруппуСтрок();  
        
        НомерПП = НомерПП + 1;
        
    КонецЦикла;  
        
    ТабличныйДокумент.ФиксацияСверху = 1;    

    Возврат ТабличныйДокумент;
1 maxab72
 
08.08.25
11:47
Нарисуйте примерно, что вы хотите получить?

Вы все присоединяете к одной строке. Какая группировка вам нужна, по строкам или по колонкам?
2 Fish
 
гуру
08.08.25
11:47
(0) Переделай на СКД
3 Reflection1
 
08.08.25
11:50
(1) Смотрите, в табличном документе есть строки с данными. После открытия строки появляется Контрагент, потом должен быть еще один "плюс"(на этой же строке), который уже откроет сделки, а после сделок еще один плюс, который откроет остальные данные.
4 maxab72
 
08.08.25
11:53
(3) если вы хотите много строк, то почему используете "Присоединить" а не "Вывести"? И где НачатьАвтогруппировкуСтрок?
5 Reflection1
 
08.08.25
12:03
(4) Насчёт "Присоединить" и "Вывести" понял, исправлю. Не понимаю только с "НачатьАвтогруппировкуСтрок", вы рекомендуете заменить "НачатьГруппуСтрок" на "НачатьАвтогруппировкуСтрок"?
6 maxab72
 
08.08.25
12:19
НачатьАвтогруппировкуСтрок - не требует прописывать группы внутри, они автоматически определяются по уровню. Обычно ее хватает. НачатьГруппуСтрок - это если хочется ручных извращений с группировками (то строки сгруппированы, то нет, и т.п.)
7 lucky_
 
08.08.25
13:01
(0) если уж пользуешься всякой дрянью, дак хоть СП открывай.
там в примере всё за тебя написали.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн