|   |   | 
| 
 | Глючит выражение для расчета ресурсов СКД | ☑ | ||
|---|---|---|---|---|
| 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. То есть если попадаются такие значения, она их игнорирует.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |