|  | правильное написание сравнений в запросе | ☑ | 
    
        | 0
    
        Strimteam   15.07.15✎ 12:00 | 
        Появился вопрос "правильного" написания кода на сравнения в запросе.
Первый вопрос:
 Есть 3 варианта:
 А) - Поле ЕСТЬ НЕ NULL
 Б) - НЕ Поле ЕСТЬ NULL
 В) - ЕстьNULL(Поле,1) <> 1
 
 Второй вопрос:
 А) Когда Найти(Поле,"А") > 0 Тогда
 Б) Когда Найти(Поле,"А") Тогда
 
 Напишите ответ - какой вариант поддерживаете вы, или какой пишите чаще в 1С.
 Любые аргументы только приветствуются.
 |  | 
    
        | 1
    
        Strimteam   15.07.15✎ 12:06 | 
        На сайте 1С среди "проблем" описан вариант А для первого вопроса
 |  | 
    
        | 2
    
        ДенисЧ   15.07.15✎ 12:09 | 
        Б
А
 |  | 
    
        | 3
    
        Ненавижу 1С   гуру 15.07.15✎ 12:10 | 
        я использую НЕ Поле ЕСТЬ NULL
вариант В) вообще не верен
 
 Когда Не Найти(Поле,"А")=0 Тогда
 или
 Когда Не Найти(Поле,"А")<>0 Тогда
 |  | 
    
        | 4
    
        Strimteam   15.07.15✎ 12:12 | 
        (3) А как относитесь к Б во втором вопросе?     |  | 
    
        | 5
    
        fisher   15.07.15✎ 12:20 | 
        1) Всегда использую Б. На А всегда косился с подозрением, хотя может оно и эквивалентно - всегда лень было это выяснять.
2) Ээээ... А что такое "Найти" в запросе?
 |  | 
    
        | 6
    
        igork1966   15.07.15✎ 12:23 | 
        (5) На мой взгляд нехорошо предполагать как конвертируется в булево значение другого типа.     |  | 
    
        | 7
    
        Strimteam   15.07.15✎ 12:27 | 
        (5) да, согласен, приношу извинения что не правильно сделал заголовок.
Это ещё один вариант, добавленный к вопросу о правильности.
 |  | 
    
        | 8
    
        igork1966   15.07.15✎ 12:28 | 
        (6) +1 
сорри мое относится ко второму вопросу
 |  | 
    
        | 9
    
        ДенисЧ   15.07.15✎ 12:28 | 
        (6) "нехорошо" в данном случае немного не то слово...     |  | 
    
        | 10
    
        fisher   15.07.15✎ 12:30 | 
        (7) А, то есть речь о "Если Найти()"? 
В Си когда-то такое было популярно (Б). Сейчас вроде повсеместно плохим стилем считается и заслуженно, по моему мнению.
 |  | 
    
        | 11
    
        fisher   15.07.15✎ 12:36 | 
        1) В - такое вообще первый раз вижу. Такое можно написать, только если про ЕСТЬ NULL не знать.     |  | 
    
        | 12
    
        Smallrat   15.07.15✎ 12:38 | 
        эээмм, а разве к NULL применимы логические операции? 
по идее НЕ NULL будет NULL
 |  | 
    
        | 13
    
        Smallrat   15.07.15✎ 12:42 | 
        а понял - это не логическая операция, это просто конструкция проверки на NULL такая     |  | 
    
        | 14
    
        Strimteam   15.07.15✎ 12:45 | 
        (12) Сам так же считал, но увидев ссылку на сайте 1С засомневался.     |  | 
    
        | 15
    
        fisher   15.07.15✎ 12:50 | 
        (13) Именно. Судя по всему, разработчики SQL решили подстраховать криворуких разработчиков и сделать на одну трудноуловимую ошибку меньше, учитывая и такой вариант синтаксиса IS NULL     |  | 
        Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший