|
Сформировать отдельные таблицы по группировкам | ☑ | ||
---|---|---|---|---|
0
Cumpuciy
07.08.14
✎
14:16
|
Если результат запроса выгрузить в тз:
Группировка1 ----Группировка2 -------строка1 -------строка2 Группировка1 ----Группировка2 -------строка3 -------строка4 и тд Никак не могу элегантно разбить результат на таблицы виды таблица1 : строка1 строка2 таблица2 строка3 строка4 и тд В какую сторону копать? Спасибо. |
|||
1
ДенисЧ
07.08.14
✎
14:17
|
Выгружай в дерево.
А потом обходи его и нижние ветки выгружай в таблицы |
|||
2
Cumpuciy
07.08.14
✎
14:40
|
(1) а что делать с колонками?
|
|||
3
ДенисЧ
07.08.14
✎
14:42
|
(2) А что тебе надо с ними сделать?
|
|||
4
Cumpuciy
07.08.14
✎
14:42
|
(3) Если я выгружу результат так
|
|||
5
Cumpuciy
07.08.14
✎
14:44
|
(3) Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
то я получаю на выходе дерево со строками Группировка1 ----Группировка2 Группировка1 ----Группировка2 без строк. |
|||
6
ДенисЧ
07.08.14
✎
14:45
|
(5) Я не знаю, что ты там и как выгружаешь, но у меня дерево выгружается прекрасно, со всей нужной информацией.
|
|||
7
NikVars
07.08.14
✎
14:46
|
(0) Ты криво объяснил.
Таблица1 = Группировка1 или Таблица1 = Группировка2? |
|||
8
Cumpuciy
07.08.14
✎
14:52
|
(6) (7)
текст построителя ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг.Товары Итоги По Склад, СтавкаНдс в настройках построителя измерения строки - Склад, СтавкаНдс на выходе мне надо разбить результат на таблицы, в каждой таблице данные по группировке Склад, СтавкаНДС. т.е. если в результате 3 склада и 1 ставка, то 3 таблицы, если 3 склада и 2 ставки, то 6 таблиц. |
|||
9
NikVars
07.08.14
✎
14:58
|
(8) Сделай запрос вывода без итоговых группировок.
Выгружай результат запроса в одну таблицу. Сворачивай там так, как ты хочешь. Далее воюй циклами. |
|||
10
an-korot
07.08.14
✎
15:05
|
я фигею %))) ты сам себе такую задачу придумал?
|
|||
11
Cumpuciy
07.08.14
✎
15:14
|
(9) так уже пытался сделать
текст запроса построителя и поля группировок каждый раз могут быть разными, колонки тоже. все зависит от выбранного типа документа. с циклами я уже взорвал весь мозг, и подумал что может быть есть более элегантный и быстрый способ. |
|||
12
Cumpuciy
07.08.14
✎
16:04
|
Кажется получилось.
Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Количество = СписокРазделителей.Количество(); НижнийУровеньГруппировки = СписокРазделителей[Количество-1]; //обойдем дерево ОбойтиУровеньДерева(Дерево.Строки,НижнийУровеньГруппировки); СписокТаблиц.Добавить(УИ); ну и собстна Процедура ОбойтиУровеньДерева(Строки,НижнийУровеньГруппировки) Для каждого Строка из Строки Цикл ОбработкаПрерыванияПользователя(); Если Строка.Родитель = Неопределено тогда Если УИ <> Неопределено тогда СписокТаблиц.Добавить(УИ); КонецЕсли; //тогда верхний уровень, пропускаем ОбойтиУровеньДерева(Строка.Строки,НижнийУровеньГруппировки); ИначеЕсли Строка.Родитель[НижнийУровеньГруппировки.Значение] = null тогда //тогда ешё один уровень, пропускаем //Если это нижний уровень группировки то создаем тз Если Строка[НижнийУровеньГруппировки.Значение] <> null тогда УИ = Новый УникальныйИдентификатор; СоздатьВременнуюТЗ(УИ); КонецЕсли; ОбойтиУровеньДерева(Строка.Строки,НижнийУровеньГруппировки); Иначе ДобавитьВоВременнуюТЗ(УИ,Строка); ОбойтиУровеньДерева(Строка.Строки,НижнийУровеньГруппировки); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
13
Cumpuciy
07.08.14
✎
16:05
|
(1) спасибо за наводку
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |