СКД: Как программно разобрать текущую настройку отчета? #654319


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

В этой группе 1С