|
РезультатЗапроса.Выбрать(ТипОбхода, ?, ?) | ☑ | ||
---|---|---|---|---|
0
PR
02.09.11
✎
16:50
|
Кто-нибудь может доступно объяснить, что означают второй и третий параметры метода "Выбрать" из результата запроса?
И что означает например Выборка1 = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Клиент"); Пока Выборка1.Следующий() Цикл Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Клиент, Подразделение", "ВСЕ, "); КонецЦикла; ? |
|||
1
PR
02.09.11
✎
16:51
|
Или вопрос по-другому.
Как при выборке к примеру продаж вывести цифры вручную в кросс-таблицу, в строках клиенты, в колонках подразделения и организации? |
|||
2
shuhard
02.09.11
✎
16:51
|
(0) ВСЕ в связке с периодами идёт
|
|||
3
PR
02.09.11
✎
16:55
|
(2) При чем здесь периоды?
|
|||
4
PR
02.09.11
✎
17:36
|
Как всегда, как потрындеть, сколько должен одинесник получать или почем Украине газ продавать, так бегут наперебой посты писать, а как по профессиональной деятельности спросишь, так никто и не знает оказывается :))
|
|||
5
acsent
02.09.11
✎
17:38
|
третий параметр "все" - это как раз для кроссстаблицы
|
|||
6
acsent
02.09.11
✎
17:38
|
Имя нруппировки - можно не указывать
|
|||
7
azernot
02.09.11
✎
17:48
|
Я для себя это как-то определил с помощью примеров. Понял на каком-то интуитивном внутреннем уровне, объянить постороннему не возьмусь - боюсь ошибиться.
Вот мой пример: Есть таблица данных !!!!!! ААААА 11111 22222 33333 БББББ 11111 22222 ВВВВВ 11111 ##### ААААА 22222 33333 БББББ 33333 ВВВВВ 11111 33333 44444 $$$$$ БББББ 44444 22222 33333 ВВВВВ 11111 22222 44444 (ресурс для каждой строки равен 1) Запрос ВЫБРАТЬ "!!!!!" КАК Символ, "ААААА" КАК Буква, "11111" КАК Цифра, 1 КАК Ресурс ПОМЕСТИТЬ Группировки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "!!!!!", "ААААА", "22222", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "!!!!!", "ААААА", "33333", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "!!!!!", "БББББ", "11111", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "!!!!!", "БББББ", "22222", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "!!!!!", "ВВВВВ", "11111", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "#####", "ААААА", "33333", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "#####", "ААААА", "22222", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "#####", "БББББ", "33333", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "#####", "ВВВВВ", "11111", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "#####", "ВВВВВ", "44444", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "#####", "ВВВВВ", "33333", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "$$$$$", "БББББ", "44444", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "$$$$$", "БББББ", "22222", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "$$$$$", "БББББ", "33333", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "$$$$$", "ВВВВВ", "11111", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "$$$$$", "ВВВВВ", "44444", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "$$$$$", "ВВВВВ", "22222", 1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Группировки.Символ КАК Символ, Группировки.Буква КАК Буква, Группировки.Цифра КАК Цифра, Группировки.Ресурс КАК Ресурс ИЗ Группировки КАК Группировки ИТОГИ СУММА(Ресурс) ПО ОБЩИЕ, Символ, Буква, Цифра Обработка результатов запроса ВыборкаОбщихИтогов = РезЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ВыборкаОбщихИтогов.Следующий(); ВыборкаПоСимволам = ВыборкаОбщихИтогов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Символ", "Все"); Пока ВыборкаПоСимволам.Следующий() Цикл Сообщить("По символам. Символ = "+ ВыборкаПоСимволам.Символ + "; Буква = "+ВыборкаПоСимволам.Буква + "; Цифра = "+ВыборкаПоСимволам.Цифра +"; Сумма итога = "+ ВыборкаПоСимволам.Ресурс); ВыборкаПоСимволамБуквам = ВыборкаПоСимволам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСимволамБуквам.Следующий() Цикл Сообщить("По символам буквам. Символ = "+ ВыборкаПоСимволамБуквам.Символ + "; Буква = "+ВыборкаПоСимволамБуквам.Буква + "; Цифра = "+ВыборкаПоСимволамБуквам.Цифра +"; Сумма итога = "+ ВыборкаПоСимволамБуквам.Ресурс); ВыборкаПоСимволамБуквамЦифрам = ВыборкаПоСимволамБуквам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСимволамБуквамЦифрам.Следующий() Цикл Сообщить("По символам буквам цифрам. Символ = "+ ВыборкаПоСимволамБуквамЦифрам.Символ + "; Буква = "+ВыборкаПоСимволамБуквамЦифрам.Буква + "; Цифра = "+ВыборкаПоСимволамБуквамЦифрам.Цифра +"; Сумма итога = "+ ВыборкаПоСимволамБуквамЦифрам.Ресурс); КонецЦикла; КонецЦикла; КонецЦикла; ВыборкаПоВсемБуквам = ВыборкаОбщихИтогов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Буква"); Пока ВыборкаПоВсемБуквам.Следующий() Цикл Сообщить("Все буквы. Символ = "+ ВыборкаПоВсемБуквам.Символ + "; Буква = "+ВыборкаПоВсемБуквам.Буква + "; Цифра = "+ВыборкаПоВсемБуквам.Цифра +"; Сумма итога = "+ ВыборкаПоВсемБуквам.Ресурс); ВыборкаПоВсемЦифрам = ВыборкаПоВсемБуквам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Цифра", "Все"); //В выборке будут все значения цифр встречающиеся в запросе, хотя ресурсы будут посчитаны с учётом группировки по буквам Пока ВыборкаПоВсемЦифрам.Следующий() Цикл Сообщить("Все цифры. Символ = "+ ВыборкаПоВсемЦифрам.Символ + "; Буква = "+ВыборкаПоВсемЦифрам.Буква + "; Цифра = "+ВыборкаПоВсемЦифрам.Цифра +"; Сумма итога = "+ ВыборкаПоВсемЦифрам.Ресурс); ВыборкаПоСимволам = ВыборкаПоВсемЦифрам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Символ", "Буква"); //В выборке будут все только символы встречающиеся на уровне буквы, т.е. не только те, которые присутствуют для текущей Цифры, но и не все встречающиеся в запросе Пока ВыборкаПоСимволам.Следующий() Цикл Сообщить("Все символы. Символ = "+ ВыборкаПоСимволам.Символ + "; Буква = "+ВыборкаПоСимволам.Буква + "; Цифра = "+ВыборкаПоСимволам.Цифра +"; Сумма итога = "+ ВыборкаПоСимволам.Ресурс); КонецЦикла; КонецЦикла; КонецЦикла; Результат в окне сообщений: По символам. Символ = !!!!!; Буква = ; Цифра = ; Сумма итога = 6 По символам буквам. Символ = !!!!!; Буква = ААААА; Цифра = ; Сумма итога = 3 По символам буквам цифрам. Символ = !!!!!; Буква = ААААА; Цифра = 11111; Сумма итога = 1 По символам буквам цифрам. Символ = !!!!!; Буква = ААААА; Цифра = 22222; Сумма итога = 1 По символам буквам цифрам. Символ = !!!!!; Буква = ААААА; Цифра = 33333; Сумма итога = 1 По символам буквам. Символ = !!!!!; Буква = БББББ; Цифра = ; Сумма итога = 2 По символам буквам цифрам. Символ = !!!!!; Буква = БББББ; Цифра = 11111; Сумма итога = 1 По символам буквам цифрам. Символ = !!!!!; Буква = БББББ; Цифра = 22222; Сумма итога = 1 По символам буквам. Символ = !!!!!; Буква = ВВВВВ; Цифра = ; Сумма итога = 1 По символам буквам цифрам. Символ = !!!!!; Буква = ВВВВВ; Цифра = 11111; Сумма итога = 1 По символам. Символ = #####; Буква = ; Цифра = ; Сумма итога = 6 По символам буквам. Символ = #####; Буква = ААААА; Цифра = ; Сумма итога = 2 По символам буквам цифрам. Символ = #####; Буква = ААААА; Цифра = 22222; Сумма итога = 1 По символам буквам цифрам. Символ = #####; Буква = ААААА; Цифра = 33333; Сумма итога = 1 По символам буквам. Символ = #####; Буква = БББББ; Цифра = ; Сумма итога = 1 По символам буквам цифрам. Символ = #####; Буква = БББББ; Цифра = 33333; Сумма итога = 1 По символам буквам. Символ = #####; Буква = ВВВВВ; Цифра = ; Сумма итога = 3 По символам буквам цифрам. Символ = #####; Буква = ВВВВВ; Цифра = 11111; Сумма итога = 1 По символам буквам цифрам. Символ = #####; Буква = ВВВВВ; Цифра = 33333; Сумма итога = 1 По символам буквам цифрам. Символ = #####; Буква = ВВВВВ; Цифра = 44444; Сумма итога = 1 По символам. Символ = $$$$$; Буква = ; Цифра = ; Сумма итога = 6 По символам буквам. Символ = $$$$$; Буква = БББББ; Цифра = ; Сумма итога = 3 По символам буквам цифрам. Символ = $$$$$; Буква = БББББ; Цифра = 22222; Сумма итога = 1 По символам буквам цифрам. Символ = $$$$$; Буква = БББББ; Цифра = 33333; Сумма итога = 1 По символам буквам цифрам. Символ = $$$$$; Буква = БББББ; Цифра = 44444; Сумма итога = 1 По символам буквам. Символ = $$$$$; Буква = ВВВВВ; Цифра = ; Сумма итога = 3 По символам буквам цифрам. Символ = $$$$$; Буква = ВВВВВ; Цифра = 11111; Сумма итога = 1 По символам буквам цифрам. Символ = $$$$$; Буква = ВВВВВ; Цифра = 22222; Сумма итога = 1 По символам буквам цифрам. Символ = $$$$$; Буква = ВВВВВ; Цифра = 44444; Сумма итога = 1 Все буквы. Символ = ; Буква = ААААА; Цифра = ; Сумма итога = 5 Все цифры. Символ = ; Буква = ААААА; Цифра = 11111; Сумма итога = 1 Все символы. Символ = !!!!!; Буква = ААААА; Цифра = 11111; Сумма итога = 1 Все символы. Символ = #####; Буква = ААААА; Цифра = 11111; Сумма итога = Все цифры. Символ = ; Буква = ААААА; Цифра = 22222; Сумма итога = 2 Все символы. Символ = !!!!!; Буква = ААААА; Цифра = 22222; Сумма итога = 1 Все символы. Символ = #####; Буква = ААААА; Цифра = 22222; Сумма итога = 1 Все цифры. Символ = ; Буква = ААААА; Цифра = 33333; Сумма итога = 2 Все символы. Символ = !!!!!; Буква = ААААА; Цифра = 33333; Сумма итога = 1 Все символы. Символ = #####; Буква = ААААА; Цифра = 33333; Сумма итога = 1 Все цифры. Символ = ; Буква = ААААА; Цифра = 44444; Сумма итога = Все буквы. Символ = ; Буква = БББББ; Цифра = ; Сумма итога = 6 Все цифры. Символ = ; Буква = БББББ; Цифра = 11111; Сумма итога = 1 Все символы. Символ = !!!!!; Буква = БББББ; Цифра = 11111; Сумма итога = 1 Все символы. Символ = #####; Буква = БББББ; Цифра = 11111; Сумма итога = Все символы. Символ = $$$$$; Буква = БББББ; Цифра = 11111; Сумма итога = Все цифры. Символ = ; Буква = БББББ; Цифра = 22222; Сумма итога = 2 Все символы. Символ = !!!!!; Буква = БББББ; Цифра = 22222; Сумма итога = 1 Все символы. Символ = #####; Буква = БББББ; Цифра = 22222; Сумма итога = Все символы. Символ = $$$$$; Буква = БББББ; Цифра = 22222; Сумма итога = 1 Все цифры. Символ = ; Буква = БББББ; Цифра = 33333; Сумма итога = 2 Все символы. Символ = !!!!!; Буква = БББББ; Цифра = 33333; Сумма итога = Все символы. Символ = #####; Буква = БББББ; Цифра = 33333; Сумма итога = 1 Все символы. Символ = $$$$$; Буква = БББББ; Цифра = 33333; Сумма итога = 1 Все цифры. Символ = ; Буква = БББББ; Цифра = 44444; Сумма итога = 1 Все символы. Символ = !!!!!; Буква = БББББ; Цифра = 44444; Сумма итога = Все символы. Символ = #####; Буква = БББББ; Цифра = 44444; Сумма итога = Все символы. Символ = $$$$$; Буква = БББББ; Цифра = 44444; Сумма итога = 1 Все буквы. Символ = ; Буква = ВВВВВ; Цифра = ; Сумма итога = 7 Все цифры. Символ = ; Буква = ВВВВВ; Цифра = 11111; Сумма итога = 3 Все символы. Символ = !!!!!; Буква = ВВВВВ; Цифра = 11111; Сумма итога = 1 Все символы. Символ = #####; Буква = ВВВВВ; Цифра = 11111; Сумма итога = 1 Все символы. Символ = $$$$$; Буква = ВВВВВ; Цифра = 11111; Сумма итога = 1 Все цифры. Символ = ; Буква = ВВВВВ; Цифра = 22222; Сумма итога = 1 Все символы. Символ = !!!!!; Буква = ВВВВВ; Цифра = 22222; Сумма итога = Все символы. Символ = #####; Буква = ВВВВВ; Цифра = 22222; Сумма итога = Все символы. Символ = $$$$$; Буква = ВВВВВ; Цифра = 22222; Сумма итога = 1 Все цифры. Символ = ; Буква = ВВВВВ; Цифра = 33333; Сумма итога = 1 Все символы. Символ = !!!!!; Буква = ВВВВВ; Цифра = 33333; Сумма итога = Все символы. Символ = #####; Буква = ВВВВВ; Цифра = 33333; Сумма итога = 1 Все символы. Символ = $$$$$; Буква = ВВВВВ; Цифра = 33333; Сумма итога = Все цифры. Символ = ; Буква = ВВВВВ; Цифра = 44444; Сумма итога = 2 Все символы. Символ = !!!!!; Буква = ВВВВВ; Цифра = 44444; Сумма итога = Все символы. Символ = #####; Буква = ВВВВВ; Цифра = 44444; Сумма итога = 1 Все символы. Символ = $$$$$; Буква = ВВВВВ; Цифра = 44444; Сумма итога = 1 Думаю, если возьмёшь и поиграешься, то тоже для себя что-то прояснишь. |
|||
8
PR
02.09.11
✎
17:50
|
(5) Все понятно до тех пор, пока выводишь одну группировку для колонок, просто для нее указываешь "ВСЕ".
А если нужно в колонках вывести две группировки, что писать в последней выборке (Выборка3 в моем примере)? Выборка1 = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Клиент"); Пока Выборка1.Следующий() Цикл Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Организация", "ВСЕ"); Пока Выборка2.Следующий() Цикл Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Подразделение"); Пока Выборка3.Следующий() Цикл КонецЦикла; КонецЦикла; КонецЦикла; |
|||
9
Ёпрст
02.09.11
✎
17:50
|
(0) второй вообще никак не используется и нахрен он нужен - не ясно.
|
|||
10
PR
02.09.11
✎
17:52
|
(9) Да ну! Вообще-то в нем указываешь, по каким полям обходить группировки.
|
|||
11
azernot
02.09.11
✎
17:55
|
В третьем параметре указываешь перечень группировок с коотрых собирать значения группировок. Т.е. Если в (8) Нужно в Выборке3 перебрать все подразделения для клиента независимо от того, если ли такие подразделения для текущей организации нудно указать Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Подразделение", "Клиент");
|
|||
12
PR
02.09.11
✎
18:00
|
(11) Не так.
В Выборке3 нужно выбрать все подразделения для организации, независимо от того, были ли они в клиенте. |
|||
13
azernot
02.09.11
✎
18:03
|
(12) Тогда у тебя в (8) правильный код..
|
|||
14
PR
02.09.11
✎
18:05
|
(13) Так то и странно, что код правильный, а не получается.
Лесенка выводится. |
|||
15
azernot
02.09.11
✎
18:24
|
(14) Да, видимо никак... Нужно формировать отдельный список всех подразделений для организаций, перебирать его и юзать "НайтиСледующий"
|
|||
16
PR
02.09.11
✎
18:33
|
(15) Да так и сделали примерно.
Обыдна просто, что не работает o_O |
|||
17
PR
02.09.11
✎
18:41
|
Так, кстати и осталось покрыто мраком, что значит указание во втором и третьем параметрах нескольких группировок через запятую.
Например Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Клиент, Подразделение", "ВСЕ, "); |
|||
18
PR
02.09.11
✎
19:55
|
Самый простой вариант обойтись малой кровью видимо такой
Выборка1 = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Клиент"); Пока Выборка1.Следующий() Цикл Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Организация", "ВСЕ"); Пока Выборка2.Следующий() Цикл Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Подразделение", "ВСЕ"); Пока Выборка3.Следующий() Цикл //Если здесь подразделение, не входящее в список подразделений для этой организации, то пропускаем КонецЦикла; КонецЦикла; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |