![]() |
|
Рекурсивный вывод группировок в СКД | ☑ | ||
---|---|---|---|---|
0
AlexShapOld
07.12.22
✎
20:38
|
Добрый день!
Есть набор данных связанных с собой : !Глава ! Подчинен ! Уровень ! --------------------------------- ! А ! ! 1 ! ! Б ! А ! 2 ! ! В ! Б ! 3 ! ! Г ! ! 1 ! ! Д ! ! 1 ! ! Е ! Д ! 2 ! ! И ! ! 1 ! и т.д. я думаю принцип понятен. Потчиненные могут быть, на разном уровне, а могут и не быть. Мне Необходимо на СКД выводить подчиненную группировку типа: А Уровень 1 + Б Уровень 2 + В Уровень 3 Г Уровень 1 Д Уровень 1 + Е Уровень 2 И Уровень 1 Я тут схематично написал, надеюсь понятно. Просто не понял, как в сообщении вводить по другому. |
|||
1
AlexShapOld
07.12.22
✎
20:53
|
Подскажите пожалуйста, как это сделать? И возможно ли это сделать?
|
|||
2
fly7
07.12.22
✎
21:49
|
для каждого уровня сделать свою ВТ, в выборке собрать в плоскую таблицу, для каждого уровня свой столбец
|
|||
3
fly7
07.12.22
✎
22:02
|
ТипСтр = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(20));
ТипЧис = Новый ОписаниеТипов("Число",,, Новый КвалификаторыЧисла(10, 2)); Таб = Новый ТаблицаЗначений; Таб.Колонки.Добавить("Глава", ТипСтр); Таб.Колонки.Добавить("Родитель", ТипСтр); Таб.Колонки.Добавить("Уровень", ТипЧис); Нов = Таб.Добавить(); Нов.Глава = "А"; Нов.Родитель = ""; Нов.Уровень = 1; Нов = Таб.Добавить(); Нов.Глава = "Б"; Нов.Родитель = "А"; Нов.Уровень = 2; Нов = Таб.Добавить(); Нов.Глава = "В"; Нов.Родитель = "Б"; Нов.Уровень = 3; Нов = Таб.Добавить(); Нов.Глава = "Г"; Нов.Родитель = ""; Нов.Уровень = 1; Нов = Таб.Добавить(); Нов.Глава = "Д"; Нов.Родитель = ""; Нов.Уровень = 1; Нов = Таб.Добавить(); Нов.Глава = "Е"; Нов.Родитель = "Д"; Нов.Уровень = 2; Нов = Таб.Добавить(); Нов.Глава = "И"; Нов.Родитель = ""; Нов.Уровень = 1; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Таб", Таб); Запрос.Текст = "ВЫБРАТЬ | Таб.Глава КАК Глава, | Таб.Родитель КАК Родитель, | Таб.Уровень КАК Уровень |ПОМЕСТИТЬ Таб |ИЗ | &Таб КАК Таб |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таб.Глава КАК Глава, | Таб.Родитель КАК Родитель, | Таб.Уровень КАК Уровень |ПОМЕСТИТЬ ВТ_1 |ИЗ | Таб КАК Таб |ГДЕ | Таб.Уровень = 1 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таб.Глава КАК Глава, | Таб.Родитель КАК Родитель, | Таб.Уровень КАК Уровень |ПОМЕСТИТЬ ВТ_2 |ИЗ | Таб КАК Таб |ГДЕ | Таб.Уровень = 2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таб.Глава КАК Глава, | Таб.Родитель КАК Родитель, | Таб.Уровень КАК Уровень |ПОМЕСТИТЬ ВТ_3 |ИЗ | Таб КАК Таб |ГДЕ | Таб.Уровень = 3 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_1.Глава КАК Глава1, | ВТ_2.Глава КАК Глава2, | ВТ_3.Глава КАК Глава3 |ИЗ | ВТ_1 КАК ВТ_1 | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_2 КАК ВТ_2 | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_3 КАК ВТ_3 | ПО ВТ_2.Глава = ВТ_3.Родитель | ПО ВТ_1.Глава = ВТ_2.Родитель"; Выборка = Запрос.Выполнить().Выгрузить(); |
|||
4
fly7
07.12.22
✎
22:03
|
в скд подсунуть выборку через Набор данных - объект
|
|||
5
toypaul
гуру
08.12.22
✎
08:58
|
||||
6
AlexShapOld
08.12.22
✎
12:13
|
Спасибо большое. Буду пробовать
|
|||
7
AlexShapOld
08.12.22
✎
16:56
|
Попробовал способом предложенным в (5).
Но что-то у меня не выводит иерархию. Первый набор данных1; ВЫБРАТЬ РегистрацияРеферала.ИнвесторРеферал КАК Инвестор, РегистрацияРеферала.Уровень КАК Уровень ИЗ РегистрСведений.РегистрацияРеферала КАК РегистрацияРеферала ГДЕ РегистрацияРеферала.ИнвесторРеферал = РегистрацияРеферала.ИнвесторРеферер При равенстве РегистрацияРеферала.ИнвесторРеферал = РегистрацияРеферала.ИнвесторРеферер означает, что он имеет 1 верхний уровень. ИнвесторРеферер это верхний в иерархии и имеет подчиненных ИнвсеторовРефералов Второй набор данных: ВЫБРАТЬ ШАА_РегистрацияРеферала.ИнвесторРеферал КАК Инвестор, ШАА_РегистрацияРеферала.ИнвесторРеферер КАК Реферер, ШАА_РегистрацияРеферала.Уровень КАК Уровень ИЗ РегистрСведений.ШАА_РегистрацияРеферала КАК ШАА_РегистрацияРеферала ГДЕ ШАА_РегистрацияРеферала.ИнвесторРеферал В(&Инвестор) На вкладке Связи наборов данных сделал: Источник Приемник Выражение источник Выражение приемник Параметр Набор 2 Набор 2 Реферер Инвестор Инвестор Набор 1 Набор 2 Инвестор Инвестор Инвестор На вкладке настройки: Отчет Детальные записи И везде авто поля. Но не выводит он иерархию как в примере на its. Я и пытался по-разному связь настроить. Не выводит, только верхний уровень. |
|||
8
AlexShapOld
08.12.22
✎
16:57
|
Выводит только верхний уровень. Или я не правильно понимаю построение связей в наборах. Может кто сможет показать мне нужное направление.
|
|||
9
Прохожий
08.12.22
✎
19:47
|
(8) См 5 ....
|
|||
10
AlexShapOld
09.12.22
✎
13:19
|
(9) Все делаю по (5). Но не выходит. Может из-за того, что у меня источник это регистр сведений? Я скачал пример с (5). Все делаю как там. Но не формирует иерархию.
|
|||
11
mistеr
09.12.22
✎
14:52
|
Нужно один набор и соединять сам с собой.
|
|||
12
AlexShapOld
09.12.22
✎
17:34
|
(11) Не прокатило. Думаю из-за того, что у меня регистр сведений.
Сделал по принципу предложенному в (3). Спасибо за помощь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |