Имя: Пароль:
1C
1С v8
правильное написание сравнений в запросе
0 Strimteam
 
15.07.15
12:00
Появился вопрос "правильного" написания кода на сравнения в запросе.
Первый вопрос:
Есть 3 варианта:
А) - Поле ЕСТЬ НЕ NULL
Б) - НЕ Поле ЕСТЬ NULL
В) - ЕстьNULL(Поле,1) <> 1

Второй вопрос:
А) Когда Найти(Поле,"А") > 0 Тогда
Б) Когда Найти(Поле,"А") Тогда

Напишите ответ - какой вариант поддерживаете вы, или какой пишите чаще в 1С.
Любые аргументы только приветствуются.
1 Strimteam
 
15.07.15
12:06
На сайте 1С среди "проблем" описан вариант А для первого вопроса
http://v8.1c.ru/predpriyatie/typical_problems_Req.htm
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
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан