|
v8: Выборка запроса с формированием в дерево номенклатуры. | ☑ | ||
---|---|---|---|---|
0
Maniac
17.09.11
✎
10:33
|
Бьюсь уже и так и сяк.
Короче говоря есть рекрусивная процедура обхода результата запроса. Почему рекрусивная? - Универсально перебирает группировки. В этой процедуре формируется дерево значений по группировкам. Т.е. Группировка 1 - Строки Группировка 2 и т.д. Так вот. Проблема вылезла с иерархическими группировками. Не получается сделать так чтобы в дерево иерархия тоже вписывалась на уровне Папка (главная строка) - Потом подстроки и т.д. Иерархия может быть любой вложенности. Не могу впоймать. Выборка группировки например номенклатуры перебирает и папки и группы. А так как выборка рекурсивная то я не могу сделать в дереве подчиненность. |
|||
1
Maniac
17.09.11
✎
10:34
|
По группировкам все получается зашибись. По по иерархии все получается на одном уровне.
|
|||
2
Maniac
17.09.11
✎
10:37
|
Выгружать запрос сразу в дерево не предлагать.
Решение связано именно с тем что нужно выборкой перебрать и сформировать программно дерево. |
|||
3
poligraf
17.09.11
✎
10:38
|
На http://subsystems.ru должны быть платные обработки по этой проблеме.
|
|||
4
Alexandr Puzakov
17.09.11
✎
10:39
|
ДеревоЗначений = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
|
|||
5
Maniac
17.09.11
✎
10:40
|
(4) нет нет. выгрузка не подходит под специфику отчета.
И не подходит если выгрузить и потом обходить дерево. |
|||
6
Maniac
17.09.11
✎
10:41
|
(3) спасибо. пойду поищу там.
|
|||
7
Alexandr Puzakov
17.09.11
✎
10:42
|
(2) запрос нормальный напиши, и метод Выгрузить() выплюнет дерево нужной структуры.
|
|||
8
Maniac
17.09.11
✎
10:44
|
(7) нельзя.
У меня порядка 15 запросов и одно дерево. Все запросы не связаны между собой. Их связывает только одна группировка которая идет по вертикали. по периодам. Каждый запрос дополняет дерево. |
|||
9
Maniac
17.09.11
✎
10:45
|
Т.е. дерево короче говоря определенной структуры. в нем и формулы считаются.
|
|||
10
poligraf
17.09.11
✎
10:47
|
(8) семершный метод детектед?
|
|||
11
Maniac
17.09.11
✎
10:51
|
(10) специфичный отчет.
|
|||
12
Maniac
17.09.11
✎
10:54
|
короче весь сыр в бор что в цикле
НоваяСтрокаДерева = НоваяВетка.Добавить(); НоваяСтрокаДерева.Показатель = ЗначениеГруппировки; но так как выборка цикла выбирает иерархию то я не могу впоймать как сделать чтобы добавлять в дерево подчиненные строки. Когда происходит переход на другую группировку все легко получается т.к. в рекурсии передается параметр строки. А в рамках одной не получается. |
|||
13
Maniac
17.09.11
✎
10:55
|
Уже пытался ставить условия ЭтоГруппа и прочее.
Но фигня получается. Промежуточную может попробовать. |
|||
14
acsent
17.09.11
✎
11:03
|
Кроссс отчет делаешь? Забей на Выбрать(, "ВСЕ"). Сформируй массив значений группировки и иего обходи всегда
|
|||
15
Maniac
17.09.11
✎
11:28
|
УРА. получилось!
Перед выборкой в рекурсивной процйедуре обхода завел две переменные. Одна запоминала родителя. Другая строку дерева. И организовал условия. Таким образом при обходе иерархиеческой группировки получилось сделать формирование подчиненного дерева. |
|||
16
Maniac
17.09.11
✎
11:29
|
Если Уровень = 0 Тогда
ВремРодитель = Неопределено; КонецЕсли; Если ВремРодитель = Неопределено Тогда НоваяСтрокаДерева = НоваяВетка.Добавить(); НоваяСтрокаДерева.Показатель = ЗначениеГруппировки; ВремРодитель = ЗначениеГруппировки; ВремСтрокаДерева = НоваяСтрокаДерева; Иначе НоваяСтрокаДерева = ВремСтрокаДерева.Строки.Добавить(); НоваяСтрокаДерева.Показатель = ЗначениеГруппировки; Если ВремРодитель <> ЗначениеГруппировки.Родитель Тогда ВремСтрокаДерева = НоваяСтрокаДерева; КонецЕсли; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |