Имя: Пароль:
1C
1С v8
Не заходит в процедуру в при конструкциИ "отказ или Условие()". Баг или фича?
,
0 ИС-2
 
naïve
27.06.13
11:06
Платформа 8.1.15
Есть такой код:
       ЕстьОшибка = ЕстьОшибка или не ПроверитьВозможностьОтгрузкиПоМенеджеру(Менеджер);
       ЕстьОшибка = ЕстьОшибка или не ПроверитьВозможностьОтгузкиПоКонтрагенту(Контрагент);
       ЕстьОшибка = ЕстьОшибка или не ПроверкаВозможностьОтгрузкиБонуснойНакладной();

заметил, что в проверки не всегда выполняются. Провел эксперемент:
       ЕстьОшибка = ЕстьОшибка или не ПроверитьВозможностьОтгрузкиПоМенеджеру(Менеджер);
       ЕстьОшибка = ЕстьОшибка или не ПроверитьВозможностьОтгузкиПоКонтрагенту(Контрагент);
ЕстьОшибка = ЕстьОшибка или истина;
// !!! теперь точно перестал заходить.
       ЕстьОшибка = ЕстьОшибка или не ПроверкаВозможностьОтгрузкиБонуснойНакладной();
Это баг или фича???
1 Господин ПЖ
 
27.06.13
11:08
покурить по или иногда нет нужды заходить во второе условие...

учите мат часть
2 Sammo
 
27.06.13
11:10
Еще с 7.7. в случае И, если первая составляющая = Истина, тогда второе не считается.
3 ДенисЧ
 
27.06.13
11:11
(2) в 77 считалось всё. В 8.* - по порядку
4 Maxus43
 
27.06.13
11:12
(2) Ложь, а не истина. если истина - то проверяется второе условие.
Это не со времён 1с, это обычная логика
5 acsent
 
27.06.13
11:17
(4) это не обычная логика, укороченная
6 Maxus43
 
27.06.13
11:20
(5) правильная, ибо нет смысла проверять дальше, когда 100% условие будет выполнено, или не будет
7 Mitriy
 
27.06.13
11:23
ничего не понял... код из (0) должен выполняться последовательно, причем тут вообще И? Если в ИЛИ первый результат ИСТИНА, то остальные на фиг не интересны...
8 mxs089
 
27.06.13
11:24
извини, но это тупой вопрос, насколько мне память не изменяет, это во всех языках программирования, зачем проверять что-то, если результат заведомо известен
9 kinno
 
27.06.13
11:26
В случае условия "И" благодаря этому бывает очень удобно, в первой половине условия проверять на тип значения, а во второй части после "И" на значение реквизита.

Например так:

ТиЗнч(ДокументСсылка) = Тип("ДокументСсылка.ТребованиеНакладная") И ДокументСсылка.МойРеквизит = ОтборПоРеквизиту
10 mxs089
 
27.06.13
11:28
(8) касательно ИЛИ, если И проверяются все условия
11 Mitriy
 
27.06.13
11:29
(10) если Ложь, то не все...
12 mxs089
 
27.06.13
11:32
(11) да, до первого Истина
13 Maxus43
 
27.06.13
11:47
(12) до всех Истина, а прерывается на первом Ложь
14 mxs089
 
27.06.13
11:50
при ИЛИ?
16 Sammo
 
27.06.13
11:58
(3) mia culpa. С 8.0. Вспомнил - были вопросы от семерочников при переходе.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан