![]() |
|
СКД: Как программно разобрать текущую настройку отчета? | ☑ | ||
---|---|---|---|---|
0
ignorant
27.02.13
✎
20:09
|
Хочу ПРИ а м.б. правильнее ПЕРЕД компоновкой результата программно анализировать текущие настройки отчета, как-то: список группировок по строкам и колонкам,выводится ли при текущих настройках детальные записи...
Камрады, подскажите куда рыть? |
|||
1
Maxus43
27.02.13
✎
20:12
|
КомпоновщикНастроекКомпоновкиДанных (DataCompositionSettingsComposer)
Настройки (Settings) Использование: Только чтение. Описание: Тип: НастройкиКомпоновкиДанных. Содержит настройки компоновки данных. не то? |
|||
2
ignorant
27.02.13
✎
20:16
|
не то :(
КомпоновщикНастроек.Настройки.ДоступныеПоляГруппировок показывает ВСЕ Доступные Поля Группировок, а меня интересуют только выбранные пользователем. |
|||
3
Maxus43
27.02.13
✎
20:17
|
а кто сказал про Досутпные?
НастройкиКомпоновкиДанных (DataCompositionSettings) Структура (Structure) Использование: Только чтение. Описание: Тип: КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных. Коллекция элементов структуры. |
|||
4
GANR
27.02.13
✎
20:24
|
(0) см. сообщение №5 в ветке v8: СКД: изсчезают ВыранныеПоля
|
|||
5
ignorant
27.02.13
✎
20:32
|
(3) м.б. не туда смотрю :(
ЭтотОБъект.КомпоновщикНастроек.Настройки.Структура тип КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных содержит только ИдентификаторПользовательскойНастройки = "" ПредставлениеПользовательскойНастройки = "" РежимОтображения = Быстрый доступ (4) спасибо, для общего образования будет полезно. НО мне нужно _програмно_ проаназировать структуру отчета, а не визуально посмотреть, где что лежит |
|||
6
Maxus43
27.02.13
✎
20:34
|
(5) у меня написано в СП:
КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных (DataCompositionSettingStructureItemCollection) Элементы коллекции: ГруппировкаКомпоновкиДанных, ТаблицаКомпоновкиДанных, ДиаграммаКомпоновкиДанных, НастройкиВложенногоОбъектаКомпоновкиДанных Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются группировки. Возможно обращение к группировке посредством оператора [. |
|||
7
GANR
27.02.13
✎
20:42
|
(5) программно...
КомпоновщикНастрое.Настройки.Структура - вот здесь она и лежит. Она представляет собой коллекцию, некое дерево, возможен обход циклом в сочетании с рекурсией Для Каждого ЭлементСтруктуры Из КомпоновщикНастрое.Настройки.Структура Цикл ... КонецЦикла Подробнее - отладчик |
|||
8
ignorant
27.02.13
✎
20:48
|
(7) я же и показываю что говорит отладчик.
КомпоновщикНастрое.Настройки МОЖЕТ содержать ГруппировкаКомпоновкиДанных, ТаблицаКомпоновкиДанных и все, что процитировал Maxus43 в (6), но у меня он реально ПУСТ. м.б., проблема в том, что в отладчике я смотрю в событии ПриКомпоновкеРезультата а нужно смотреть в другом месте? |
|||
9
ignorant
27.02.13
✎
20:49
|
(7) и в D:/Настройки.xml
группировок не видно, толлько доступные поля |
|||
10
ignorant
27.02.13
✎
20:56
|
(7) (9) НЕ читать! я плохо смотрел!
Есть в D:/Настройки.xml и таблица отчета item xsi:type="StructureItemTable" и правильные поля группировок item xsi:type="GroupItemField" |
|||
11
GANR
27.02.13
✎
21:06
|
(8) КомпоновщикНастроек.Настройки.Структура[0] содержит что-то ? Просто КомпоновщикНастроек.Настройки.Структура в отладчике ничего не покажет, либо КомпоновщикНастроек.Настройки.Структура[0], либо "показать в отдельном окне".
|
|||
12
GANR
27.02.13
✎
21:07
|
>проблема в том, что в отладчике я смотрю в событии
ПриКомпоновкеРезультата тоже возможно |
|||
13
GANR
27.02.13
✎
21:11
|
Если (11) не помогает, то, скорее всего (12)
|
|||
14
ignorant
27.02.13
✎
21:13
|
(12) вряд ли. D:/Настройки.xml я вывожу в этом же месте,
таблица и группировки там ЕСТЬ. (11) уже ТЕПЛЕЕ КомпоновщикНастроек.Настройки.Структура[0] содержит КомпоновщикНастроек.Настройки.Структура[0] ТаблицаКомпоновкиДанных |
|||
15
GANR
27.02.13
✎
21:15
|
(14) Воооот! А теперь можно обойти структуру рекурсией - там, по-сути, дерево.
|
|||
16
GANR
27.02.13
✎
21:19
|
Далее нужно что-то вроде
Процедура Команда1() ОбойтиСтруктуру(КомпоновщикНастроек.Настройки.Структура) КонецПроцедуры Процедура ОбойтиСтруктуру(Коллекция) Для Каждого ЭлементСтруктуры Из Коллекция Цикл ОбойтиСтруктуру(Коллекция.Элементы) КонецЦикла; КонецПроцедуры |
|||
17
GANR
27.02.13
✎
21:22
|
ОбойтиСтруктуру(Коллекция.Структура) для Группировки для Таблицы - Колонки и Строки.
|
|||
18
ignorant
27.02.13
✎
21:24
|
(15) Спасибо, круто! что-то начинаю понимать в этом зверьке
КомпоновщикНастроек.Настройки.Структура[0].Строки[0] содержит верхний уровень групировки строк КомпоновщикНастроек.Настройки.Структура[0].Строки[0].Структура[0] второй сверху уровень КомпоновщикНастроек.Настройки.Структура[0].Строки[0].Структура[0].Структура[0] третий уровень и т.д. рекурсия |
|||
19
ignorant
27.02.13
✎
21:37
|
в ОБЩЕМ случае много нужно предусмотреть,
но для моего ЧАСТНОГО - достаточно. Спасибо! Остался последний вопрос: как оценить глубину рекурсии? Как понять: это _самый_ нижний уровень группировки и ЧТО он содежит: детальные данные или группу ТОЛЬКО? В продолжение темы, раз уж ты, GANR, хорошо знаешь СКД ;) То, что порешали - это часть задачи В принципе, нужно на основе анализа пользовательских настроек отчета подменить СКД и вывести _немного_ другой отчет. Думаешь, это решаемо за конечное время? Что ещё в свойствах отчетов / СКД посмотреть на эту тему? |
|||
20
GANR
28.02.13
✎
00:51
|
> Как оценить глубину рекурсии?
Не вижу необходимости. Если коллекция КомпоновщикНастроек.Структура[0].Структура[0]...Структура[0] не содержит элементов, то цикл не сделает ни одного повтора. Как следствие, рекурсия не пойдет вглубь и, в конце-концов, вернется. > Что ещё в свойствах отчетов / СКД посмотреть на эту тему? В 1С:Предприятие в настройках варианта отчета видно, что пользователь может настраивать. В отладчике это отображается одноименно. Вот например: 1. Отборы - также возможна рекурсия, поскольку СКД поддерживает группы условий. 2. Условное оформление, пользовательские поля - также могут содержать п.1 => может понадобится рекурсия. 3. Поля могут быть свернуты в группы, опять рекурсия. Слова "рекурсия" бояться не стоит. Не припоминаю, чтобы с СКД на моем веку был связан рекурсивный алгоритм, требующий от меня сильного навыка работы со спуском/возвратом. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |