| 
    
            
         
         | 
    
    
  | 
Как правильно работать с NULL при возврате МАКСИМУМ | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        slitov    
     26.09.17 
            ✎
    15:50 
 | 
         
        Добрый день коллеги, тут параллельно готовлюсь к сертификации на спеца, по основной работе необходимо написать функцию, которая возвращает либо число, либо 0. Но если в запросе использовать МАКСИМУМ, тогда ЕСТЬNULL(..., ...) не отрабатывает. Как правильно обработать данные в таком запросе:
 
        
 
1. Положить запрос во временную таблицу и во втором запросе проверить на NULL 2. Или далее в условии если произвести сравнение ВыборкаДетальныеЗаписи.НомерПаллеты = NULL (проверил, возвращает истину) Насколько я знаю, NULL нельзя сравнивать. Подскажите как лучше поступить, вдруг на экзамене придется делать такой запрос.  | 
|||
| 
    1
    
        Ёпрст    
     гуру 
    26.09.17 
            ✎
    15:53 
 | 
         
        (0) дык, там null-а никогда не будет. Какой смысл пихать туда ЕстьNULL ?     
         | 
|||
| 
    2
    
        slitov    
     26.09.17 
            ✎
    15:54 
 | 
         
        (1) Ну эт понятно, как правильно тогда выполнить то?     
         | 
|||
| 
    3
    
        Ёпрст    
     гуру 
    26.09.17 
            ✎
    15:56 
 | 
         
        (2) НомерПаллеты, тип Число ? Составной тип ?     
         | 
|||
| 
    4
    
        Ёпрст    
     гуру 
    26.09.17 
            ✎
    15:57 
 | 
         
        если число, то просто Максимум(НомерПаллеты) как НомерПаллеты.
 
        усё  | 
|||
| 
    5
    
        slitov    
     26.09.17 
            ✎
    15:57 
 | 
         
        Номер это число     
         | 
|||
| 
    6
    
        Филиал-msk    
     26.09.17 
            ✎
    15:58 
 | 
         
        (1) Будет, если выборка пустая     
         | 
|||
| 
    7
    
        Филиал-msk    
     26.09.17 
            ✎
    15:58 
 | 
         
        В смысле вся колонка, не аргумент максимума     
         | 
|||
| 
    8
    
        slitov    
     26.09.17 
            ✎
    15:59 
 | 
         
        (4) Долее мне надо вернуть значение 0 из функции, как правильно обработать результат? Не раз слышал, что NULL сравнивать нельзя.     
         | 
|||
| 
    9
    
        Ёпрст    
     гуру 
    26.09.17 
            ✎
    16:00 
 | 
         
        (8) 
 
        Выборка = Запрос.Выполнить().Выбрать(): Если Выборка.Следующий() Возврат Выборка.НомерПалетты;КонецЕсли; Возврат 0;  | 
|||
| 
    10
    
        slitov    
     26.09.17 
            ✎
    16:03 
 | 
         
        (6) Нифига вот что имею: 
 
        РезультатЗапроса.Пустой() Ложь Булево (9) Так в выборке есть одно значение, которое NULL, тогда выборка NULL и вернет (((  | 
|||
| 
    11
    
        Ёпрст    
     гуру 
    26.09.17 
            ✎
    16:05 
 | 
         
        (10) 
 
        да ё Возврат ?(ЗначениеЗаполнено(Выборка.НомерПалетты,Выборка.НомерПалетты,0);  | 
|||
| 
    12
    
        Филиал-msk    
     26.09.17 
            ✎
    16:06 
 | 
         
        (10) ЕСТЬNULL(МАКСИМУМ(яШтрихКодыПаллет.НомерПаллеты), 0)     
         | 
|||
| 
    13
    
        Филиал-msk    
     26.09.17 
            ✎
    16:07 
 | 
         
        У тебя под условия отбора не попадает ни одна строка, поэтому максимум на пустой выборке возвращает тебе null     
         | 
|||
| 
    14
    
        mehfk    
     26.09.17 
            ✎
    16:11 
 | 
         
        (0) Убери агрегатную функцию и сделай упорядочить по НомерПаллеты убыв     
         | 
|||
| 
    15
    
        mehfk    
     26.09.17 
            ✎
    16:12 
 | 
         
        + первые 1     
         | 
|||
| 
    16
    
        slitov    
     26.09.17 
            ✎
    16:16 
 | 
         
        (11) Спасибо, мне кажется так правильней всего. 
 
        (12) Хотя и этот вариант рабочий (14) И это тоже хороший вариант Совсем запутался, какой вариант из всех оптимальнее )))  | 
|||
| 
    17
    
        Cyberhawk    
     26.09.17 
            ✎
    16:27 
 | 
         
        +(12)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |