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