Д
Дайнеко
Совсем измучался с запросом. Запрос простой, но могу красиво выбрать результаты.
Сам запрос:
В чем задача: Вывести Субконто поочередно. Под каждым его валюты. Но необходимо по группировкам Валюта сделать 2 прохода. Пример приведу с 60 счетом, имеющим 2 субконто
Клиент 1
- рубль
- доллар
Договор 11 Клиента 1
- рубль
- доллар
Договор 12 Клиента 1
- рубль
- доллар
Клиент 2
- рубль
- доллар
Договор 21 Клиента 2
- рубль
- доллар
Договор 22 Клиента 2
- рубль
- доллар
Как я выбираю:
В чем бяка:
* Мне надо делать 2 прохода по валютам. На первом я выясняю, а нужно ли их вообще выводить.
* Как я понял, Субконто2 подчинено группировке Валюта. И если Валюту не выберу, то группировка Субкотно второго и ниже уровня и не выбирается.
* Пока не было валют, а были только субконто отлично работал и Простой порядок обхода. Хорошо им обойтись.
Пробовал использовать в методе Выбрать() второй параметр. "Группировки"
Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
Определение не доходит до головы.
Много написал, позже могу уточнить.
Сам запрос:
Код:
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| БухИтогиОстаткиИОбороты.Счет КАК Счет,
| БухИтогиОстаткиИОбороты.Счет.Код КАК СчетКод,
| БухИтогиОстаткиИОбороты.Субконто1 КАК Субконто1,
| БухИтогиОстаткиИОбороты.Субконто2 КАК Субконто2,
| БухИтогиОстаткиИОбороты.Валюта КАК Валюта1,
| БухИтогиОстаткиИОбороты.Валюта КАК Валюта2,
| БухИтогиОстаткиИОбороты.СуммаРНачальныйОстатокДт КАК НачРубДт,
| БухИтогиОстаткиИОбороты.СуммаРНачальныйОстатокКт КАК НачРубКт,
.........
|ИЗ
| РегистрБухгалтерии.БухИтоги.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), , ) КАК БухИтогиОстаткиИОбороты
|ИТОГИ
| СУММА(НачРубДт),
| СУММА(НачРубКт),
...........
|ПО
| Субконто1 ИЕРАРХИЯ,
| Валюта КАК Валюта1,
| Субконто2 ИЕРАРХИЯ,
| Валюта КАК Валюта2,
|АВТОУПОРЯДОЧИВАНИЕ
|;";
В чем задача: Вывести Субконто поочередно. Под каждым его валюты. Но необходимо по группировкам Валюта сделать 2 прохода. Пример приведу с 60 счетом, имеющим 2 субконто
Клиент 1
- рубль
- доллар
Договор 11 Клиента 1
- рубль
- доллар
Договор 12 Клиента 1
- рубль
- доллар
Клиент 2
- рубль
- доллар
Договор 21 Клиента 2
- рубль
- доллар
Договор 22 Клиента 2
- рубль
- доллар
Как я выбираю:
Код:
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыбратьСубконто(Выборка);
//----------------------------------------------------------
//
Процедура ВыбратьСубконто(Выборка, Макет, ДокументРезультат)
Пока Выборка.Следующий() Цикл
ИмяГруппировки = Выборка.Группировка();
Субконто = Выборка[ИмяГруппировки];
Сообщить(""+Субконто+ " "+Выборка.ТипЗаписи());
// Валюта
Если Входит(ИмяГруппировки, "Субконто") И Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоГруппировке Тогда
ВыбратьВалюты(Выборка, Макет, ДокументРезультат);
Иначе
Продолжить;
КонецЕсли;
ВыбратьСубконто(Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам), Макет, ДокументРезультат);
КонецЦикла; // Результат
КонецПроцедуры // ВыбратьСубконто
//----------------------------------------------------------
Процедура ВыбратьВалюты(Выборка, Макет, ДокументРезультат)
ВыборкаВалют = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта1,Валюта2,Валюта3,Валюта4");
Пока ВыборкаВалют.Следующий() Цикл
ИмяГруппировки = ВыборкаВалют.Группировка();
Валюта = ВыборкаВалют[ИмяГруппировки];
Сообщить(" Валюта:" + Валюта);
КонецЦикла; // ВыборкаВалют
ВыборкаВалют = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта1,Валюта2,Валюта3,Валюта4");
Пока ВыборкаВалют.Следующий() Цикл
ИмяГруппировки = ВыборкаВалют.Группировка();
Валюта = ВыборкаВалют[ИмяГруппировки];
Сообщить(" Валюта:" + Валюта);
КонецЦикла; // ВыборкаВалют
КонецПроцедуры // ВыбратьВалюты
В чем бяка:
* Мне надо делать 2 прохода по валютам. На первом я выясняю, а нужно ли их вообще выводить.
* Как я понял, Субконто2 подчинено группировке Валюта. И если Валюту не выберу, то группировка Субкотно второго и ниже уровня и не выбирается.
* Пока не было валют, а были только субконто отлично работал и Простой порядок обхода. Хорошо им обойтись.
Пробовал использовать в методе Выбрать() второй параметр. "Группировки"
Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
Определение не доходит до головы.
Много написал, позже могу уточнить.