Имя: Пароль:
1C
 
sum() + sum() = 0
0 Eeakie
 
26.11.14
13:29
Добрый день.
Прямым запросом получаю текущие остатки по двум регистрам.
Типы ресурсов: "Количество" - 19.3, "ОстатокТовара" - 10.3.

    |select
    |    Заявка.iddoc as [Заявка $Документ.Заявка],
    |    $ПЛ.Товар as [Товар $Справочник.Товары],
    |    О.КоличествоОстаток as ОстатокО,
    |    ОТО.ОстатокТовараОстаток as ОстатокОТО,
    |    О.КоличествоОстаток + ОТО.ОстатокТовараОстаток as Всего
    |from
    |    $Документ.Заявка as Заявка with (nolock)
    |left join
    |    $ДокументСтроки.Заявка as СтрокиЗаявка with (nolock) on СтрокиЗаявка.iddoc = Заявка.iddoc
    |left join
    |    $Справочник.Прайс_лист as ПЛ with (nolock) on ПЛ.id = $СтрокиЗаявка.Товар
    |left join
    |    $РегистрОстатки.Ожидания(,, Фирма = :Центролаб) as О on О.Товар = $ПЛ.Товар and О.Заявка = $ВидДокумента36.Заявка + Заявка.iddoc
    |left join
    |    $РегистрОстатки.ОстаткиТоваровОбщ(,, Фирма = :Центролаб) as ОТО on ОТО.Товар = $ПЛ.Товар and ОТО.Заявка = Заявка.iddoc
    |where
    |    $Заявка.КрупнаяПартия = 1";

Предположим ОстатокО = 1, а ОстатокОТО = 0. Всего (ОстатокО + ОстатокОТО) должно же быть 1? А у меня 0.

Что это может быть такое?
1 GenAcid
 
26.11.14
13:33
1 + 0 = 1, но 1 + null = null
2 КонецЦикла
 
26.11.14
13:40
Может так
ISNULL(О.КоличествоОстаток,0) + ISNULL(ОТО.ОстатокТовараОстаток,0)
3 Eeakie
 
26.11.14
13:45
Заработало. Но тогда вопрос в том почему даёт NULL, а не 0?
4 Михаил Козлов
 
26.11.14
13:47
(3) Потому что в остатках нет.
5 Ёпрст
 
26.11.14
13:48
(3) лефт джоин потому что
6 Eeakie
 
26.11.14
13:54
(5)Как это связано?..
7 МойКодУныл
 
26.11.14
13:56
(6) Левым соединением связано, это же очевидно
8 andreymongol82
 
26.11.14
13:57
(6) Непосредственно ). Что будет в результирующей таблице, если в одной есть, строки, а в другой нет
9 КонецЦикла
 
26.11.14
13:57
(6) Если бы запись была с нулевым остатком - был бы 0
А так пустота...
10 Ёпрст
 
26.11.14
14:01
(6)
в табличке заявка у тебя

Документ Товар
док1     Валенки
док1     Сапоги
док1     Варенье

при левом соединение с табличкой O:
Документ Товар        Остаток
док1     Валенки        10

будет

Документ Товар        Остаток
док1     Валенки        10
док1     Сапоги         null
док1     Варенье        null

так понятнее ?
11 Eeakie
 
26.11.14
14:07
Разобрался. Всем спасибо.
2 + 2 = 3.9999999999999999999999999999999...