Имя: Пароль:
1C
1С v8
Помогите с запросом, выдает ошибку при определении разницы между ЕСТЬNULL
0 slafor
 
09.12.22
00:01
Есть большой запрос, где много временных таблиц. В одном месте запроса я соединяю одну таблицу с двумя другими левым соединением. В обеих таблицах можно нарваться на значения типа NULL, поэтому поле у меня пишется так:

ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) > ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0)
   ТОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) -
      ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0)
   ИНАЧЕ 0 КОНЕЦ КАК Остаток

Пишет ошибку "Неверные параметры "-"".

Меняю этот код на совсем уж "извращенный":

ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) >
   ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0)
      ТОГДА (ВЫБОР КОГДА ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток ЕСТЬ NULL
       ТОГДА 0 ИНАЧЕ ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток КОНЕЦ)
       - (ВЫБОР КОГДА ДополнительныеРеквизитыМинимальныйОстаток.Значение ЕСТЬ NULL
       ТОГДА 0 ИНАЧЕ ДополнительныеРеквизитыМинимальныйОстаток.Значение КОНЕЦ)
      ИНАЧЕ 0 КОНЕЦ КАК Остаток

но ошибка такая же.

Почему у меня не получается вычесть одно поле (число, а если NULL, то 0) из другого (тоже число)?
1 RomanYS
 
09.12.22
00:06
Делай Выразить. В допрекизитах могут быть например ссылочные типы, поэтому без выразить ошибка
2 slafor
 
09.12.22
00:10
(1) Уже нашел в инете, но все равно огромное спасибо!

ВЫРАЗИТЬ(ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) КАК ЧИСЛО(15,2)) - ВЫРАЗИТЬ(ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0) КАК ЧИСЛО(15,2)) -
это РАБОТАЕТ!!!

Но что интересно, почему же он тогда не выдает ошибку на сравнении:
ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) > ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0) ?

Ведь сравнивать тоже можно только числа?
3 RomanYS
 
09.12.22
00:12
(2) сравнивать можно не только числа
4 ASU_Diamond
 
09.12.22
07:03
Я бы предложил сразу при формировании временной таблицы избавляться от Null
5 НафНаф
 
09.12.22
07:36
(2) нет