Правило В Почте Не Работает

deeeman

Well-known member
04.12.2007
383
0
#1
делаю такое почтовое правило:

Если Отправитель содержит "Отправитель1"
И Тема содержит "Тема 1"

ИЛИ Отправитель содержит "Отправитель2"
И Тема содержит "Тема 2"

ТО переложить в папку "Папка1"


не работает нормально((
как я проверял:

отправил письмо от Отправитель1 с темой 1 - не ушло в папку
отправил письмо от Отправитель2 с темой 2 - УШЛО в папку

получается же такая формула:
А & B | C & D
оно без скобок и операция И приоритетна, и исполниться оно должно если левая часть = Труе или правая часть = Труе.

как правильно построить формулу чтобы работало в оба случая?
разбить на 2 правила не предлагать!
 

savl

Lotus team
28.10.2011
2 136
105
#2
разбить на 2 правила не предлагать!
Зря, это возможно единственны ход.
Надо смотреть как лотус разворачивает это в логические операторы.
А то может у него & и | на одном уровне)

Ну так и есть, проверил:
Код:
a:=0;
b:=0;
c:=1;
d:=1;
res:=a & b | c & d;
@Prompt([Ok];"";@Text(res))
Вернуло 1

Код:
a:=1;
b:=1;
c:=0;
d:=0;
res:=a & b | c & d;
@Prompt([Ok];"";@Text(res))
Вернуло 0
Получается, что хотим получить F = (А & B) | (C & D), а по факту имеем: F1 = ((А & B) | C) & D
 

Вложения

savl

Lotus team
28.10.2011
2 136
105
#3
Если инетересует где это происходит, то смотрите в ПЯ библиотеку Rules, функцию ProcessConditions.
Там идет разбор условий и операторов по полю "tokconditionlist"
Все в одну строку, без расстановки скобок
 

deeeman

Well-known member
04.12.2007
383
0
#4
спс!
тоже копался и понял что парсит он подряд операторы без приоритета..
вторгаться в код ПЯ не получиться у меня.
придеться дробиться на мелкие правила..