Имя: Пароль:
1C
1C 7.7
v7: Конструкция "Если" и "И"
Ø (Злопчинский 22.02.2016 23:25)
0 Масянька
 
22.02.16
16:00
День добрый!
Есть такая строка -     
Если (ПустоеЗначение(ПроверятьОстатки) = 1) и (РеальныйОстаток() = 0) Тогда

РеальныйОстаток - функция.
Вопрос: если (ПустоеЗначение(ПроверятьОстатки) = 0) должно заходить в функцию?

Спасибо.
1 Любопытная
 
22.02.16
16:01
Насколько я помню, при невыполнении первого условия второе не проверяется
2 MishaD
 
22.02.16
16:02
Да, в 7.7 полная проверка условия
3 фобка
 
22.02.16
16:02
Смотря чему равно проверятьостатки
4 Масянька
 
22.02.16
16:02
(2) Писец...
5 Масянька
 
22.02.16
16:03
(3) Какая разница? Первое - уже не выполнено.
6 фобка
 
22.02.16
16:03
А, нет.. 7.7 ленивая, дальше не полезет
7 Любопытная
 
22.02.16
16:03
Ой, блин, это 7.7...  На секцию не посмотрела
8 фобка
 
22.02.16
16:03
8.х тоже не полезет
9 MishaD
 
22.02.16
16:04
(6) Вот как раз 7.7 и полезет. Хотя там скобки неправильно стоят, раньше ошибку выдаст.
10 Масянька
 
22.02.16
16:05
(6) Лезет.
Сообщить("тут - " + ПустоеЗначение(ПроверятьОстатки));
пишет - "тут - 0" и лезет...
11 Масянька
 
22.02.16
16:07
(9) Спасибо огромное.
Только не понятно - смысл тогда?
12 Это_mike
 
22.02.16
16:07
Ну сколько тебе раз говорить? Пиши нормально, независимо от стратегии вычисления транслятором...
13 Масянька
 
22.02.16
16:08
(12) А нормально - это как?
14 ДенисЧ
 
22.02.16
16:10
в 77 полезет.
В 8* - нет
15 palpetrovich
 
22.02.16
16:10
(9) где "скобки неправильно стоят"? вроде все верно, хотя
что такое РеальныйОстаток() непонятно, хотя конечно РеальныйОстатокКакогоИменноТовар можно передать в фунцию и через ж.пу :)
Ну и ПустоеЗначение(ПроверятьОстатки) тоже как-то бросается в глаза... почему-то кажется что ПроверятьОстатки - это флажок :)
16 Cyberhawk
 
22.02.16
16:11
Если требуется, чтобы вторая часть условия "И" проверялась только если результат проверки первой - ложь, то надо разбить конструкцию Если на два вложенных Если
17 фобка
 
22.02.16
16:11
Не заставляйте меня включать комп и запускать платформу...)
18 Это_mike
 
22.02.16
16:12
(13) "нормально" - это чтобы выражение не зависело от того, какаую стратегию вычисления условных выражений - "полную" или"неполную" - использует транслятор. Представь, что ты пишешь не для 1с, а для извращенного паскаля. Или бесика. Или еще чего.
19 ДенисЧ
 
22.02.16
16:12
(17) не... ты у нас не только платформу запустишь, но ещё и новый ЗИК напишешь...
20 ДенисЧ
 
22.02.16
16:12
(12) Масянька и нормально - две несовместимые вещи...
21 Злопчинский
 
22.02.16
16:13
Говорят что в девятке будет новый вид проверкуи условия
Авдруг(учловие)  
Данное условие проверяется не в егда а эпизодически

Также будет еще новый вид условия
Внезапно(условие)
Выдает истину всегда, за исключением самых неподходящих случаев
22 Это_mike
 
22.02.16
16:13
(15) кстати, да - если пишется через .опу, то ничего не мешает передавать остатки через нее же...
23 Злопчинский
 
22.02.16
16:14
(20)  злой ты
24 Масянька
 
22.02.16
16:16
(18) И где различие между "1с! и "извращенным паскалем"?
(23) Он - не злой, он - обиженный.
25 palpetrovich
 
22.02.16
16:16
(21)  я наденюсь это в 8.8 реализуют :)
26 ДенисЧ
 
22.02.16
16:17
(23) Я добрый.
А то ведь и ножичком мог бы...
27 palpetrovich
 
22.02.16
16:18
(24) имхо, под "извращенностью паскаля" он подразумевает безусловное описание переменных :)
28 Масянька
 
22.02.16
16:19
(27) Я не знаю (и знать не хочу), что он там "подразумевает". В данном случае - разницы нет.
29 palpetrovich
 
22.02.16
16:20
(28) перечитал (18) - главное там в первом предложении, я лично - двумя руками - за!
30 фобка
 
22.02.16
16:26
(14) таки да, что странно
31 Масянька
 
22.02.16
16:30
(29) Нафига описывать переменную, которая передается из другой функции и используется (в данном модуле) один раз?
32 Масянька
 
22.02.16
16:30
(30) Фома неверующий :)
33 фобка
 
22.02.16
16:35
(32) странно что мог это забыть, а не само поведение
34 Масянька
 
22.02.16
16:37
(33) Я, лично, первый раз наткнулась. Считала, что по-любому сначала первое.
Видимо, карты так легли. :)
35 HawkEye
 
22.02.16
16:51
(34) 7.7 сначала проверит обе скобки, потом проверит И...
36 vcv
 
22.02.16
20:54
Есть такое понятие "ленивые вычисления". Так вот в 7.7 их нет :)
37 youalex
 
22.02.16
22:36
Кстати говоря, после 8 весьма доставляет. Если в 8 можно первым условием сделать проверку на тип, например, и далее уже, "зная" тип -  в этом же выражении логику строить, то в 7  - приходится писать многоэтажные Если...
Если гугель не врет, то это "
&       Логическое AND (И)
&&      Сокращённое AND"

В 7.7. - & , в 8.* - &&
38 Джинн
 
22.02.16
22:48
(34) Старые добрые грабли. Перетиралось миллион раз - проверяет все.
39 Garykom
 
гуру
22.02.16
22:55
(38) и это нормально! иначе какое может быть распараллеливание выполнения/вычислений :)

ЗЫ что 1с только 1 ядро использует это мелочи... они о будущем думали!
40 Garykom
 
гуру
22.02.16
22:55
(39)+ *1C77
41 Злопчинский
 
22.02.16
23:08
Вопрос исчерпан
Финиш
Программист всегда исправляет последнюю ошибку.