Имя: Пароль:
1C
 
v8: Группировки запроса ( Запрос.Выполнить().Выгрузить() )
0 nop
 
10.07.09
13:39
в каких случаях результат будет ДеревоЗначений ?
1 mikecool
 
10.07.09
13:40
параметр - сиерархией
2 and2
 
10.07.09
13:42
РезультатЗапроса (QueryResult)
Выгрузить (Unload)
Синтаксис:
Выгрузить(<Тип обхода>)
Параметры:
<Тип обхода> (необязательный)
Тип: ОбходРезультатаЗапроса. Задает тип обхода записей в получаемой выборке.
Значение по умолчанию: Прямой
Возвращаемое значение:
Тип: ТаблицаЗначений, ДеревоЗначений. Если тип обхода задан Прямой, результат выгружается в таблицу значений, в противном случае в дерево значений.
Описание:
Создает таблицу значений (или дерево значений) и копирует в нее все записи набора.
Пример:
ТаблицаРезультатов = РезультатЗапроса.Выгрузить();
3 nop
 
10.07.09
13:42
(1) есть запрос
Выбрать Валюта, Контрагент, Документ ИЗ Регистр.Остатки()

Можно получить дерево с узлами Валюта ?
4 mikecool
 
10.07.09
13:43
(3) итоги надо по валюте
5 73
 
10.07.09
13:44
Итоги по Валюта
+ Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам)
6 nop
 
10.07.09
13:46
итоги это

ИТОГ СУММА(Остаток) ПО Валюта

?
7 zbv
 
10.07.09
13:47
(6) перекурил чтоли? :)
8 73
 
10.07.09
13:47
Что хочешь видеть в других колонках?
Итоги можно и без ничего.
9 nop
 
10.07.09
13:50
хочу вместо этого

Для каждого стр из РезультатЗапроса Цикл
 Если предВалюта <> стр.Валюта Тогда
   //создаем новый документ, заполняем шапку
 КонецЕсли;
 // заполняем ТЧ документа
КонецЦикла;


попробовать с деревом значений
10 Живой Ископаемый
 
10.07.09
13:55
У тебя должен быть рабочий интсрумент - консоль запросов с возможностью просмотра результата как в ТЗ так и в дереве.. Заимей себе такую консоль и отлаживай в ней запросы...
11 73
 
10.07.09
13:55
Судя по (3) просто добавь (5).
12 Пеппи
 
10.07.09
13:57
на заметку.
13 nop
 
10.07.09
15:38
а можно группировки (итоги) сделать вложенными ?
14 nop
 
10.07.09
15:38
Запрос = Новый Запрос;
   Запрос.Текст = "
   |ВЫБРАТЬ
   |    ЗаявкиКОплатеОстатки.Заявка КАК Заявка,
   |    ЗаявкиКОплатеОстатки.Заявка КАК Валюта,
   |    ЗаявкиКОплатеОстатки.Контрагент КАК Контрагент,
   |    ЗаявкиКОплатеОстатки.Договор КАК ПоДоговору,
   |    ЗаявкиКОплатеОстатки.ДокументВзаиморасчетов КАК ПоСчету,
   |    ЗаявкиКОплатеОстатки.ВидУчета КАК ВидУчета,
   |    ЗаявкиКОплатеОстатки.СтатьяБюджета КАК Статья,
   |    ЗаявкиКОплатеОстатки.ОстатокКОплатеОстаток КАК ОстатокКОплате,
   |    ЗаявкаНаОплатуПлатежи.Сумма    КАК ЗаявленнаяСумма,
   |    ЗаявкиКОплатеОстатки.Заявка.ВидДенежныхСредств КАК ВидДенежныхСредств
   |ИЗ
   |    РегистрНакопления.ЗаявкиКОплате.Остатки(
   |            &НаДату,
   |            Организация = &Организация
   |                ) КАК ЗаявкиКОплатеОстатки
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаОплату.Платежи КАК ЗаявкаНаОплатуПлатежи
   |        ПО ЗаявкиКОплатеОстатки.Заявка = ЗаявкаНаОплатуПлатежи.Ссылка
   |            И ЗаявкиКОплатеОстатки.Договор = ЗаявкаНаОплатуПлатежи.ПоДоговору
   |            И ЗаявкиКОплатеОстатки.ДокументВзаиморасчетов = ЗаявкаНаОплатуПлатежи.ПоСчету
   |            И ЗаявкиКОплатеОстатки.СтатьяБюджета = ЗаявкаНаОплатуПлатежи.Статья
   |ИТОГИ ПО ВидДенежныхСредств, Валюта
   |";
   
   Запрос.УстановитьПараметр("НаДату",            Дата);     //Дата
   Запрос.УстановитьПараметр("Организация",    Организация);     //Организация
15 nop
 
10.07.09
15:40
и чего то все поля выборки = NULL кроме поля ВидДенежныхСредств :(
16 nop
 
10.07.09
15:43
ап
17 Defender aka LINN
 
10.07.09
15:50
(15) Дык ты ж сам, лично, итоги написал. Пока на уровень детальных записей не спустишься - будет NULL.
18 nop
 
10.07.09
15:51
(17) а как спуститься ?
19 Vitello
 
10.07.09
15:52
(18)Из предыдущей выборки, открывай следующую.
В общем как с деревом.
20 nop
 
10.07.09
15:54
(19) можно пример кода ?
21 Vitello
 
10.07.09
15:55
Выборка_Склад = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Склад",);
   
   Пока Выборка_Склад.Следующий() Цикл
       
       Выборка_Номенклатура = Выборка_Склад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Номенклатура",);
       
       Пока Выборка_Номенклатура.Следующий() Цикл
22 Defender aka LINN
 
10.07.09
15:57
ВыборкаУровень1 = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаУровень1.Следующий() Цикл
   ВыборкаУровень2 = ВыборкаУровень1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   Пока ВыборкаУровень2.Следующий() Цикл
       ВыборкаДетали = ВыборкаУровень2.Выбрать();
       Пока ВыборкаДетали.Следующий() Цикл
       КонецЦикла;
   КонецЦикла;
КонецЦикла;
23 nop
 
10.07.09
16:07
спасибо! :)
24 BOZKURT
 
10.07.09
16:07
(0)
   ТабличноеПоле1 = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
   ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); //ТП на форме, тип данных "ДеревоЗначений"
25 nop
 
10.07.09
16:09
(24) тоже полезно! спасибо
26 73
 
10.07.09
16:16
Если хошь деревом:

Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого СтрУровень1 Из Дерево.Строки Цикл
   Для Каждого СтрУровень2 Из СтрУровень1.Строки Цикл
      Для Каждого СтрДетали Из СтрУровень2.Строки Цикл

      КонецЦикла;
   КонецЦикла;
КонецЦикла;

ЗЫ.Можно еще рекурсию прикрутить.