Имя: Пароль:
1C
1С v8
Как добавить программно подчиненую/вложенную группировку в СКД
0 iva77ru
 
17.06.15
18:15
Доброго дня!

Нужно добавить програмнно в СКД подчиненную/вложенную группировку. Вот так в табличном документе выводиться в одну строку с двумя колонками:

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

А, как сделать, что была группировка по ФизЛицу документов?
1 Господин ПЖ
 
17.06.15
18:17
вложить в .Структура
2 iva77ru
 
17.06.15
18:29
Пример кода, пожалуйста!
3 Адский плющ
 
17.06.15
18:34
И ключи от квартиры с исходниками
4 bootini
 
17.06.15
18:40
ГруппировкаКомпоновкиДанных (DataCompositionGroup)
Структура (Structure)
Использование:

Только чтение.
Описание:

Тип: КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных. Содержит коллекцию элементов структуры, вложенных в группировку.

Доступность:

Сервер, толстый клиент, внешнее соединение.  

как-то так:

Поле2 = Группировка.Структура.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    Поле2.Использование = Истина;
    Поле2.Поле = Новый ПолеКомпоновкиДанных("Документ");
5 iva77ru
 
18.06.15
09:55
{Форма.ФормаОтчета.Форма(68)}: Ошибка при вызове метода контекста (Добавить)
    Поле2 = Группировка.Структура.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
по причине:
Коллекция не может содержать элементы данного типа
6 bootini
 
18.06.15
09:58
Тогда так:
Поле2 = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
7 iva77ru
 
18.06.15
10:52
Спасибо! Вот так работает:

    Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Группировка.Использование = Истина;
    
    Поле1 = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    Поле1.Использование = Истина;
    Поле1.Поле = Новый ПолеКомпоновкиДанных("ФизЛицо");
    
    Группировка2 = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Поле2 = Группировка2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    Поле2.Использование = Истина;
    Поле2.Поле = Новый ПолеКомпоновкиДанных("Документ");
    
    ВыбранныеПоля = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    ВыбранныеПоля.Использование = Истина;
    
    ВыбранныеПоля = Группировка2.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    ВыбранныеПоля.Использование = Истина;
8 iva77ru
 
18.06.15
10:59
СКД = ПолучитьСхемуСКД();
    Настройки = УстановитьНастройки(СКД);
    
    //в этот объект помещается информация о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,Настройки,ДанныеРасшифровки); //
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
    
    //очистка поля табличного документа - Результат
    Таб = новый ТабличныйДокумент;
    
    //Вывод результатов компоновки в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Таб);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    Таб.Показать();

В результирующей таблице не отрабатывает расшифровка. Щелк по полю "Документ" - документ открылся. Пожалуйста, подскажите, как зацепить расшифровку?
9 bootini
 
18.06.15
11:09
(8) ОбработкаРасшифровки() - событие Поля Табличного Документа
10 iva77ru
 
18.06.15
11:17
Это если таблица выводиться в табличный документ, лежащий на форме. А, если  табличный документ выводиться независимо от формы:  

Таб = новый ТабличныйДокумент;
Таб.Показать();

То где ловить процедуру ОбработкаРасшифровки()?
11 bootini
 
18.06.15
11:24
(10) Ни где
12 iva77ru
 
18.06.15
11:36
То, есть отработка расшифровки невозможна при выводе табличного документа независимо от формы через СКД и надо вернуться к старому проверенному способу сбору табличного документа по секциям и вывод (Назад к 7.7)?
13 bootini
 
18.06.15
11:43
Получается так, только я не представляю как ты это будешь делать :)

ЗЫ. А формы для отчетов вам запрещают делать?
14 iva77ru
 
18.06.15
11:55
Спасибо Вам за помощь! Задача состоит в том, чтобы не плодить общие табличные макеты или табличные макеты в любых др. доступных объектах конфигурации. А скажем в общем модуле сформировать и вывести табличный документ. Хотелось уйти от сбора табличного макета по-старинке и создание табличного документа поручить СКД. Но из выше сказанного в табличном документе не будет отрабатывать расшифровка.