Имя: Пароль:
1C
1С v8
Логические операторы
0 kap-v-kstu
 
15.02.13
00:11
ТипЗнч(СтрокаОстатка.Субконто3) <> Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет") И ( СуммаПереоценки<0)

Как написать условие , при котором сумма переоценки сравнивается только при выполнении 1-го условия?
1 Лефмихалыч
 
15.02.13
00:12
(0) а... хм... а сейчас как-то не так что ли?
2 Очкарик
 
15.02.13
00:17
Может в Субонто3 чтой-то не так?
3 Лефмихалыч
 
15.02.13
00:34
подозреваю, что дело в том, что "любое сравнение с NULL в запросе возвращает ложь"
4 smitru
 
15.02.13
08:52
(3) А где ты тут видишь "запрос"?

(0) В 1С так и происходит. Если при "И" первый операнд ложь, то вычисление второго операнда не производится
5 lefthander
 
15.02.13
09:18
Может быть так? Нет?
(ТипЗнч(СтрокаОстатка.Субконто3) <> Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет")) И ( СуммаПереоценки<0)
6 Wobland
 
15.02.13
09:21
(5) лучше так: (((А)<>(Б)) И (В)))
7 GANR
 
15.02.13
10:26
Если пара принципов:

1. В логическом условии A and B, если A = Ложь, то B - не проверяется.
2. В логическом условии A or B, если A = Истина, то B - не проверяется.

Эти принципы используются при оптимизации, чтобы "тяжелые" условия проверялись как можно реже.

Остальное, (0), додумай сам.
8 HeroShima
 
15.02.13
10:27
(0) позорище!
9 smitru
 
15.02.13
10:47
(7) глупости глаголите.. и первое и второе
10 Reset
 
15.02.13
10:50
(9) Почему глупости? В 1С эти принципы работают. Вы не в курсе? Это не значит, что все, что Вы не знаете - глупости.
11 Wobland
 
15.02.13
10:51
(10) он знает, см (4)
12 Reset
 
15.02.13
10:52
(11) Тогда непонятно про "глупости" %]
13 Wobland
 
15.02.13
10:53
(12) ну выпендрился человек, с кем не бывает ;)
14 hhhh
 
15.02.13
10:54
(11) в динамике надо смотреть, с момента (4) прошло 2 часа, может за это время он переменил свое мнение.
15 Wobland
 
15.02.13
10:56
(14) за 2 часа можно успеть поллитру скушать ;)
16 GANR
 
15.02.13
10:56
(9) Не веришь мне - проведи эксперимент с нехитрой самодельной обработкой.
17 НЕА123
 
15.02.13
11:18
(10)
в (7) не было сказано, что эти принципы для языка 1С.
в файловой, на 8.1 было, в условиях запроса проверялись все условия.
18 GANR
 
15.02.13
11:19
(17) В любом уважающем себя языке программирования должно быть (7).
19 Wobland
 
15.02.13
11:20
(17) а я вроде на файловой 8.1 и убеждался...
20 НЕА123
 
15.02.13
11:26
(19)
может только на ранних релизах, но переделывание логических выражений на конструкции ВЫБОР КОГДА...ТОГДА.. на файловой сильно помогало.
на SQL нет, принципы (7) работали.
21 Reset
 
15.02.13
11:29
(17) То что там не уточнено, для какого языка, не делает, етить, сказанное - глупостью.
Нет, мы ты про Алгол говорим.
22 Reset
 
15.02.13
11:29
мы тут*
23 Reset
 
15.02.13
11:29
(я не знаю, верно ли это для Алгола, просто к слову)
24 НЕА123
 
15.02.13
11:30
(18)
согласен.
но в том же борландовском Cи, начала 90-х, принципы были

1. В логическом условии A and B, если B = Ложь, то A - не проверяется.
2. В логическом условии A or B, если B = Истина, то A - не проверяется.

сейчас не знаю.
25 Reset
 
15.02.13
11:32
(24) В (7) говорилось про Borland C, несомненно.
26 Reset
 
15.02.13
11:33
А почему тогда не докопались что в BC нет ф-ии типЗнч?
27 Reset
 
15.02.13
11:33
и опреатора <>
и тд
28 НЕА123
 
15.02.13
11:42
(0)
если бы (7) не было, то
?(ТипЗнч(СтрокаОстатка.Субконто3) <> Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет"), ( СуммаПереоценки<0), Ложь);
29 Infsams654
 
15.02.13
12:04
(25) в дельфях, кажись можно было в настройках установить проверку всех условий, но по умолчанию как (7)
30 GANR
 
15.02.13
15:14
Впрочем, этот код

if A and B then
{
  ...
}

можно и на этот заменить

if A then
{
  if B then
  {
     ...
  }
}
31 GANR
 
15.02.13
15:18
+(30) тьху-ё... уже и забыл, что в условиях на C/C++ then нету
32 Gesperid
 
15.02.13
15:45
(31) зато скобки обязательны =)
33 acsent
 
15.02.13
15:51
(0) это в запросе или в коде?