|
Как обойти запрос по 2 группировкам? | ☑ | ||
---|---|---|---|---|
0
Мисти
03.12.18
✎
18:19
|
"ВЫБРАТЬ
| ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Номенклатура, | ХозрасчетныйОборотыДтКт.Регистратор КАК Документ, | ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаСписания, | ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК Количество |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт( | &ВыбНач, | &ВыбКон, | Регистратор, | СчетДт = &ВыбСчет, | , | , | , | Организация = &ВыбОрганизация | И СубконтоДт1 = &ВЫбКолеровка) КАК ХозрасчетныйОборотыДтКт |ИТОГИ | СУММА(СуммаСписания), | СУММА(Количество) |ПО | Номенклатура, | Документ"; |
|||
1
Fragster
гуру
03.12.18
✎
18:20
|
также как по одной, только вторую выборку не из результата а из первой
|
|||
2
Мисти
03.12.18
✎
18:20
|
Нашла уже свой вопрос - "по пяти", но там нет ответа.
Как-то же решила тогда, но как? И вот опять то же самое, запишу в тетрадку, честно!!! Просто нужно обойти по номенклатуре, а потом по документу. Вот с текущим запросом у меня по документу 2 строки почему-то получаются. |
|||
3
Мисти
03.12.18
✎
18:21
|
(1) Я пробовала так, но тогда не работает второй цикл!
|
|||
4
Мисти
03.12.18
✎
18:23
|
Вот такой обход -
ПоНомен = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ном = 1; ТабДок.НачатьАвтогруппировкуСтрок(); Пока ПоНомен.Следующий() цикл ОбластьДетальныхЗаписей.Параметры.ном = Ном; ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей.Параметры,ПоНомен); ТабДок.Вывести(ОбластьДетальныхЗаписей); Ном = Ном+1; ВыборкаДействий = ПоНомен.Выбрать(); Пока ВыборкаДействий.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей1.Параметры,ВыборкаДействий); |
|||
5
Василий Алибабаевич
03.12.18
✎
18:26
|
(4) Все здесь : "ВыборкаДействий = ПоНомен.Выбрать();"
Посмотрите в СП параметры метода Выбрать. А сособо параметр №3. |
|||
6
Мимохожий Однако
03.12.18
✎
18:27
|
Попробуй это запрос запихнуть в мастер по созданию запроса для вывода в табличный документ и увидишь на примере
как используется уровень группировки. |
|||
7
Мисти
03.12.18
✎
18:28
|
Если просто выгрузить результаты таблицы, то и там 2 строки по одному документу.
|
|||
8
Мисти
03.12.18
✎
18:29
|
У меня нет мастера и никогда таким не пользовалась.
|
|||
9
Мисти
03.12.18
✎
18:29
|
По-моему, там одна простая ошибка, ткните меня уже в нее и всё!!!1
|
|||
10
Eiffil123
03.12.18
✎
18:29
|
(4) не будет это работать. Обход всегда только по 1й группировке
|
|||
11
Мимохожий Однако
03.12.18
✎
18:30
|
По правой клавише мышки создать запрос с обработкой и выбрать второй способ обхода для табличного документа. Этот мастер встроен в платформу
|
|||
12
Василий Алибабаевич
03.12.18
✎
18:31
|
(9) За параметры метода Выбрать() уже прочитала?
|
|||
13
Eiffil123
03.12.18
✎
18:32
|
(0) У вас 2 группировки. Соответственно, 3 уровня выборки:
ВыборкаНом = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНом.Следующий() Цикл ВыборкаДок = ВыборкаНом.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыбркаДок.Следующий() Цикл ВыборкаДетали = ВыборкаДок.Выбрать(); Пока ВыборкаДетали.Следующий() Цикл // Тут код по детальным записям КонецЦикла; КонецЦикла; КонецЦикла; |
|||
14
Eiffil123
03.12.18
✎
18:34
|
Можно документ убрать из итогов, тогда будет 2 уровня выборки (для вашего запроса это как раз подходит).
|
|||
15
Мисти
03.12.18
✎
18:34
|
Верхняя - правильная, по номенклатуре, а потом 2 строки совершенно одинаковые идут.
Как я этого добилась? |
|||
16
Вафель
03.12.18
✎
18:35
|
ВыборкаДействий = ПоНомен.Выбрать();
не указан способ обхода |
|||
17
Eiffil123
03.12.18
✎
18:35
|
(15) из итогов убрать документ. Должно помочь
|
|||
18
Мисти
03.12.18
✎
18:36
|
(14) Точно! Получилось.
Теперь еще с автогруппировкой. Почему она у меня не работает? |
|||
19
Мисти
03.12.18
✎
18:44
|
ТабДок.НачатьАвтогруппировкуСтрок();
Пока ПоНомен.Следующий() цикл ОбластьДетальныхЗаписей.Параметры.ном = Ном; ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей.Параметры,ПоНомен); ТабДок.Вывести(ОбластьДетальныхЗаписей); Ном = Ном+1; ВыборкаДействий = ПоНомен.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДействий.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей1.Параметры,ВыборкаДействий); ОбластьДетальныхЗаписей1.Параметры.Документ = ВыборкаДействий.Документ; ТабДок.Вывести(ОбластьДетальныхЗаписей1); КонецЦикла; КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); |
|||
20
Мисти
03.12.18
✎
18:44
|
Что опять не так?
|
|||
21
Eiffil123
03.12.18
✎
18:54
|
(18) не использовал ни разу. А зачем автогруппировка, можно же ручную группировку делать, иерархии справочников же нет.
|
|||
22
Мисти
03.12.18
✎
19:29
|
Ручную я тем более не умею.
|
|||
23
Мимохожий Однако
03.12.18
✎
19:32
|
(22) У тебя всё впереди. Я в это твёрдо верю.
|
|||
24
Мисти
03.12.18
✎
21:32
|
Ага, пенсию на 3 года отодвинули.
|
|||
25
Мисти
03.12.18
✎
21:43
|
(23) А ведь получилось! Поскольку там 2 цикла, то нужно при выводе ставить уровень группировки вторым параметром.
|
|||
26
Мимохожий Однако
03.12.18
✎
22:00
|
(25) я тебе об этом еще в (6) намекал )) Молодца
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |