Имя: Пароль:
1C
1С v8
как три строки запросом выдать в одну, но в три столбца
0 Luganchanin
 
17.06.15
18:50
Добрый день, люди

Есть запрос:
ВЫБРАТЬ
    СвободныеОстаткиОстатки.Номенклатура,
    СвободныеОстаткиОстатки.Характеристика,
    СвободныеОстаткиОстатки.Склад КАК Склад,
    СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличииОстаток
ИЗ
    РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки

Результат:
Номенклатура    Склад    ВНаличииОстаток
1041-002RS    Первый    4
1041-002RS    Второй    7
1041-002RS    Третий    484


можно ли написать запрос таким образом чтобы по одной позиции номенклатуры суммы по складам шли в одной строке:

Номенклатура    ОстатокПервыйСклад    ОстатокВторойСклад    ОстатокТретийСклад
1041-002RS    4            7            484
1 Господин ПЖ
 
17.06.15
18:54
это в запросе надо или в отчете?
2 DTXqueque
 
17.06.15
18:56
Три левых соединения
3 Господин ПЖ
 
17.06.15
18:57
(2) а если 4 склада?
4 Господин ПЖ
 
17.06.15
18:57
скд сама "шахматку" нарисует
5 DTXqueque
 
17.06.15
19:02
(3) То четыре :)

В запросе по-другому никак.
6 DTXqueque
 
17.06.15
19:03
Можно ещё программно запрос состряпать
7 Luganchanin
 
17.06.15
19:07
хочется именно в запросе. потому как позиций номенклатуры три десятка тысяч, и обрабатывать каждую хочется за одну итерацию.

(2) про соеденение я и сам думал, но не пойму что и соеденять чтобы получить желаемое

(3) количество складов фиксированно и не велико. два или три. может быть нужен будет результат в виде: первый, второй+третий
8 DTXqueque
 
17.06.15
19:12
(7) Номенклатуру с тремя таблицами остатков с отбора по соответствующим складам.
9 kosts
 
17.06.15
19:54
Убрать из запроса


СвободныеОстаткиОстатки.Характеристика,
СвободныеОстаткиОстатки.Склад КАК Склад,
СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличииОстаток


Добавить


Выбор Когда Склад = &Склад1 Тогда ВНаличииОстаток Иначе 0 Конец Как ОстатокПервыйСклад,
и т.д.


Затем сделать группировку и суммирование
10 zak555
 
17.06.15
19:55
(9) чем отличается от (2) ?
11 kosts
 
17.06.15
20:12
(10) Тем, что нет левых соединения
12 Luganchanin
 
17.06.15
23:21
(9) идея хорошая, но увы
Запрос:
ВЫБРАТЬ
    Выбор Когда Склад = &Склад1 Тогда ВНаличииОстаток Иначе 0 Конец Как ОстатокПервыйСклад,
    Выбор Когда Склад = &Склад2 Тогда ВНаличииОстаток Иначе 0 Конец Как ОстатокВторойСклад,
    Выбор Когда Склад = &Склад3 Тогда ВНаличииОстаток Иначе 0 Конец Как ОстатокТретийСклад
ИЗ
    РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
ГДЕ
    СвободныеОстаткиОстатки.Номенклатура = &Номенклатура

Даёт результат в три строки:

ОстатокПервыйСклад    ОстатокВторойСклад    ОстатокТретийСклад
        4
484        
    4    

по одной на каждый склад
13 Zhuravlik
 
17.06.15
23:33
(12) так сгруппировать надо
14 Господин ПЖ
 
17.06.15
23:34
(12) тебе же писали про группировку и сумма()
15 Luganchanin
 
18.06.15
01:21
(14) (13) (9) А таки да! спасибо, получилось!
правда запрос получился не очень элегантный, но тем не менее

ВЫБРАТЬ
    СвободныеОстаткиОстатки.Номенклатура,
    СвободныеОстаткиОстатки.Характеристика,
    СУММА(ВЫБОР
            КОГДА СвободныеОстаткиОстатки.Склад = &Склад1
                ТОГДА СвободныеОстаткиОстатки.ВНаличииОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ОстатокСклад1,
    СУММА(ВЫБОР
            КОГДА СвободныеОстаткиОстатки.Склад = &Склад2
                ТОГДА СвободныеОстаткиОстатки.ВНаличииОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ОстатокСклад2,
    СУММА(ВЫБОР
            КОГДА СвободныеОстаткиОстатки.Склад = &Склад3
                ТОГДА СвободныеОстаткиОстатки.ВНаличииОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ОстатокСклад3
ИЗ
    РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки

СГРУППИРОВАТЬ ПО
    СвободныеОстаткиОстатки.Номенклатура,
    СвободныеОстаткиОстатки.Характеристика
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.