|
Глючит выражение для расчета ресурсов СКД | ☑ | ||
---|---|---|---|---|
0
davlen86
28.02.18
✎
13:32
|
Доброго дня, уважаемые форумчане! Тут у меня возникла неожиданная ошибка, особенность, не могу понять, прошу помочи гуру 1С. Есть отчет СКД и у него есть ресурс в поле выражение, которого если написать:
Выбор Когда Сумма(Трафик) <> Null Тогда Сумма(Трафик) Иначе Сумма(ТрафикРП) Конец ИЛИ ЕстьNull(Сумма(Трафик),Сумма(ТрафикРП)) будут разные данные по группировке. Правильно работает ЕстьNull(), но мне это кажется странным по логике же они одинаковы. |
|||
1
Buster007
28.02.18
✎
13:46
|
с NULL лучше ничего не сравнивать и проблем не будет
|
|||
2
davlen86
28.02.18
✎
13:50
|
(1) Спасибо за совет, но как же быть если без этого не обойтись?
|
|||
3
Малыш Джон
28.02.18
✎
13:53
|
(0) потому что любое условие с NULL дает ЛОЖЬ, даже NULL = NULL дает ЛОЖЬ.
для этого и придумали условие Есть NULL: КОГДА НЕ Сумма(Трафик) Есть Null ТОГДА |
|||
4
Гипервизор
28.02.18
✎
13:57
|
(3) NULL = NULL дает NULL в запросе и ИСТИНА в коде
|
|||
5
Ненавижу 1С
гуру
28.02.18
✎
13:57
|
можно конечно писать: КОГДА НЕ Сумма(Трафик) Есть Null ТОГДА
но имхо, запись ЕстьNull(Сумма(Трафик),Сумма(ТрафикРП)) лаконичней и понятней жаль 1С не реализовала COALESCE - приходится писать вложенные ЕСТЬNULL когда аргументов больше двух |
|||
6
davlen86
28.02.18
✎
13:57
|
(3) Пробовал такую же конструкцию, но результат все равно неверный
|
|||
7
Ненавижу 1С
гуру
28.02.18
✎
13:59
|
(6) не ври, эта конструкция полностью эквивалент ЕСТЬNULL
|
|||
8
davlen86
28.02.18
✎
14:01
|
(5) в моем случае еще печальнее, вложенными не обойтись или может я не догадался.
Выбор Когда Сумма(Трафик) Есть Null Тогда Сумма(Трафик) Иначе Выбор Когда Сумма(ЧекиРП) < 0 ТОгда 0 Иначе Сумма(ТрафикРП) Конец Конец Подскажите, кто знает, как такое обернуть в ЕстьNull() ? |
|||
9
Малыш Джон
28.02.18
✎
14:01
|
(4) я к тому что условие в запросе
ВЫБОР КОГДА NULL=NULL ТОГДА не выполняется |
|||
10
davlen86
28.02.18
✎
14:02
|
(7) я не вру, в моем случае он выдает неверный результат, а ЕстьNull() верный
|
|||
11
Ненавижу 1С
гуру
28.02.18
✎
14:07
|
(8) внимательней
Выбор Когда НЕ Сумма(Трафик) Есть Null Тогда Сумма(Трафик) |
|||
12
Малыш Джон
28.02.18
✎
14:08
|
(8) наверное все таки
Выбор Когда НЕ Сумма(Трафик) Есть Null Тогда Сумма(Трафик) ? |
|||
13
davlen86
28.02.18
✎
14:11
|
(11) оу, сори
|
|||
14
Ненавижу 1С
гуру
28.02.18
✎
14:15
|
(3)(4)
кстати да, на новых релизах, где можно писать в полях логические условия, легко проверить, что запрос ВЫБРАТЬ NULL = NULL КАК Поле1 дает NULL, а не ЛОЖЬ понятно, что в условиях это эквивалентно |
|||
15
Малыш Джон
28.02.18
✎
14:22
|
(14) если выбирать как поле, то любое выражение с NULL дает NULL кроме:
Ложь И NULL дает Ложь Истина ИЛИ NULL дает Истина если ничего не напутал) |
|||
16
hhhh
28.02.18
✎
14:30
|
СУММА() нормально работает с NULL. То есть если попадаются такие значения, она их игнорирует.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |