Имя: Пароль:
1C
1С v8
СКД: группировки в отчете (программно)
0 dchumak
 
02.12.15
09:29
Добрый день.

УТ 11.1.

Возникла необходимость программно формировать отчет по дебиторской задолженности.

Пишу код
...
Дебиторка = Отчеты.ДебиторскаяЗадолженность.Создать();
Дебиторка.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = Дебиторка.КомпоновщикНастроек.Настройки;
...
Дебиторка.СкомпоноватьРезультат(Результат);

Отчет выводится, но, группировка в отчете идет по партнеру.
А мне нужно добавить свои группировки. Где их добавлять? Добавление параметров, отборы сделал, не могу найти где добавлять группировки, как убрать группировки по умолчанию?

Пробую вот таким способом

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

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

Но, в этом случае идет группировка по таблицам, т.е. сначала выводится таблица с группировкой по партнеру, а потом ниже таблица с указанными мной группировками. Скорректировать группировку сразу в таблице отчета не получается. Мне нужна группировка по Дате платежа, а потом по объекту расчетов.

Может кто сталкивался?
1 hhhh
 
02.12.15
09:37
наверно ГруппировкаД = Настройки.Структура.Вставить(

не в конец добавлять.
2 dchumak
 
02.12.15
09:42
(1) в этом случае таблицы просто меняются местами, т.е. сначала идет таблица, в которой группируются по дате, потом таблица, в которой группировка по партнеру. Получается, что правится не группировка нужной таблицы, а просто меняется порядок таблиц и группировка все равно дублирует таблицы...
3 hhhh
 
02.12.15
10:03
(2) ну тогда меняй группировку партнеры. Ты пойми чего ты хочешь. Если нужно поменять, зачем добавляешь тогда?
4 dchumak
 
02.12.15
10:10
(3) где ее поменять?
5 hhhh
 
02.12.15
10:12
ну здесь же.ГруппировкаД.ПоляГруппировки.Элементы
6 dchumak
 
02.12.15
11:52
Решено.
Сделал по-другому.
Очистил всю структуру в настройках.
После этого создал все группировки с нуля для каждой из таблиц.

...
Дебиторка = Отчеты.ДебиторскаяЗадолженность.Создать();
...
// очистить стандартные группировки
Настройки.Структура.Очистить();
...
// таблица группировки (дата платежа, объект расчетов)    
// дата платежа
ГруппировкаД = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаД.Имя = "ДатаПлатежа";
ГруппировкаД.Использование = Истина;
ПолеГруппировкаД = ГруппировкаД.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));      
ПолеГруппировкаД.Использование      = Истина;
ПолеГруппировкаД.Поле               = Новый ПолеКомпоновкиДанных("ДатаПлатежа");
ПолеГруппировкаД.ТипГруппировки     = ТипГруппировкиКомпоновкиДанных.Иерархия;
ПолеГруппировкаД.ТипДополнения      = ТипДополненияПериодаКомпоновкиДанных.БезДополнения;
АвтоПолеД = ГруппировкаД.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоПолеД.Использование = Истина;
        
// объект расчетов
ГруппировкаО = ГруппировкаД.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаО.Имя = "ДокументРасчетов";
ГруппировкаО.Использование = Истина;
ПолеГруппировкаО = ГруппировкаО.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));    
ПолеГруппировкаО.Использование      = Истина;
ПолеГруппировкаО.Поле               = Новый ПолеКомпоновкиДанных("ЗаказКлиента");
ПолеГруппировкаО.ТипГруппировки     = ТипГруппировкиКомпоновкиДанных.Элементы;
ПолеГруппировкаО.ТипДополнения      = ТипДополненияПериодаКомпоновкиДанных.БезДополнения;
АвтоПолеО = ГруппировкаО.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоПолеО.Использование = Истина;
        
// вывод в табличный документ    
Дебиторка.СкомпоноватьРезультат(Результат);
2 + 2 = 3.9999999999999999999999999999999...