Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/72: Рейтинг темы: голосов - 72, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
1

Группировка В Запросе

11.03.2012, 19:42. Показов 13893. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Совсем измучался с запросом. Запрос простой, но могу красиво выбрать результаты.
Сам запрос:

Код ( (Unknown Language)):
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| БухИтогиОстаткиИОбороты.Счет КАК Счет,
| БухИтогиОстаткиИОбороты.Счет.Код КАК СчетКод,
| БухИтогиОстаткиИОбороты.Субконто1 КАК Субконто1,
| БухИтогиОстаткиИОбороты.Субконто2 КАК Субконто2,
| БухИтогиОстаткиИОбороты.Валюта КАК Валюта1,
| БухИтогиОстаткиИОбороты.Валюта КАК Валюта2,
| БухИтогиОстаткиИОбороты.СуммаРНачальныйОстатокДт КАК НачРубДт,
| БухИтогиОстаткиИОбороты.СуммаРНачальныйОстатокКт КАК НачРубКт,
.........
|ИЗ
| РегистрБухгалтерии.БухИтоги.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), , ) КАК БухИтогиОстаткиИОбороты
|ИТОГИ
| СУММА(НачРубДт),
| СУММА(НачРубКт),
...........
|ПО
| Субконто1 ИЕРАРХИЯ,
| Валюта КАК Валюта1,
| Субконто2 ИЕРАРХИЯ,
| Валюта КАК Валюта2,
|АВТОУПОРЯДОЧИВАНИЕ
|;";
В чем задача: Вывести Субконто поочередно. Под каждым его валюты. Но необходимо по группировкам Валюта сделать 2 прохода. Пример приведу с 60 счетом, имеющим 2 субконто

Клиент 1
- рубль
- доллар
Договор 11 Клиента 1
- рубль
- доллар
Договор 12 Клиента 1
- рубль
- доллар

Клиент 2
- рубль
- доллар
Договор 21 Клиента 2
- рубль
- доллар
Договор 22 Клиента 2
- рубль
- доллар

Как я выбираю:

Код ( (Unknown Language)):
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыбратьСубконто(Выборка);

//----------------------------------------------------------
//
Процедура ВыбратьСубконто(Выборка, Макет, ДокументРезультат)
Пока Выборка.Следующий() Цикл
ИмяГруппировки = Выборка.Группировка();
Субконто = Выборка[ИмяГруппировки];
Сообщить(""+Субконто+ " "+Выборка.ТипЗаписи());

// Валюта
Если Входит(ИмяГруппировки, "Субконто") И Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоГруппировке Тогда
ВыбратьВалюты(Выборка, Макет, ДокументРезультат);
Иначе
Продолжить;
КонецЕсли;
ВыбратьСубконто(Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам), Макет, ДокументРезультат);
КонецЦикла; // Результат
КонецПроцедуры // ВыбратьСубконто


//----------------------------------------------------------
Процедура ВыбратьВалюты(Выборка, Макет, ДокументРезультат)

ВыборкаВалют = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта1,Валюта2,Валюта3,Валюта4");
Пока ВыборкаВалют.Следующий() Цикл
ИмяГруппировки = ВыборкаВалют.Группировка();
Валюта = ВыборкаВалют[ИмяГруппировки];
Сообщить(" Валюта:" + Валюта);
КонецЦикла; // ВыборкаВалют

ВыборкаВалют = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта1,Валюта2,Валюта3,Валюта4");
Пока ВыборкаВалют.Следующий() Цикл
ИмяГруппировки = ВыборкаВалют.Группировка();
Валюта = ВыборкаВалют[ИмяГруппировки];
Сообщить(" Валюта:" + Валюта);
КонецЦикла; // ВыборкаВалют
КонецПроцедуры // ВыбратьВалюты

В чем бяка:
* Мне надо делать 2 прохода по валютам. На первом я выясняю, а нужно ли их вообще выводить.
* Как я понял, Субконто2 подчинено группировке Валюта. И если Валюту не выберу, то группировка Субкотно второго и ниже уровня и не выбирается.
* Пока не было валют, а были только субконто отлично работал и Простой порядок обхода. Хорошо им обойтись.
Пробовал использовать в методе Выбрать() второй параметр. "Группировки"
Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
Определение не доходит до головы.

Много написал, позже могу уточнить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2012, 19:42
Ответы с готовыми решениями:

Группировка в запросе 1с77
Есть отчет по оплатам с реквизитом ВыбрСтудент. Надо узнать какую сумму заплатил человек, дату и...

Группировка В Запросе И Уровни Справочника
есть одноуровневый справочник Операторы, который уже разросся до неудобства, хотелось бы разделить...

Группировка в запросе
Доброго времени суток! В результате запроса получаю вот такую таблицу(во вложении): ...

Группировка по параметру в запросе 1С
Есть такой вот запрос ВЫБРАТЬ ОстаткиТоваровОстатки.ТМЦ,...

5
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
12.03.2012, 06:25 2
Сталкивался с такой бякой.
Могу предложить только некрасивое решение:
Например, еще одним пакетом запроса получить итоги без договоров, выгрузить в ТЗ, и при получении контрагента отбирать строки... ну или еще что-нибудь в этом роде..
0
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
12.03.2012, 09:46 3
Цитата Сообщение от unknown181538
Могу предложить только некрасивое решение:
Я делаю универсальный отчет: Оборотно-сальдовая по счету. Из типовой бух-ии не совсем подходит. А глядя на его написание - совсем не подходит.

Перефразирую вопрос так. Если разворачиваю только по субконто - все отлично. А нужен еще один шаг - каждое субконто развернуть по валютам. Хоть запрос давай на каждой строке.
0
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
12.03.2012, 14:40 4
Ребята! Поделитесь отчетом в стиле Оборотно-сальдовой.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
12.03.2012, 18:40 5
Вы смогли разобраться, как в типовом решена проблема, что сначала выводится одна группировка, потом другая без подчинения первой?
0
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
13.03.2012, 14:37 6
Да разбирался. В типовой схема упрощена: почти все счета отмечены как НЕвалютные. А отчет по валютным выводит все валюты. У меня все счета валютные и задача сложнее:
- сделать цикл по валютам
- вторым циклом вывести, если там не только рубли.
0
13.03.2012, 14:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2012, 14:37
Помогаю со студенческими работами здесь

Группировка в запросе при печати документа.
Приветствую профи 1С, сам новичок в 1С, хотел бы узнать, как можно получить такой результат, как...

Группировка в запросе
Добрый день всем. Проблема такая: создал базу и таблицы. Заполнил их данными. Теперь хочу...

Группировка в запросе
Имеется БД &quot;Учет вычислительной техники&quot;. Нужно выбрать: Инвентарные номера (card.inv),...

Группировка данных в запросе
Направьте пожалуйста на нужный путь. Есть таблица под названием &quot;Реализация&quot;. Туда пользователь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru