|
Обход с итогами по иерархии | ☑ | ||
---|---|---|---|---|
0
Z_Z
23.05.12
✎
09:43
|
Обычный запрос по остаткам с ценами. Запрос в консоле запросов отлично работает.Но результаты запроса не получается вывести в отчет с иерархией.
Уровень1 Уровень2 уровень3 и тд. Если пишу ВыборкаПервогоУровня = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); тогда выборки второго уровня нету((( а если пишу ВыборкаПервогоУровня = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); То все группу становятся 1 уровня , а элементы 2 уровня(( вот код : Запрос = новый Запрос; ТекстЗапроса =" | ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто1 КАК Номенклатура, | ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток, | ХозрасчетныйОстатки.Организация КАК Организация, | ВложенныйЗапрос.Цена |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен, | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | ГДЕ | ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен) КАК ВложенныйЗапрос | ПО ХозрасчетныйОстатки.Субконто1 = ВложенныйЗапрос.Номенклатура |ГДЕ | ХозрасчетныйОстатки.Счет = &Счет | И ХозрасчетныйОстатки.Организация = &Организация | И ХозрасчетныйОстатки.КоличествоОстаток > 0 | И ХозрасчетныйОстатки.Субконто1 В ИЕРАРХИИ(&Ссылка) |УПОРЯДОЧИТЬ ПО | ХозрасчетныйОстатки.Субконто1.Наименование |ИТОГИ | СУММА(КоличествоОстаток) |ПО | Субконто1 ИЕРАРХИЯ |"; Запрос.Текст = ТекстЗапроса; ВыбТМЦ = Справочники.Номенклатура.НайтиПоКоду("00000000001"); Запрос.Параметры.Вставить("ССылка", ВыбТМЦ); Запрос.Параметры.Вставить("Организация", Справочники.Организации.НайтиПоКоду("000000001")); Запрос.Параметры.Вставить("Счет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладе); Запрос.Параметры.Вставить("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000005")); Результат = Запрос.Выполнить(); СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией; ВыборкаПервогоУровня = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаПервогоУровня.Следующий() Цикл // внутри каждого уровня иерархии заказы упорядочены: "Создан", "В работу", "Ведутся работы", "Готов к отгрузке" (именно в таком порядке, порядок установлен в перечислении) Сообщить(""+ ВыборкаПервогоУровня.Номенклатура+" "+ВыборкаПервогоУровня.Цена); ВыборкаВторогоУровня = ВыборкаПервогоУровня.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаВторогоУровня.Следующий() Цикл // внутри каждого уровня иерархии заказы упорядочены: "Создан", "В работу", "Ведутся работы", "Готов к отгрузке" (именно в таком порядке, порядок установлен в перечислении) ВыборкаТретьегоУровня = ВыборкаВторогоУровня.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // параметр можно не передавать, по умолчанию способ выборки прямой Сообщить(" " + ВыборкаВторогоУровня.Номенклатура+" "+ВыборкаВторогоУровня.Цена); Пока ВыборкаТретьегоУровня.Следующий() Цикл // внутри каждого уровня иерархии заказы упорядочены: "Создан", "В работу", "Ведутся работы", "Готов к отгрузке" (именно в таком порядке, порядок установлен в перечислении) Сообщить(" " + ВыборкаТретьегоУровня.Номенклатура+" "+ВыборкаТретьегоУровня.Цена); КонецЦикла; КонецЦикла; КонецЦикла; |
|||
1
butterbean
23.05.12
✎
09:45
|
признавайся, у тебя отчет сколько часов формируется??
|
|||
2
Z_Z
23.05.12
✎
09:47
|
отчет или запрос? Запрос немного думает, но терпимо.
|
|||
3
Z_Z
23.05.12
✎
09:54
|
как правильно обходить этот запрос? кто подскажет?
|
|||
4
butterbean
23.05.12
✎
09:55
|
чем тебя не устроил обход ПоГруппировкам??
|
|||
5
Z_Z
23.05.12
✎
09:58
|
результат получается такой: все группы при обходе находятся в одном уровне.
Уровень1 уровень2 уровень3 элементы а нужен такой Уровень1 уровень2 уроыень3 |
|||
6
0_Serg_0
23.05.12
✎
10:01
|
(5)
я обычно пробелы добавляю слева по количеству уровней |
|||
7
Z_Z
23.05.12
✎
10:02
|
это понятно. А как сделать группировку строк по уровню, если все уровни получаются на 1 уровне?
|
|||
8
butterbean
23.05.12
✎
10:04
|
(7) а если на всех уровнях вывода ставить обход ПоГруппировкамСИерархией, тогда тоже криво ваыводится??
|
|||
9
0_Serg_0
23.05.12
✎
10:05
|
СпЗнач(7) примерно так
Уровень=СпУровень.Получить(Выборка.Номенклатура.Уровень()); ОбластьМакета.Параметры.Номенклатура = Уровень.Значение+Выборка.Номенклатура; |
|||
10
Z_Z
23.05.12
✎
10:10
|
кому интересно получилось по этому примеру.
http://help1c.com/faq8/view/209.html а где я тупил так и не понял |
|||
11
butterbean
23.05.12
✎
10:14
|
(10) там вроде нет "группировки строк по уровню", которая тебе была нужна...
на (8) можешь ответить?? |
|||
12
Z_Z
23.05.12
✎
10:29
|
там есть автогруппировкастрок и вывод с уровнем.
Вых.Вывести(ИсходнаяСтрока, Выборка.Уровень()); (8)Пробывал так. Но так вообще есть только 0 уровень - самый верхних. Ниже не опускается . ВыборкаПервогоУровня.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам).Количество() = 0; аналогично и с ПоГруппировкамСеирархией. Опускается только когда выборка первого уровня поГруппирвокам или Прямой. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |