Имя: Пароль:
1C
1С v8
Левое соединение дает пустую запись, а не должна.
0 woland
 
20.10.15
13:07
Пытаюсь посчитать количество в двух регистрах.
Соединяю их левым соединением.
При отсутствии записей выходит одно пустое значение. Почему такое происходит и как избавиться?

Проверяю в консоли отчетов. В коде программы выборка по такому запросу дает один результат.

Вот сам запрос:

ВЫБРАТЬ
    СУММА(ЕСТЬNULL(ТоварыПолученныеОбороты.КоличествоПриход, 0) - ЗакупкиОбороты.КоличествоОборот) КАК Количество
ИЗ
    РегистрНакопления.Закупки.Обороты(
            ,
            ,
            ,
            Номенклатура = &Номенклатура
                И ДоговорКонтрагента = &Договор) КАК ЗакупкиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыПолученные.Обороты(
                ,
                ,
                ,
                ДоговорКонтрагента = &Договор
                    И Номенклатура = &Номенклатура) КАК ТоварыПолученныеОбороты
        ПО ЗакупкиОбороты.Номенклатура = ТоварыПолученныеОбороты.Номенклатура
            И ЗакупкиОбороты.ДоговорКонтрагента = ТоварыПолученныеОбороты.ДоговорКонтрагента
1 Гёдза
 
20.10.15
13:09
оба запроса дают пустой результат. Отсюда нулл
2 Гёдза
 
20.10.15
13:09
ибо СУММА (запрос не выдающий результата) = NULL
3 Лефмихалыч
 
20.10.15
13:13
потому, что у тебя в выборке агрегатная функция, а они возвращают что-то даже при пустой выборке
4 Ненавижу 1С
 
гуру
20.10.15
13:23
добавь

СГРУППИРОВАТЬ ПО ЗакупкиОбороты.Номенклатура
5 Лефмихалыч
 
20.10.15
13:28
(4) просто так - из уваженья к огню?
6 Ненавижу 1С
 
гуру
20.10.15
13:31
(5) у него все равно отбор по Номенклатура = &Номенклатура стоит
7 Лефмихалыч
 
20.10.15
13:34
(6) а, ну да
8 woland
 
20.10.15
13:43
Понял. Спасибо.