Имя: Пароль:
1C
1С v8
Группировка по условию. Возможно ли?
0 Oleg87
 
16.04.14
23:48
Приветствую вас!

Предположим есть справочник в котором всего 2 реквизита (Реквизит1 и Реквизит2). В справочнике 5 элементов, значения реквизитов у которых соответствующие:
Рек1 Рек2
А 7
Б 0
Б 0
И 7
Г 7
Задача для строк, у которых Реквизит2 = 0 выполнить группировку по первому полю, а для остальных строк (Реквизит2 <> 0) по второму. К суммируемому полю применить функцию "Количество". Т.е результат запроса должен быть следующий:
Б 2
7 3

Мне видится вот такой запрос, но синтакс контроль его не пропускает:

ВЫБРАТЬ
    выбор когда Справочник1.Реквизит2<>0 тогда КОЛИЧЕСТВО(Справочник1.Реквизит1) иначе Справочник1.Реквизит1 конец,
    выбор когда Справочник1.Реквизит2=0 тогда КОЛИЧЕСТВО(Справочник1.Реквизит2) иначе Справочник1.Реквизит2 конец

ИЗ
    Справочник.Справочник1 КАК Справочник1

СГРУППИРОВАТЬ ПО
выбор когда Справочник1.Реквизит2<>0 тогда
    Справочник1.Реквизит2
иначе Справочник1.Реквизит1 Конец
1 Oleg87
 
16.04.14
23:52
Прошу прощения, опечатка. Результат запроса должен быть конечно же

Б 2
3 7
2 Hans
 
17.04.14
00:15
Группировку по условию сделать нельзя. В твоем случае нужно сделать примерно так:

ВЫБРАТЬ
    выбор когда Справочник1.Реквизит2<>0 тогда КОЛИЧЕСТВО(Справочник1.Реквизит1) иначе Справочник1.Реквизит1 конец,
    выбор когда Справочник1.Реквизит2=0 тогда КОЛИЧЕСТВО(Справочник1.Реквизит2) иначе Справочник1.Реквизит2 конец,
выбор когда Справочник1.Реквизит2<>0 тогда
    Справочник1.Реквизит2
иначе Справочник1.Реквизит1 как РеквизитГруппировки

ИЗ
    Справочник.Справочник1 КАК Справочник1

СГРУППИРОВАТЬ ПО
выбор когда Справочник1.Реквизит2<>0 тогда
    Справочник1.Реквизит2
иначе Справочник1.Реквизит1
3 Hans
 
17.04.14
00:16
т.е в твоем случае группировку по условию сделать можно.
4 Зойч
 
17.04.14
00:19
а не проще ли через объединить
5 Турист
 
17.04.14
00:58
не читал, но осуждаю (с) ))
6 Oleg87
 
17.04.14
11:18
Да это понятно, мне то нужно просто понять, можно ли использовать группировки по условию.
Этот набор данных создал просто для примера того что должно получиться на выходе. Естественно, конкретную задачу можно решить и объединением.
Если в яндексе вбить "сгруппировать по выбор когда", то можно увидеть, что люди такую конструкцию применяют... вот я и хочу понять, как с ней работать
(2), ваш запрос не работает по тем же причинам что и мой. Синтаксическая ошибка "поле не входит в группу"
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший