Имя: Пароль:
1C
 
Запрос по оборотам из нескольких регистров накопления.
0 Lostcost333
 
05.08.18
14:37
Добрый день, такая ситуация: Необходимо в запросе получить Обороты за день по 4 регистрам. Делаю левое соединение по "Павилион", делаю проверку на NULL, а в итоге результат запроса все равно пустой... Подскажите пожалуйста, в чем дело...
1 Lostcost333
 
05.08.18
14:41
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ВЫБОР
        |        КОГДА КассаОбороты.СуммаОборот ЕСТЬ NULL
        |            ТОГДА 0
        |        ИНАЧЕ КассаОбороты.СуммаОборот
        |    КОНЕЦ КАК Касса,
        |    ВЫБОР
        |        КОГДА ПокупкиОбороты.СуммаОборот ЕСТЬ NULL
        |            ТОГДА 0
        |        ИНАЧЕ ПокупкиОбороты.СуммаОборот
        |    КОНЕЦ КАК Покупки,
        |    ВЫБОР
        |        КОГДА ПродажиОбороты.СуммаОборот ЕСТЬ NULL
        |            ТОГДА 0
        |        ИНАЧЕ ПродажиОбороты.СуммаОборот
        |    КОНЕЦ КАК Продажи,
        |    ВЫБОР
        |        КОГДА УчетОбменаТоваровОбороты.СуммаОборот ЕСТЬ NULL
        |            ТОГДА 0
        |        ИНАЧЕ УчетОбменаТоваровОбороты.СуммаОборот
        |    КОНЕЦ КАК ОбменВозврат
        |ИЗ
        |    РегистрНакопления.Касса.Обороты(&ПериодНачало, &ПериодОкончание, , ) КАК КассаОбороты
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетОбменаТоваров.Обороты(&ПериодНачало, &ПериодОкончание, , ) КАК УчетОбменаТоваровОбороты
        |        ПО КассаОбороты.Павилион = УчетОбменаТоваровОбороты.Павилион
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ПериодНачало, &ПериодОкончание, , ) КАК ПродажиОбороты
        |        ПО КассаОбороты.Павилион = ПродажиОбороты.Павилион
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Покупки.Обороты(&ПериодНачало, &ПериодОкончание, , ) КАК ПокупкиОбороты
        |        ПО КассаОбороты.Павилион = ПокупкиОбороты.Павилион
        |ГДЕ
        |    КассаОбороты.Павилион = &Павилион";    
    Запрос.УстановитьПараметр("Павилион", Объект.Павилион);
    Запрос.УстановитьПараметр("ПериодНачало", НачалоДня(Объект.Дата));
    Запрос.УстановитьПараметр("ПериодОкончание", КонецДня(Объект.Дата));
2 mmmarat
 
05.08.18
14:45
(0) Четыре запроса через ОБЪЕДИНИТЬ ВСЕ
3 sechs
 
05.08.18
14:54
Что такое "Павилион"? Какое-то животное?
4 Lostcost333
 
05.08.18
15:04
Понятия не имею, так справочник назвали)))
5 craxx
 
05.08.18
15:15
Вообще не понял зачем соединения. Четыре запроса с объединением ОБЪЕДИНИТЬ ВСЕ
6 Lostcost333
 
05.08.18
15:26
Я прошу прощения за свою глупость, но правильно я понял, что при ОБЪЕДИНИТЬ ВСЕ, Весь результат соберется в 1 колонку, но (в моем случае) 4 строки, и потом нужно просто перебирать в цикле?
7 palsergeich
 
05.08.18
15:28
Нет, можно сгрупиировать и получить столько колонок (в вашем случае - 5) сколько надо. См книгу Хрусталевой Язык запросов "1С:Предприятия 8"
Это основа основ.
8 RomanYS
 
05.08.18
15:29
(6)
Выбрать
поле как поле1,
0 как поле2
поместить ВТ
ИЗ Тз1
объединить все
Выбрать
0 как поле1,
поле как поле2
ИЗ Тз2;
ВЫбрать
сумма(поле1),
Сумма(поле2)
из вт
9 palsergeich
 
05.08.18
15:32
(8) А следующий шаг - сгруппировать по Максимум не ссылочные поля. Что бы слопнуть строки в 1.
10 Lostcost333
 
05.08.18
15:38
Огромное спасибо! (7) Обязательно прочитаю, еще раз извините за глупые вопросы.