Имя: Пароль:
1C
 
Будет ли вторая проверка условия в Если
0 xReason
 
25.02.11
15:02
Кто значет точно логику 1С. будет ли трогать(!) вторую проверку на ключ если первая вернула Ложь

Если ЗначениеЗаполнено(Источник) и ЗначениеЗаполнено(Ключ) тогда

КонецЕсли;

В разных языках это обрабатывается по разному. И безопасный код требует разбивать это на два условия. Но как это в 1С ?
1 Asmody
 
25.02.11
15:06
в 8ке "ленивая" проверка условий.
2 Анютик
 
25.02.11
15:06
(1) не будет...
3 simol
 
25.02.11
15:07
(0)не будет, проверяется легко
Если Ложь и 1/0 Тогда
4 y22-k
 
25.02.11
15:07
(0)Напиши в табло
Ложь и Истина
Ложь и ЛОЖЬ
Истина и Ложь
Истина и Истина
и посмотри сам
5 zak555
 
25.02.11
15:09
(1) почему ленивая ?
6 simol
 
25.02.11
15:09
(4)Ты не о том
7 Asmody
 
25.02.11
15:12
(5) яндексить "ленивые вычисления"
8 xReason
 
25.02.11
15:14
ясно спасибо. Значит можно дальше лабать в одну строчку.

В этом плане наверно самый ленивый язык это Ruby
9 zak555
 
25.02.11
15:15
(7) так это "грамотная" проверка

смысл смотреть в И второй операнд, если 1ый ложный ?
или смысл смотреть в ИЛИ второй операнд, если 1ый истинный ?
10 Живой Ископаемый
 
25.02.11
15:15
11 xReason
 
25.02.11
15:19
Хорошо подсказали. такой код работает без ошибок


а=0;
Если Ложь и 10/а тогда
   Сообщить("--");
КонецЕсли;
12 Живой Ископаемый
 
25.02.11
15:20
http://screencast.com/t/mOOvWmnVct

научись уже юзать табло!
13 y22-k
 
25.02.11
15:20
(9)ЗначениеЗаполнено(1) и ЗначениеЗаполнено(0)
напиши в табло
Для тебя это будет открытием
14 zak555
 
25.02.11
15:21
(13) 8ки нет
15 xReason
 
25.02.11
15:22
Табло скучная штука. Я дебагер люблю, он меня заводит ;)
16 Fragster
 
гуру
25.02.11
15:27
(13) в (9) все правильно
17 Mitriy
 
25.02.11
15:31
(13) местами поменяй...
18 simol
 
25.02.11
15:32
(12)Первая строчка отвалилась по проверке синтаксиса, а не по условию
19 Живой Ископаемый
 
25.02.11
15:37
(18) так лучше:
http://screencast.com/t/IhIMEuqDPy82
20 Ненавижу 1С
 
гуру
25.02.11
15:59
в некоторых языках это может выбрать сам разработчик:

if (a & b) //проверка всегда ОБОИХ условий
if (a && b) //проверка второго только если первое истина
21 Asmody
 
25.02.11
16:16
(8) самый ленивый язык - это wiki:Haskell
22 Asmody
 
25.02.11
16:18
(20) потому что первая строчка - это бинарное умножение, а вторая - логическое "И"
23 Lys
 
25.02.11
16:19
Извращенцы.
Напоминает поговорку про кота, которому нечего делать...
24 Ненавижу 1С
 
гуру
25.02.11
16:27
(22) да, для типа bool бинарное умножение и логическое "И" не отличаются
25 Живой Ископаемый
 
25.02.11
16:28
2(2) какую поговорку?
26 Живой Ископаемый
 
25.02.11
16:29
2(23) "вы как те коты которым нечего делать"?
27 Живой Ископаемый
 
25.02.11
16:32
Мне это больше напоминает Шрёдинбаг
28 Живой Ископаемый
 
25.02.11
16:32
если уж про котов заговорили...
29 John83
 
25.02.11
16:34
хм... не знал, однако
30 Lys
 
25.02.11
16:35
(25) "Когда коту нечего делать - он себе я...ца лижет" =)
31 Lys
 
25.02.11
16:36
+(30) Я-то думал, что это известный б0ян...
32 Живой Ископаемый
 
25.02.11
16:37
2(31) первый раз слышу.
33 Lys
 
25.02.11
16:40
(32) С удовольствием пожал бы лапу настолько интеллигентному человеку=)
...хотя,возможно, в/на Украине народный фольклор просто немного отличается=)
34 xReason
 
25.02.11
16:42
а вот если взять двух котов и их сравнить, то можно ли по первому коту понять, нужен ли второй кот?
35 Lys
 
25.02.11
16:43
(34) А если вместо двух котов представить две бутылки хорошего коньяку?
36 xReason
 
25.02.11
16:54
(35) А как их пить по OR или по AND ?
37 Ненавижу 1С
 
гуру
25.02.11
17:05
(36) по XOR
38 Lys
 
25.02.11
17:06
(36) Естественно, так:

Рюмка = Новый Рюмка("Коньяк", ВидРюмки.Пустая, ЧистотаПосуды.Чистая);
Пока ЗначениеЗаполнено(Бутылка1) ИЛИ ЗначениеЗаполнено(Бутылка2) Цикл
  Источник = ?(ЗначениеЗаполнено(Бутылка1), Бутылка1, Бутылка2);
  Рюмка.Наполнить(Источник);
  Результат = Результат + Рюмка.Выпить();
  Если Результат >= глЗначениеПеременной("ПорогОпьяненияДляОтключенияСеанса") Тогда
     Прервать;
  КонецЕсли;
КонецЦикла;
39 stix2010
 
25.02.11
17:06
коньяк №1 и коньяк №2
40 stix2010
 
25.02.11
17:07
отдайте мне, тару сдадите
41 xReason
 
25.02.11
17:12
(38) Боюсь, что условие
Если Результат >= глЗначениеПеременной("ПорогОпьяненияДляОтключенияСеанса") Тогда

глючит будет. Как показывает практика по не зависящим аппаратным причинам происходят глюки и даже когда Результат уже превышает значение переменной. Цикл еще успевает сделать несколько итераций, что влечет потом тяжелый выходит из это процедуры  

Хорошо бы поставить туда прервать; , но обычно это не работает
42 xReason
 
25.02.11
17:15
а еще я нашел забавную фичу на мисте, наверно кто-то знает про нее.

Что если в профиле поставить страна, то у других юзеров она будет такая же
43 stix2010
 
25.02.11
17:16
Если Коньяк1 и Коньяк2 тогда
  Пьете Коньяк1; //Коньяк2 вам не нужен, отдаете мне  
КонецЕсли;
44 Живой Ископаемый
 
25.02.11
17:17
2(43) первое условие истина, значит второе нужно проверить.
45 stix2010
 
25.02.11
17:18
вот ведь
46 stix2010
 
25.02.11
17:29
опять же выпив коньяк1, коньяк2 можно не проверять, а так не бывает
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой