Имя: Пароль:
1C
1С v8
Как в программно обратиться к группировкам динамического списка?
0 dave2000
 
29.12.16
11:05
1С8.3.
В динамическом списке есть произвольный запрос, в его настройках в конфигураторе были добавлены группировки. Как программно обратиться к этим группировкам? Нежно включать/отключать их использование.
1 dave2000
 
29.12.16
11:06
(0) > нУжно включать/отключать их использование.
2 Allexe
 
29.12.16
11:13
3 singlych
 
29.12.16
11:14
через КомпоновщикНастроек списка
4 dave2000
 
29.12.16
14:22
(2) Нет, в настройках произвольного запроса есть закладка "Группировка", там добавлны группировка по полям. Вот мне эти группировки нужно "щупать" из кода программно.

(3) Можно подробнее, где именно? Я его там нигде не нахожу.

По идее группировки должно быть тут:
Список.КомпоновщикНастроек.Настройки.Структура
Список.КомпоновщикНастроек.ФиксированныеНастройки.Структура

Но в этих структурах я не нахожу своих группировок.
5 dave2000
 
29.12.16
14:30
Если не сложно, проверьте у себя: возьмите любой динамический список с произвольным запросом, в настройках на закладке "Группировки" добавьте 2-3 поля и попробуйте в отладчике добраться к ним через КомпоновщикНастроек списка. Я перелазил всё, у меня не получилось там ничего найти :(
6 Cool_Profi
 
29.12.16
14:32
(4) А ПользовательскиеНастройки там есть?
7 dave2000
 
29.12.16
14:43
(6) Есть, но там тоже этого нет. И вроде как не должно быть.
8 Allexe
 
29.12.16
15:17
Попробуй программно в серверной процедуре добавлять удалять группировки

        СтрДоб = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    СтрДоб.Поле = Новый ПолеКомпоновкиДанных("Склад");
    СтрДоб.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
9 singlych
 
29.12.16
15:53
(4) Должны быть в Список.КомпоновщикНастроек.Настройки.Структура
10 dave2000
 
29.12.16
16:40
(9) В этой структуре есть только один элемент типа ГруппировкаКомпоновкиДанных, без имени, его свойство ПоляГруппировки пустое, не содержит элементов. И это не соответствует тому, что задано через конфигуратор - там в группировках добавлено два поля.


Я не знаю, правильно ли все сделал, но при создании на сервере очищаю структуру и добавляю поля группировки вручную, вроде как работает:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

..........


Сей участок кода подсмотрел в отчетах на СКД, там программно добавляются группировки. Возможно, для динамических списков нужно по-другому, буду признателен если подскажите правильное решение.