|
Помогите разобраться с рекурсивным выводом группировок | ☑ | ||
---|---|---|---|---|
0
palpetrovich
25.07.12
✎
12:48
|
Такой вот код:
Процедура ВыводГруппировки(Выборка) ТекущаяВыборка = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ТекущаяВыборка.Следующий() Цикл ИмяОбласти = Выборка.Группировка(); ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти); ОбластьМакета.Параметры.Заполнить(ТекущаяВыборка); ТабДокумент.Вывести(ОбластьМакета); // разбор полетов: ТекЗначение = ?(ИмяОбласти = "ОБЩИЕ","",ТекущаяВыборка[ИмяОбласти]); Сообщить(ИмяОбласти+": "+ТекЗначение+" Количество= "+ТекущаяВыборка.Количество+" Сумма= "+ТекущаяВыборка.Сумма+" Себестоимость= "+ТекущаяВыборка.Себестоимость); ВыводГруппировки(ТекущаяВыборка); КонецЦикла; КонецПроцедуры Такой вот результат: ОБЩИЕ: Количество= 0,4 Сумма= 4 543,33 Себестоимость= 4 046,68 Контрагент: Рестриелт ООО АН Количество= 0,4 Сумма= 4 543,33 Себестоимость= 4 046,68 Документ: Реализация товаров и услуг ЦM000000153 от 14.06.2012 19:00:00 Количество= 0,13 Сумма= 1 476,58 Себестоимость= 1 314,2 Номенклатура: Труба 20х1,2х6000-В-08КП г 10707 Количество= 0,13 Сумма= 1 476,58 Себестоимость= 1 314,2 Партия: тн. Количество= 0,044 Сумма= 499,7655384615 Себестоимость= 450,55 Партия: тн. Количество= 0,086 Сумма= 976,8144615385 Себестоимость= 863,65 Документ: Реализация товаров и услуг ЦM000000153 от 14.06.2012 19:00:00 Количество= 0,1 Сумма= 1 135,83 Себестоимость= 1 012,45 Номенклатура: Труба 25х1,2х6000-В-08КП Г 10707 Т Количество= 0,1 Сумма= 1 135,83 Себестоимость= 1 012,45 Партия: тн. Количество= 0,027 Сумма= 306,6741 Себестоимость= 277,25 Партия: тн. Количество= 0,073 Сумма= 829,1559 Себестоимость= 735,2 Документ: Реализация товаров и услуг ЦM000000153 от 14.06.2012 19:00:00 Количество= 0,17 Сумма= 1 930,92 Себестоимость= 1 720,03 Номенклатура: Труба П 50х1х6000-В-08КП Г 10707 Т Количество= 0,17 Сумма= 1 930,92 Себестоимость= 1 720,03 Партия: тн. Количество= 0,065 Сумма= 738,2929411765 Себестоимость= 665,57 Партия: тн. Количество= 0,105 Сумма= 1 192,6270588235 Себестоимость= 1 054,46 Почему группировка "Документ" выводится постоянно перед новой номенклатурой? |
|||
1
Рэйв
25.07.12
✎
12:49
|
нафига тебе тут рекурсия когда у тебя простой одиночный цикл перебора
|
|||
2
palpetrovich
25.07.12
✎
12:50
|
упс, обнаружил ошибочку :)
ИмяОбласти = Выборка.Группировка(); |
|||
3
Йохохо
25.07.12
✎
12:52
|
Обход результата по группам
Третий, и последний способ обхода результата – по группам. Он сходен с иерархическим обходом, но с одним различием: записи с иерархическими итогами при обходе в нем рассматриваются как детальные записи, а не как узловые. |
|||
4
palpetrovich
25.07.12
✎
12:58
|
(1) заранее неизвестно число группировок которое нужно пользователю, удобно управлять
(3) не понял, почему "Третий и последний"? ...потому что документ? |
|||
5
Лефмихалыч
25.07.12
✎
13:06
|
(0) ты делаешь лишнюю работу - юзай СКД
|
|||
6
palpetrovich
25.07.12
✎
13:15
|
(5) Юзаю иногда, но сейчас надо именно так. Кроме того, мне самому интересно
(3) Для прикола убрал "Документ", теперь "постоянно" выводится "Контрагент" ... не пойму в чем прикол |
|||
7
palpetrovich
25.07.12
✎
16:16
|
в общем так, может пригодится кому, проблемка была всего-то в вызове Процедуры:
было ВыборкаОбщая = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаОбщая.Следующий() Цикл ВыводГруппировки(ВыборкаОбщая); КонецЦикла; Надо: ВыводГруппировки(Результат); Всем спасибо :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |