|
Итоги в запросе | ☑ | ||
---|---|---|---|---|
0
EugeniaK
27.03.13
✎
19:33
|
Чего-то я запуталась.
Есть запрос с несколькими итогами Например ВЫБРАТЬ Подразделение, Сотрудник, Начисление, Период, Сумма ИЗ Начисления ИТОГИ Сумма(Сумма) ПО Подразделение Сотрудник Начисление Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Получается выборка Строка1: Подразделение = "Цех1", Сотрудник = Неопределено, Начисление = Неопределено, Сумма = 100 Строка2: Подразделение = "Цех2", Сотрудник = Неопределено, Начисление = Неопределено, Сумма = 110 Как правильно написать команду "Выбрать", чтобы получить выборку по нескольким итогам одновременно? Т.е. Строка1: Подразделение = "Цех1", Сотрудник = Иванов, Начисление = Нач1, Сумма = 50 Строка2: Подразделение = "Цех1", Сотрудник = Петров, Начисление = Нач2, Сумма = 60 Пробовала Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Начисление"); Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение,Сотрудник,Начисление"); Я конечно понимаю, что можно написать ВыборкаПодразделение = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение"); Пока ВыборкаПодразделение.Следующий() Цикл ВыборкаСотрудник = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение"); Пока ВыборкаСотрудник.Следующий() Цикл ВыборкаНачисление = ВыборкаСотрудник.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение"); //Код КонецЦикла; КонецЦикла; Но как-то это криво. |
|||
1
ale-sarin
27.03.13
✎
19:35
|
Использовать не ИТОГИ, а СГРУППИРОВАТЬ, я так думаю. Если правильно понял.
|
|||
2
EugeniaK
27.03.13
✎
19:37
|
(1) Не подходит.
При "сгруппировать" я получу только итоги. А мне нужны итоги по трем группам одновременно, но к ним еще и детальные строки. |
|||
3
ale-sarin
27.03.13
✎
19:39
|
(2) СКД так умеет.
|
|||
4
EugeniaK
27.03.13
✎
19:41
|
(3) Умеет.
Но нужно в программе. |
|||
5
zladenuw
27.03.13
✎
19:41
|
(4) и че в программе ? ты с скд можешь получить дерево с результатом твоего запроса
|
|||
6
GANR
27.03.13
✎
19:50
|
(0) Чем цикл внутри цикла плох?
Выдели код, нажми Alt + Shift + F - все будет структурировано и НЕкриво ))). |
|||
7
EugeniaK
27.03.13
✎
20:42
|
(6) Цикл плох тем, что для документа с 200 сотрудников получится 200 вызовов команды
ВыборкаСотрудник.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Начисление"); Т.е. 200 выборок по 3-5 строчек. Мне кажется с точки зрения производительности это не самый лучший вариант. |
|||
8
EugeniaK
27.03.13
✎
20:43
|
(6) Я не в конфигураторе, а просто в сообщении набирала, поэтому Alt + Shift + F не поможет.
Сам код несколько сложнее, просто по аналогии написала. |
|||
9
EugeniaK
27.03.13
✎
20:48
|
(5) Имешь в виду скормить выборку построителю отчетов или как?
Тогда уж лучше тройной цикл в цикле. |
|||
10
magicSan
27.03.13
✎
20:52
|
ВЫБРАТЬ Подразделение, Сотрудник, Начисление, Период, Сумма
ИЗ Начисления ИТОГИ Сумма(Сумма) ПО Подразделение |
|||
11
GANR
27.03.13
✎
20:57
|
(7) > кажется с точки зрения производительности
Замер производительности страшных цифр не показывал мне ни разу при таком обходе. Ну, возможно процентов на 10 она изменится. Вот если получение данных, (читай, запрос) или БольшаяТаблицаЗначений.НайтиСтроки(СтруктураНеиндекисрованныхПолей) в цикле сделать - вот это будет страшно. |
|||
12
EugeniaK
27.03.13
✎
21:00
|
(10)
Такая команда даст итог только по подразделению. Нужно итог по группе полей. Вида: Строка1Итога: Подразделение = "Цех1",Сотрудник="Иванов",Начисление="Вид1", Период =Неопределено, Сумма = 100 ДетальнаяСтрока1: Период = 2012, сумма = 40 ДетальнаяСтрока2: Период = 2013, сумма = 60 Строка2Итога: Подразделение = "Цех1",Сотрудник="Иванов",Начисление="Вид2", Период =Неопределено, Сумма = 150 ДетальнаяСтрока1: Период = 2012, сумма = 70 ДетальнаяСтрока2: Период = 2013, сумма = 80 |
|||
13
rs_trade
27.03.13
✎
21:03
|
(12) ИТОГИ
Сумма(Сумма) МАКСИМУМ(Сотрудник) МАКСИМУМ(Начисление) ПО Подразделение |
|||
14
magicSan
27.03.13
✎
21:06
|
(13) )))))) оно самое
|
|||
15
EugeniaK
27.03.13
✎
21:14
|
(13)
Насколько я понимаю, такой запрос даст результат вида: Строка1Итога: Подразделение = "Цех1",Сотрудник="Иванов",Начисление="Вид2", Период =Неопределено, Сумма = 250 ДетальнаяСтрока1: Период = 2012,Сотрудник="Иванов",Начисление="Вид1", сумма = 40 ДетальнаяСтрока2: Период = 2013,Сотрудник="Иванов",Начисление="Вид1", сумма = 60 ДетальнаяСтрока3: Период = 2012,Сотрудник="Иванов", Начисление="Вид2", сумма = 70 ДетальнаяСтрока4: Период = 2013,Сотрудник="Иванов",Начисление="Вид2", сумма = 80 А мне нужно (12) |
|||
16
magicSan
27.03.13
✎
21:23
|
(15) Строка1Итога: Подразделение = "Цех1",Сотрудник="Иванов",Начисление="Вид2", Период =Неопределено, Сумма = 250
ДетальнаяСтрока1: Период = 2012,Сотрудник="Иванов",Начисление="Вид1", сумма = 40 ДетальнаяСтрока2: Период = 2013,Сотрудник="Иванов",Начисление="Вид1", сумма = 60 Строка1Итога: Подразделение = "Цех1",Сотрудник="Иванов",Начисление="Вид2", Период =Неопределено, Сумма = 250 ДетальнаяСтрока3: Период = 2012,Сотрудник="Иванов", Начисление="Вид2", сумма = 70 ДетальнаяСтрока4: Период = 2013,Сотрудник="Иванов",Начисление="Вид2", сумма = 80 |
|||
17
EugeniaK
27.03.13
✎
21:23
|
(13) Т.е. нужна сумма по каждой комбинации полей Подразделение,Сотрудник,Начисление
И потом по каждой комбинации трех полей нужен набор детальных строк. |
|||
18
magicSan
27.03.13
✎
21:39
|
сгруппировать по трем полям , попутно внедрив ещё одно поле ключ - типа "Цех1ИвановВид2". потом раставить контрольгнные точки н ановом поле ...
|
|||
19
magicSan
27.03.13
✎
21:48
|
а вообще если обработка запроса управляема то (13)
|
|||
20
EugeniaK
27.03.13
✎
21:58
|
(18) Вариант. Теоретически работать будет.
Но как-то некрасиво. (19) Имеешь в виду потом идти циклом и рассчитывать нужные итоги отдельно? |
|||
21
magicSan
27.03.13
✎
22:01
|
(20) там всё посчитано струткру а как у вас просто
"лишние" поля в дентальных записях |
|||
22
magicSan
27.03.13
✎
22:03
|
Строка1Итога: Подразделение = "Цех1",Сотрудник="Иванов",Начисление="Вид1", Период =Неопределено, Сумма = 100
ДетальнаяСтрока1: Период = 2012,Сотрудник="Иванов",Начисление="Вид1", сумма = 40 ДетальнаяСтрока2: Период = 2013,Сотрудник="Иванов",Начисление="Вид1", сумма = 60 Строка1Итога: Подразделение = "Цех1",Сотрудник="Иванов",Начисление="Вид2", Период =Неопределено, Сумма = 150 ДетальнаяСтрока3: Период = 2012,Сотрудник="Иванов", Начисление="Вид2", сумма = 70 ДетальнаяСтрока4: Период = 2013,Сотрудник="Иванов",Начисление="Вид2", сумма = 80 |
|||
23
EugeniaK
27.03.13
✎
22:18
|
(21) Не поняла про структуру
|
|||
24
magicSan
28.03.13
✎
07:17
|
там всё посчитано
СТРУТКТУРА как у вас но в детальных записях "лишние " поля |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |