|
Обход результата запроса ПоГруппировкамСИерархией | ☑ | ||
---|---|---|---|---|
0
andrewks
20.11.11
✎
20:17
|
есть такая процедурка:
Процедура ВыборкаПоГруппе(ТекВыб,Способ) инд=0; Пока ТекВыб.Следующий() Цикл Преф="Уровень: "+ТекВыб.Уровень(); инд=инд+1; ТипЗап=ТекВыб.ТипЗаписи(); Если (ТипЗап=ТипЗаписиЗапроса.ИтогПоГруппировке) ИЛИ (ТипЗап=ТипЗаписиЗапроса.ИтогПоИерархии) Тогда Преф=Преф+"; "+"ИТОГ ПО: "+ТекВыб.Группировка(); ИначеЕсли (ТипЗап=ТипЗаписиЗапроса.ОбщийИтог) Тогда Преф=Преф+"; "+"ОБЩИЙ ИТОГ: "; ИначеЕсли (ТипЗап=ТипЗаписиЗапроса.ДетальнаяЗапись) Тогда Преф=Преф+"; "+"Детальная запись: "; КонецЕсли; Сообщить(Преф+"; "+"№"+(инд)+": "+ТекВыб.Материал+Символы.Таб+ТекВыб.Накладная+Символы.Таб+ТекВыб.Склад+Символы.Таб+ТекВыб.Количество+Символы.Таб+ТекВыб.Сумма); ВыборкаПоГруппе(ТекВыб.Выбрать(Способ),Способ); КонецЦикла; КонецПроцедуры вызываю так: //ТипОбхода=ОбходРезультатаЗапроса.Прямой; ТипОбхода=ОбходРезультатаЗапроса.ПоГруппировкамСИерархией; //ТипОбхода=ОбходРезультатаЗапроса.ПоГруппировкам; Выборка=РезЗапр.Выбрать(ТипОбхода); Сообщить("Выборка:"); ВыборкаПоГруппе(Выборка,ТипОбхода); никак не разберу, почему при способах Прямой и ПоГруппировкам всё выводится, как надо, а при ПоГруппировкамСИерархией происходит затык после вывода уровня выборки 1 (Следующий() возвращает Ложь)? где косяк? |
|||
1
andrewks
20.11.11
✎
21:48
|
есть мысли?
|
|||
2
Лефмихалыч
20.11.11
✎
21:54
|
в запрсе что?
|
|||
3
andrewks
20.11.11
✎
21:58
|
| select
| ПрихНаклМат.Материал | ,ПрихНакл.Ссылка as Накладная | ,ПрихНакл.Склад | ,sum(ПрихНаклМат.Количество) | ,sum(ПрихНаклМат.Сумма) | from | Документ.ПриходнаяНакладная as ПрихНакл | right join | Документ.ПриходнаяНакладная.Материалы as ПрихНаклМат | on ПрихНакл.Ссылка=ПрихНаклМат.Ссылка | group by | ПрихНаклМат.Материал | ,ПрихНакл.Ссылка | order by | ПрихНаклМат.Материал | ,ПрихНакл.Ссылка | totals by | ПрихНаклМат.Материал hierarchy |
|||
4
Лефмихалыч
20.11.11
✎
22:24
|
нет идей...
|
|||
5
andrewks
20.11.11
✎
22:31
|
странно. код практически один в один как в ЖКК, там он приведён как рабочий именно для обхода ПоГруппировкамСИерархией
попробовал сейчас в файловой базе - то же самое |
|||
6
andrewks
20.11.11
✎
22:55
|
чё-то такое ощущение складывается, что в этом вопросе в ЖКК опять звиздёжь и провокация.
куча тем в инете, но пока не нашёл ни одного внятного ответа по этому вопросу |
|||
7
andrewks
20.11.11
✎
23:06
|
v8: v8: Выборка с иерархией - как обойти иерархию ПоГруппировкамСИерархией
нужно обязательно указывать название группировки. более того, до детальных записей при таком обходе спуститься не получается даже с таким указанием имени группировки, только с другими порядками обхода в документации наглая ложь |
|||
8
mikecool
20.11.11
✎
23:06
|
переделай на левое соединение запрос
|
|||
9
andrewks
20.11.11
✎
23:10
|
(8) это не влияет, тоже обходит не так, как заявлено разработчиками в документации
причём тема с бородой, ветки аж с 2008 г. идут, и до сих пор никаких сдвигов, ни реализацию, ни документацию поправить не потрудились |
|||
10
andrewks
21.11.11
✎
09:52
|
короче, если универсально, то получается так:
Процедура ВыборкаПоГруппе(ТекВыб,Способ) инд=0; Пока ТекВыб.Следующий() Цикл Преф="Уровень: "+ТекВыб.Уровень(); инд=инд+1; ТипЗап=ТекВыб.ТипЗаписи(); Если (ТипЗап=ТипЗаписиЗапроса.ИтогПоГруппировке) Тогда Преф=Преф+"; "+"ИТОГ ПО: "+ТекВыб.Группировка(); ИначеЕсли (ТипЗап=ТипЗаписиЗапроса.ИтогПоИерархии) Тогда Преф=Преф+"; "+"ИТОГ ПО ИЕРАРХИИ: "+ТекВыб.Группировка(); ИначеЕсли (ТипЗап=ТипЗаписиЗапроса.ОбщийИтог) Тогда Преф=Преф+"; "+"ОБЩИЙ ИТОГ: "; ИначеЕсли (ТипЗап=ТипЗаписиЗапроса.ДетальнаяЗапись) Тогда Преф=Преф+"; "+"Детальная запись: "; КонецЕсли; Сообщить(Преф+"; "+"№"+(инд)+": "+ТекВыб.Материал+Символы.Таб+ТекВыб.Накладная+Символы.Таб+ТекВыб.Склад+Символы.Таб+ТекВыб.Количество+Символы.Таб+ТекВыб.Сумма); Если (ТипЗап=ТипЗаписиЗапроса.ИтогПоИерархии) Тогда СледВыб=ТекВыб.Выбрать(Способ,ТекВыб.Группировка()); Иначе СледВыб=ТекВыб.Выбрать(Способ); КонецЕсли; ВыборкаПоГруппе(СледВыб,Способ); КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |