|
Группировки в запросе | ☑ | ||
---|---|---|---|---|
0
AllJoke
04.12.13
✎
14:28
|
Всем времени доброго. Группировками пользуюсь редко в запросе, поэтому и спрашиваю. есть запрос, выводит результат следующим образом:
600000003 10.11.2012 0:00:00 10.11.2013 0:00:00 5 000 Заблокирован -2 060 16.11.2012 19:16:46 5697 2 940 600000003 10.11.2012 0:00:00 10.11.2013 0:00:00 5 000 Заблокирован -2 940 20.06.2013 17:56:04 451 2 060 Как бы мне сделать так, чтобы он выводил: 600000003 10.11.2012 0:00:00 10.11.2013 0:00:00 5 000 Заблокирован а потом две строки: -2 060 16.11.2012 19:16:46 5697 2 940 -2 940 20.06.2013 17:56:04 451 2 060 Точнее Результат выполения запроса я выгружая в выборку, но вот эти "Обход ПоГруппировка" , "Обход ПО ГруппировкамСИерархией". В них я нуб. |
|||
1
chelentano
04.12.13
✎
14:31
|
(0) Обход ПоГруппировка - это если в запросе есть итоги
|
|||
2
Fram
04.12.13
✎
14:34
|
(0) если для отчета, то СКД решает этот вопрос на уровне настроек
|
|||
3
AllJoke
04.12.13
✎
14:43
|
(2) Нет. Мне нужно для выгрузки в файл. По поводу СКД знаю, там проще.
(1) Это я понял. А как сделать в моем случае. Брать Итоги? Но там не нужны итогу, нужны именно детальные записи по одному сертификату. |
|||
4
chelentano
04.12.13
✎
14:45
|
(3) либо с итогами и ОбходПоГруппировке, либо без итогов с сортировкой по сертификату и обрабатывай сам вывод
|
|||
5
МихаилМ
04.12.13
✎
14:51
|
(0)
как программисты работали раньше? у кнута описаны алгоритмы построения иерархий деревьев, группировок. напишите метод ТЗвДЗ(ТЗ,ДЗ,описаниеИерархии) |
|||
6
Fram
04.12.13
✎
14:51
|
(3) Тады СледующийПоЗначениюПоля()
Предварительно отсортируй по этому полю |
|||
7
AllJoke
04.12.13
✎
14:52
|
(6) Поле то уже отсортировано.
|
|||
8
AllJoke
04.12.13
✎
14:53
|
В палне у Выборки есть такой метод "СлендующийПоЗначениюПоля"?
|
|||
9
Fram
04.12.13
✎
14:54
|
(8) да
|
|||
10
Fram
04.12.13
✎
14:54
|
+(9) очень удобно. часто пользую
|
|||
11
AllJoke
04.12.13
✎
14:55
|
(10) Щас посмотрю.
|
|||
12
AllJoke
04.12.13
✎
14:58
|
+(11) а можно примерчик? Чётт в Описании сложно всё.
|
|||
13
kumena
04.12.13
✎
15:15
|
миста как всегда в ударе. сбила автора с верного пути
|
|||
14
AllJoke
04.12.13
✎
15:16
|
(13) Опа опа. А где же путь этот верный? ))
|
|||
15
kumena
04.12.13
✎
15:18
|
в запросе итоги сделай, в функции итогов эти поля
600000003 10.11.2012 0:00:00 10.11.2013 0:00:00 5 000 потом первая выборка по группировке, вторая из неё детальная |
|||
16
Halyavnik
04.12.13
✎
15:19
|
Группировать по выодимым полям
В функциях группировки использовать, в зависимости от требуемого результата, Сумма, Среднее, Максимум, Минимум. Есть еще два Количества, но в данном случае их применять не надо. |
|||
17
Halyavnik
04.12.13
✎
15:21
|
Сорри, не группировать, а итоги.
|
|||
18
AllJoke
04.12.13
✎
15:22
|
Ребят, вот запрос, как изменить и обходить выборку его?
ВЫБРАТЬ Сертификаты.Код КАК Код, Сертификаты.ДатаАктивации КАК ДатаАктивации, Сертификаты.ДатаБлокировки КАК ДатаБлокировки, Сертификаты.Сумма КАК Номинал, Сертификаты.Статус КАК Статус, ЕСТЬNULL(СертификатыПроизвольногоНоминала.Сумма, 0) КАК СуммаПродажи, ЕСТЬNULL(СертификатыПроизвольногоНоминала.Период, 0) КАК ДатаОплаты, ЕСТЬNULL(СертификатыПроизвольногоНоминала.НомерЧекаККМ, 0) КАК НомерЧекаККМ, ЕСТЬNULL(Сертификаты.Сумма + СертификатыПроизвольногоНоминала.Сумма, 0) КАК Остаток ИЗ Справочник.Сертификаты КАК Сертификаты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СертификатыПроизвольногоНоминала КАК СертификатыПроизвольногоНоминала ПО Сертификаты.Ссылка = СертификатыПроизвольногоНоминала.Сертификат И (СертификатыПроизвольногоНоминала.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоПрозвольнымСертификатам.Оплата)) ГДЕ Сертификаты.ПометкаУдаления = ЛОЖЬ И Сертификаты.Код = "600000003" УПОРЯДОЧИТЬ ПО Код |
|||
19
AllJoke
04.12.13
✎
15:22
|
упс. в условии код убрать - это я для теста.
|
|||
20
Halyavnik
04.12.13
✎
15:25
|
Обход такой:
ВыборкаИтогов = Результат.Выбрать( ОбходРезультатаЗапроса.ПоГруппировкам ); // Все итоги только "ПоГруппировкам" Пока ВыборкаИтогов.Следующий() Цикл // Вывод итоговой строки... Выборка = ВыборкаИтогов.Выбрать( ОбходРезультатаЗапроса.Прямой ); // Детальные записи - Прямой или по умолчанию. Пока Выборка.Следующий() Цикл // Вывод детальных строк... КонецЦикла; КонецЦикла; |
|||
21
AllJoke
04.12.13
✎
15:30
|
Это всё бред. Он у меня одн7у строку по 4 раза проходит.
|
|||
22
Fram
04.12.13
✎
15:35
|
Пока выборка.СледующийПоЗначениюПоля("Код") Цикл
Пока Выборка.Следующий() Цикл ... КонецЦикла КонецЦикла |
|||
23
Halyavnik
04.12.13
✎
15:43
|
1. Количество полей в итоговой строке и "две строки которые надо вывести потом" - не совпадает. Должно совпадать.
2. Основной результат запроса положить во временную табличку или во вложенный запрос. Выбирать из временной таблицы поля 6-9 (). Указать итоги по нужным полям При указании функций указать для поля6 (где стоит -2 060) Минимум/Максимум/Среднее(Поле1), чтобы в строке итогов показывались данные из поля1, а не из поля6. |
|||
24
AllJoke
04.12.13
✎
15:45
|
(22) Во внутренний цикл в любом случае заходит. Или ты предлагаешь сравнивать с полем "Код"?
|
|||
25
AllJoke
04.12.13
✎
15:46
|
(23) Всё бы хорошо, но выходит в цикле по детальным записям он ещё и итоговоу строку зачем то берёт.
|
|||
26
Fram
04.12.13
✎
15:47
|
Не надо там ниче сравнивать. Движок сам все сделает. При вызове СледующийПоЗначениюПоля("Код") сработает некоторая внутрення выборка, которую можно перебрать с помощью Следующий()
|
|||
27
Fram
04.12.13
✎
15:47
|
(26) to (24)
|
|||
28
Halyavnik
04.12.13
✎
15:50
|
(25) не берет он итоговую строку, если правильно построен запрос и в нем есть ключевое слово ИТОГИ. Ну, никак не берет :).
В Вашем запросе НЕТ итогов, потому, естественно, будет совсем не тот результат, который ожидается. |
|||
29
Halyavnik
04.12.13
✎
15:54
|
Опишите, по какому принципу из нескольких строк результата запроса получается вот та "заветная" строка: "600000003 10.11.2012 0:00:00 10.11.2013 0:00:00 5 000 Заблокирован".
Это типа свод по коду сертификата, свод по коду/дате или как? |
|||
30
Fram
04.12.13
✎
15:56
|
(29) а догадаться по тексту запроса?.. это все реквизиты справочника Сертификаты
|
|||
31
Halyavnik
04.12.13
✎
16:09
|
(30) Эмммм... как бы сказать... Не догадался... Автор меня не посвятил в подробности, потому придется самому думать...
- мы хотим видеть сводную строку по коду сертификата. Маловероятно, ибо есть отбор по конкретному коду, но, в общем случае - может быть, т.к. автор треда начинающий. - мы хотим видеть итоги (можно я буду использовать именно это определение?) номиналу. Вариант? Очень даже возможен... - мы хотим видеть итоги по (любое другое поле запроса или комбинация полей). Пока автор не скажет, что у него "итожится", дописать код запроса нельзя. ЗЫ А я еще подозреваю, что итог должен выводиться по совокупности всех первых четырех/пяти полей, Тогда придется делать несколько итогов, вложенные циклы обхода группировок и вывод строки итогов на предпоследнем уровне вложенности. |
|||
32
AllJoke
04.12.13
✎
16:15
|
Я уже всё сотворил. Спасибо "Fram".
|
|||
33
AllJoke
04.12.13
✎
16:16
|
Меня удивляет, что СКД легко бы эту штуку отработало.
Группировка по первым пяти полям. А в запросе думать надо или мудрить. |
|||
34
Fram
04.12.13
✎
16:17
|
хочется показать всем язык.. ну да ладно ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |