Имя: Пароль:
1C
1С v8
Создать программно СКД
0 MadFatCat
 
23.05.13
19:49
Всем привет.
ЗиК 8.2
Нужно программно создать отчет в СКД.
Текст моего запроса

ЫБРАТЬ РАЗРЕШЕННЫЕ
   РаботникиОрганизацийСрезПоследних.Сотрудник,
   РаботникиОрганизацийСрезПоследних.Организация,
   РаботникиОрганизацийСрезПоследних.Должность,
   РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок,
   РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
   СотрудникиОрганизаций.ВидЗанятости
ИЗ
   РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
       ПО РаботникиОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка

В верхнее поле будет выводиться сам отчет.
В левом нижнем происходит отбор(он работает).
В правом нижнем должно происходить выбор(в табличном поле) по группировкам, самое верхнее поле 1й уровень, второе поле 2й уровень и тд.
Почему именно так надо, потому что так сказали.

Проблема в том что не могу сформировать это дело программно. Первый раз делаю.

Вот корявый мой код, который работает хреново.

Процедура Кнопка2Нажатие(Элемент)  
   Группировка = ОтчетОбъект.КомпоновщикНастроек.Настройки.Порядок.Элементы;
   Группировка.Очистить();
   
   ВыбранныеПоля = ОтчетОбъект.КомпоновщикНастроек.Настройки.Выбор.Элементы;
   ВыбранныеПоля.Очистить();

   СформироватьГруппировку();
   СформироватьПоля();
КонецПроцедуры

Процедура СформироватьГруппировку()                    
   Сообщить("Группировка");    
   Для е = 0 По тпГруппировки.Количество() - 1 Цикл
       стр = тпГруппировки[е];
       Если стр.Выбор Тогда
           Сообщить(стр.Группировка);
           ТиповыеОтчеты.ДобавитьГруппировку(ОтчетОбъект.КомпоновщикНастроек, стр.Группировка);    
       КонецЕсли;  
   КонецЦикла;
 
КонецПроцедуры

Процедура СформироватьПоля()                    
   
   Сообщить("Поля");
   Для е = 0 По тпГруппировки.Количество() - 1 Цикл
       стр = тпГруппировки[е];
       Если стр.Выбор Тогда
           ТиповыеОтчеты.ДобавитьВыбранноеПоле(ОтчетОбъект.КомпоновщикНастроек, стр.Группировка);
           Сообщить(стр.Группировка);
       КонецЕсли;      
   КонецЦикла;
   Для е = 0 По тпГруппировки.Количество() - 1 Цикл
       стр = тпГруппировки[е];
       Если не стр.Выбор Тогда
           ТиповыеОтчеты.ДобавитьВыбранноеПоле(ОтчетОбъект.КомпоновщикНастроек, стр.Группировка);
           Сообщить(стр.Группировка);
       КонецЕсли;      
   КонецЦикла;
   
КонецПроцедуры

Процедура ПриОткрытии()
   стр = тпГруппировки.Добавить();
   стр.Группировка = "Организация";
   стр = тпГруппировки.Добавить();
   стр.Группировка = "ПодразделениеОрганизации";
   стр = тпГруппировки.Добавить();
   стр.Группировка = "Сотрудник";
   стр = тпГруппировки.Добавить();
   стр.Группировка = "Должность";
   стр = тпГруппировки.Добавить();
КонецПроцедуры


По идее с начало я заполняю группировку, затем детальные записи, в общем это все дело не работает.
Как это сделать?
1 Vesa
 
24.05.13
08:33
2 zippygrill
 
24.05.13
08:47
ну зачем все это извращение?
3 1Сергей
 
24.05.13
08:48
СКД гамно
4 scanduta
 
24.05.13
08:50
А в чем проблема создать маке с типом "Схема компоновки данных" и программно вызывать его передавая параметры
5 scanduta
 
24.05.13
08:51
ТО есть сначала в конфигураторе создаете макет, в режиме конфигуратора настраиваете СКД. Потом вызываете программно макет исполняеете его. Получаеете результат
6 wowik
 
24.05.13
09:02
(3) согласен