![]() |
![]() |
![]() |
|
Программная перестановка группировок СКД | ☑ | ||
---|---|---|---|---|
0
jk3
02.06.10
✎
14:26
|
Настройки схемы компоновки -> Группировки
Юзер сам может переставить группировки как ему хочется с помощью dran'n'drop-а. Например, из группировок Организация - Подразделение http://s56.radikal.ru/i153/1006/bf/b26b1779397a.png сделать Подразделение - Организация http://s55.radikal.ru/i149/1006/00/67f5d8d30332.png Вопрос: Как это сделать программно? Думал использовать свойства объекта ГруппировкаКомпоновкиДанных Родитель и Структура. Но у них Использование: Только чтение. |
|||
1
jk3
02.06.10
✎
14:55
|
Уже и скриншоты есть.
Идеи? |
|||
2
IronDemon
02.06.10
✎
14:59
|
Пусть ручками и тягает ;)
|
|||
3
johnbay
02.06.10
✎
14:59
|
смотри в отладчике
КомпоновщикНастроек.Настройки.Структура и переделывай как тебе надо |
|||
4
jk3
02.06.10
✎
15:04
|
(2) Если бы можно было, то этой темы не появилось бы.
(3) Дык там и ковыряюсь: КомпоновщикНастроек.Настройки.Структура[0] говорю ж ни родителя просто так не поменяешь ни всю низлежащую структуру не скопируешь |
|||
5
cViper
02.06.10
✎
15:33
|
(4) Как варинта сделай 2 группировки и переключайся между ними. Это несложно.
|
|||
6
johnbay
02.06.10
✎
15:39
|
ЭлементСтруктуры.Значение.Строки
или ЭлементСтруктуры.Значение.Колонки Строки КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных (DataCompositionTableStructureItemCollection) Элементы коллекции: ГруппировкаТаблицыКомпоновкиДанных Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются группировки. Возможно обращение к группировке посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0). Свойства: ИдентификаторПользовательскойНастройки (UserSettingID) ПредставлениеПользовательскойНастройки (UserSettingPresentation) РежимОтображения (ViewMode) Методы: Вставить (Insert) Добавить (Add) Индекс (IndexOf) Количество (Count) Очистить (Clear) Получить (Get) Сдвинуть (Move) Удалить (Delete) Описание: Содержит элементы структуры настроек, вложенных в таблицу или в группировку таблицы. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. См. также: ТаблицаКомпоновкиДанных, свойство Колонки ТаблицаКомпоновкиДанных, свойство Строки ГруппировкаТаблицыКомпоновкиДанных, свойство Структура |
|||
7
johnbay
02.06.10
✎
15:41
|
Если их можно ранить, значит их можно убить © Хищник
|
|||
8
jk3
02.06.10
✎
16:10
|
(5) это не вариант
Нужно сделать универсально, чтобы, например, можно было сделать из такой иерархии http://s004.radikal.ru/i207/1006/1e/896a8d65b0b8.png сделать такую http://s39.radikal.ru/i083/1006/d5/ec5deb1eea67.png т.е. облегчая себе задачу так, что группировки идут по дереву "в струнку" (6) ну и.. хелп я тоже умею читать хотя бы метод Добавить раскрывал? Добавить(<Тип>) т.е. при вызове этого метода вот так КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")) добавляется девственно чистая группировка А нужно чтобы как и в drag'n'drope переносились группировки целиком, со всеми настройками, т.е. чтобы только менялся их родитель. |
|||
9
Dzenn
гуру
02.06.10
✎
16:16
|
(8) Евгений, открывай отладчик при выполнении и смотри структуру компоновщика. Там туева хуча полей, но в общем и целом, потеряв пару часиков, можно разобраться. У меня например для <выключения> (не твой случай, но рядом) полей такой код:
|
|||
10
Stim
02.06.10
✎
16:18
|
имхо, лучше сделать несколько вариантов настроек отчета и сохранить эти настройки в файл на юзерском компе. Экономя трудозатраты
|
|||
11
jk3
02.06.10
✎
16:22
|
(9) Ха, ну включить/выключить не проблема
еще могу тебе посоветовать использовать не свойство Использование, а Состояние. В отличие от Использование = Ложь, состояние группировки Отключен не влияет на вложенные в нее группировки. Т.е. такой строкой КомпоновщикНастроек.Настройки.Структура[0].Состояние = СостояниеЭлементаНастройкиКомпоновкиДанных.Отключен; мы отключаем самую верхнюю иерархию, но выводятся все остальные. В то время как если бы использовали Использование = Ложь, все низлежащие группировки не выводились бы. Ну это так, к слову. Задача в оригинале такая: произвольно включать/отключать группировки и переставлять их (при условии, что на каждом уроне только одна группировка) Т.е. половину с включением/выключением я уже решил. Теперь помогите пожалуйста решить проблему с программной перестановкой группировок местами. Визуально то всё как-то работает. |
|||
12
Andry888
02.06.10
✎
16:26
|
(11) Ну сделай функцию swap(Gr1,Gr2) , а внутри перемещай содержимое группировок (а не сами группировки)... т.е. выбранные поля переставь, поля группировки, отборы и т.п.
|
|||
13
jk3
02.06.10
✎
16:33
|
(12) угу, неужели это еще никто не делал?
Может есть проще вариант, слишком уж дофига в себя группировка включает, чтобы все эти Отборы, Порядки и поля переносить. Да, и нужно тащить за собой всю низлежащую иерархию... |
|||
14
Andry888
02.06.10
✎
16:36
|
(13) тащить иерархию... отставить! Зачем, если ты две группировки меняешь местами, структуру оставляй прежнюю + основное это не так много - группировки да выбранные поля...
|
|||
15
jk3
02.06.10
✎
16:50
|
(14) Ну да, в простейшем случае, это 1 поле группировки. Оно же в выбранных полях + ресурсы.
Это если не использовать Отборы, Сортировки, Условное оформление и Другие настройки для группировок. Надо попробовать. Всё же перестановка группировок целиком мне больше нравится. Но то ли это не реализуемо, то ли я пойму как это осуществить слишком поздно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |