Имя: Пароль:
1C
1С v8
Объединение запросов
,
0 Black Dragon
 
15.01.14
13:46
Доброго дня!

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

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

ОБЪЕДИНИТЬ

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

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры,
    ТоварыВРезервеНаСкладахОстатки.Склад,
    0 КАК ОбщийОстаток,
    0 КАК СвободныйОстаток,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ОстатокВРезерве
ИЗ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата, ) КАК ТоварыВРезервеНаСкладахОстатки
ГДЕ
    ТоварыВРезервеНаСкладахОстатки.Номенклатура = &Номенклатура
    И ТоварыВРезервеНаСкладахОстатки.Склад В(&Склады);

СГРУППИРОВАТЬ ПО
    ХарактеристикаНоменклатуры,
    Склад

ИТОГИ
    СУММА(ОбщийОстаток),
    СУММА(СвободныйОстаток),
    СУММА(ОстатокВРезерве)
ПО
    ОБЩИЕ,
    ХарактеристикаНоменклатуры,
    Склад

Что не так?
1 Wobland
 
15.01.14
13:46
а конструктор тебе русским языком скажет
2 Maxus43
 
15.01.14
13:47
все запросы с объеденить во вложенный сначала.
Группировки и итоги потом уже
3 Defender aka LINN
 
15.01.14
13:47
(0) Ты нам и расскажи - что не так-то?
4 vicof
 
15.01.14
13:47
объединения нужно завернуть в отдельный вложенный запрос
5 zak555
 
15.01.14
13:50
(0) делай через соединение
6 Black Dragon
 
15.01.14
13:50
(4) интересно, а не в первом из объединяемых нужно группировать? мысль странная посещает периодически? вот решил спросить грамотных людей:)
7 Black Dragon
 
15.01.14
13:51
а как один алиас на несколько полей кинуть?
8 Рэйв
 
15.01.14
13:52
(7)В верхнем запросе назначай
9 vicof
 
15.01.14
13:52
(6) читай еще раз (2) и (4)
10 Black Dragon
 
15.01.14
13:53
Что самое противное, так вот этот работает, но не сворачивает по строкам!

    ОграничениеПоСкладуОбщиеОстатки     = ?(НЕ ЗначениеЗаполнено(СписокСкладов), "", " И ТоварыНаСкладахОстатки.Склад В (&Склады) " );
    ОграничениеПоСкладуСвободныеОстатки = ?(НЕ ЗначениеЗаполнено(СписокСкладов), "", " И СвободныеОстаткиОстатки.Склад В (&Склады) " );
    ОграничениеПоСкладуОстаткиВРезерве  = ?(НЕ ЗначениеЗаполнено(СписокСкладов), "", " И ТоварыВРезервеНаСкладахОстатки.Склад В (&Склады) " );
    
    ТекстЗапроса = "
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ВЫБОР
    |        КОГДА ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры Есть NULL ТОГДА
    |        &ПустаяХарактеристика
    |        ИНАЧЕ ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
    |    КОНЕЦ КАК ХарактеристикаНоменклатуры,
    |    ТоварыНаСкладахОстатки.Склад,
    |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОбщийОстаток,
    |    0 КАК СвободныйОстаток,
    |    0 КАК ОстатокВРезерве
    |    ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК ТоварыНаСкладахОстатки
    |    ГДЕ
    |    ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура" + ОграничениеПоСкладуОбщиеОстатки + "
    |
    |    ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ВЫБОР
    |        КОГДА СвободныеОстаткиОстатки.ХарактеристикаНоменклатуры Есть NULL ТОГДА
    |        &ПустаяХарактеристика
    |        ИНАЧЕ СвободныеОстаткиОстатки.ХарактеристикаНоменклатуры
    |    КОНЕЦ,
    |    СвободныеОстаткиОстатки.Склад,
    |    0,
    |    СвободныеОстаткиОстатки.КоличествоОстаток,
    |    0
    |    ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(&Дата, ) КАК СвободныеОстаткиОстатки
    |ГДЕ
    |    СвободныеОстаткиОстатки.Номенклатура = &Номенклатура" + ОграничениеПоСкладуСвободныеОстатки + "
    |
    |    ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ВЫБОР
    |        КОГДА ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры Есть NULL ТОГДА
    |        &ПустаяХарактеристика
    |    ИНАЧЕ ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
    |    КОНЕЦ,
    |    ТоварыВРезервеНаСкладахОстатки.Склад,
    |    0,
    |    0,
    |    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток
    |    ИЗ
    |    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
    |ГДЕ
    |    ТоварыВРезервеНаСкладахОстатки.Номенклатура = &Номенклатура" + ОграничениеПоСкладуОстаткиВРезерве + "
11 1dvd
 
15.01.14
13:54
(10) самое время познакомиться с временными таблицами
12 zak555
 
15.01.14
13:54
(10) параметры виртуальных таблиц не любишь ?
13 Black Dragon
 
15.01.14
13:55
Вроде как сгруппировать требуется? И итоги же?
14 1dvd
 
15.01.14
13:56
(13) группировка произойдет в каждом из твоих запросов отдельно. А потом только объединится
15 vicof
 
15.01.14
13:56
(13) пилять
ВЫБРАТЬ * ИЗ (ВЫБРАТЬ...ОБЪЕДИНИТЬ ВЫБРАТЬ...ОБЪЕДИНИТЬ ВЫБРАТЬ)
16 Black Dragon
 
15.01.14
13:56
Дык это же по анологи с общим модулем УправлениеЗапасами КА!
Там запрос навернут сильно! ))) хочу упростить и добавить адресные ячейки ыщо!
17 Black Dragon
 
15.01.14
13:58
(15) да понятно же! не нервничай!
18 vicof
 
15.01.14
13:59
(17) если понятно, это у тебя уже должно работать
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn