Имя: Пароль:
1C
1С v8
Порядок условий в запросе
0 mishkerdon
 
03.07.14
10:07
Помогите пожалуйста, возникла такая проблема - через конструктор запросов создаю запрос, ставлю условие ((Реквизит1=Истина И Реквизит2=10) ИЛИ (Реквизит3=ЛОЖЬ)). Т.е. порядок вычисления условий ставлю собственный. Но когда нажимаю "Ok" в редакторе условия, он удаляет эти скобки, и при закрытии конструктора в сформированном тексте запросе скобок тоже нет. Как можно сделать так, чтобы скобки не пропадали?
1 Wobland
 
03.07.14
10:08
с логикой не дружим? ну поправь текст сам
2 SeraFim
 
03.07.14
10:08
В данной ситуации твои скобки ни на что не влияют
3 Wobland
 
03.07.14
10:09
(2) у автора психологическая драма, очень даже влияют
4 fmrlex
 
03.07.14
10:10
(3) Просто автора били в детстве за отсутствие скобок.
5 mishkerdon
 
03.07.14
10:11
(2) почему не влияют? Разве ((Условие1 И Условие2) ИЛИ (Условие3)) не отличается от ((Условие1) И (Условие2 ИЛИ Условие3)) и от (Условие1 И Условие2 ИЛИ Условие3)???
6 Wobland
 
03.07.14
10:12
(5) истина
7 anatoly
 
03.07.14
10:12
Реквизит1 И Реквизит2 = 10 ИЛИ НЕ Реквизит3
зачем вообще скобки??
8 Wobland
 
03.07.14
10:12
начинаем изучать слово "приоритет операций"
9 bolobol
 
03.07.14
10:12
Проблема в читабельности условия? Ну что ж... некоторые вещи сделаны, да, для повышенной соображалки, а не для обычных пользователей.
10 catena
 
03.07.14
10:15
(5)2*(2+2) - Это одно.
а вот (2*2)+2 и 2*2+2 - не отличаются.
11 rphosts
 
03.07.14
10:16
(0) тема ниочём. Если база не файловая, то базовод сам построит план выполнения запроса и на порядок указаный вами ему наплевать (и как правило он действительно лучше знает как выполнять запрос) и даже если вы уверены что можете сделать подсказку оптимизатору - из 1С это не работает.
12 mishkerdon
 
03.07.14
10:30
(10) подождите,
так я и хочу написать (2+2)*2. А по итогу получается 2+2*2. Или условие "ИЛИ" в 1С вычисляется последним?
13 anatoly
 
03.07.14
10:37
(12)
приоритет логических операций:
1 - НЕ, 2 - И, 3 - ИЛИ
как можно писать запросы не зная матчасти?
14 DS
 
03.07.14
10:37
(12) Сказали же: приоритет операторов...
15 catena
 
03.07.14
10:38
(12)И - это умножение.
Истина И Ложь = Ложь.
16 catena
 
03.07.14
10:39
Конъю?нкция (от лат. conjunctio союз, связь) — логическая операция, по своему применению максимально приближенная к союзу «и». Синонимы: логи?ческое «И», логи?ческое умноже?ние, иногда просто «И».

Дизъю?нкция (лат. disjunctio — разобщение), логи?ческое сложе?ние, логи?ческое ИЛИ, включа?ющее ИЛИ; иногда просто ИЛИ — логическая операция, по своему применению максимально приближённая к союзу «или» в смысле «или то, или это, или оба сразу»[1].
17 Wobland
 
03.07.14
10:45
(12) хочешь - пиши. я не против
18 Jaap Vduul
 
03.07.14
10:52
Условия могут определяться и как более сложные логические выражения, где фигурируют простые логические выражения, соединенные между собой с помощью логических операторов И, ИЛИ, НЕ.

Логические операторы имеют приоритет:

Самый высокий приоритет имеет логический оператор НЕ;
Следующим по приоритету является оператор И;
Самый низкий приоритет у оператора ИЛИ.
В условиях сначала вычисляются простые логические выражения, затем операции НЕ, затем операции И, в последнюю очередь – операции ИЛИ. Для того, чтобы обеспечить другой порядок вычислений, можно использовать круглые скобки ().




--------------------------------------------------------------------------------

© ООО "1С", 1996-2011. Все права защищены.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший