Имя: Пароль:
1C
1С v8
Как в СКД сделать программно 2 группировки в одной
0 dfaa
 
16.08.11
16:08
должно получиться вот так

группировка 1
         |- группировка 2
         |- группировка 3
1 dfaa
 
16.08.11
16:09
а у меня получается всё время вот так

группировка 1
         |- (группировка 2,группировка 3)
2 I_Stranger
 
16.08.11
16:13
Вроде так: в выбранных полях - Новая группа - Расположение "вертикально".
3 Luhtas
 
16.08.11
16:17
(0) Идешь в настройки, добавляешь группировку, далее выбираешь поле группировочное, потом в эту группировку добавляешь вторую и потом также поле группировочное, ну и далее уже "Детальные записи". Так не?
4 Axel2009
 
16.08.11
16:27
ну и где у тебя получается "вот так"?
5 dfaa
 
16.08.11
16:43
(4) вот так

эл = КомпоновщикНастроек.Настройки.Порядок.Элементы;
   эл.Очистить();
   эл.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
   
   ст = КомпоновщикНастроек.Настройки.Структура;
   ст.Очистить();
   Если Группировки.Строки[0].Строки.Найти(Истина, "ПоложениеВКолонке") = Неопределено Тогда
       бЕстьТаблица = Ложь;
   Иначе
       бЕстьТаблица = Истина;
       эс = ст.Добавить(Тип("ТаблицаКомпоновкиДанных"));
       эс.Использование = Истина;
       ст = эс.Строки;
       стКол = эс.Колонки;
   КонецЕсли;
   
   скдОтбор = КомпоновщикНастроек.Настройки.Отбор;
   скдОтбор.Элементы.Очистить();
   Для каждого сдз Из Группировки.Строки[0].Строки Цикл
       Если сдз.Флажок Тогда
           Если сдз.ПоложениеВКолонке Тогда
               эс = стКол.Добавить();
           Иначе
               Если бЕстьТаблица Тогда
                   эс = ст.Добавить();
               Иначе
                   эс = ст.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
               КонецЕсли;
           КонецЕсли;
           эс.Использование = Истина;
           эс.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
           эс.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
           
           Если сдз.ПутьКДанным = "Регистратор" Тогда
               пгкд = эс.Родитель.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
               пгкд.Использование = Истина;
               пгкд.Поле = Новый ПолеКомпоновкиДанных(сдз.ПутьКДанным);
           Иначе
               пгкд = эс.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
               пгкд.Использование = Истина;
               пгкд.Поле = Новый ПолеКомпоновкиДанных(сдз.ПутьКДанным);
           КонецЕсли;
       
           Если сдз.ПоложениеВКолонке Тогда
               стКол = эс.Структура;
           Иначе
               ст = эс.Структура;
           КонецЕсли;
       КонецЕсли;
6 dfaa
 
16.08.11
16:45
Для каждого сдз Из Группировки.Строки[0].Строки Цикл перебирает из дерева значений, то что там выбранно
7 Axel2009
 
16.08.11
16:54
(6) ну наверна это ст = эс.Структура; присваивать не надо, ага?
8 dfaa
 
16.08.11
17:06
(7) ты имеешь ввиду если попадает на условие Если сдз.ПутьКДанным = "Регистратор" Тогда
ст = эс.Структура; присваивать не надо
9 Axel2009
 
16.08.11
17:07
(8) я имею ввиду когда надо
группировка 1
         |- группировка 2
         |- группировка 3
то
ст = эс.Структура;
присваивать не надо.
а уж по какому условию, решай сам.
10 dfaa
 
16.08.11
17:08
(9) ок спасибо буду пробовать
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн