Имя: Пароль:
1C
 
Какое условие лучше использовать и есть ли разница
0 Flempy
 
17.09.24
08:25
Если Документ.Организация = "тест" и Документ.Подразделение = "Тестовое подразделение" Тогда ...

ИЛИ такое

Если Документ.Организация = "тест" Тогда
   Если Документ.Подразделение = "Тестовое подразделение" Тогда ...
1 Мультук
 
17.09.24
08:31
(0)

1) Условия проверяются Слева-Направо. В данном случае, если перовое условие ЛОЖЬ второе даже не будет вычисляться

2) Разница есть, ибо в первом случае будет одно ИНАЧЕ
а во втором два ИНАЧЕ

Если Документ.Организация = "тест" и Документ.Подразделение = "Тестовое подразделение" Тогда 

//что-то

ИНАЧЕ
    Сообщить("Неправильная организация или подразделение. Что-то не то");
КонецЕсли;


Если Документ.Организация = "тест" Тогда
   Если Документ.Подразделение = "Тестовое подразделение" Тогда 
      //что-то
   ИНАЧЕ
      Сообщить("Неправильное подразделение. ");
ИНАЧЕ
    Сообщить("Неправильная организация");    
КонецЕсли;
2 ads55
 
17.09.24
08:30
(0) "есть ли разница" - в первом случае можно получить "Ложь" в первой же строчке, а во-втором случае или в первой или во-второй, а что не понятно то?
3 программистище
 
17.09.24
08:34
"Нечем заняться – взяла начистила картошки и приготовила, соседей угости, там не знаю, кому-нибудь еще что-то сделай, помой полы, подъезд подмети." версия с цензурой

Второй вариант предполагает больше альтернатив без ИначеЕсли
Первое предпочтительно если условие выполнения одно
4 Flempy
 
17.09.24
08:33
(2) В плане оптимальности кода. Если не нужно получать "иначе" ни в одном из случаев, а лишь найти то, что проходит условие, получается лучше использовать оператор "и"?
5 Гипервизор
 
17.09.24
08:35
(4) Не занимайтесь преждевременной оптимизацией.
6 ads55
 
17.09.24
08:38
(4) в (1) посмотрите - там очень подробно расписано, в отличие от сформированного Вами вопроса. Так как никаких дополнительных условий у Вас в вопросе нет - то и явного ответа "что лучше" - не будет, на что Вам в (5) и указали.
7 Ёпрст
 
17.09.24
08:44
(0) в 8ке усеченная логика, проверяются условия операндов до первого и где ложь, поэтому, твой код равнозначен в обоих случаях.
8 Ёпрст
 
17.09.24
08:47
В клюшках не так, там проверяются все операнды, и была бы ошибка синтаксиса или ошибка выполнения, например, если писать такое:
Если (1<>1)и (1/0=0) тогда

Была бы ошибкп деления на 0.
В снеговике, ошибки не будет, ибо 2 операнд тупо не выполняется
Программист всегда исправляет последнюю ошибку.