powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR10 Логический оператор OR
4 сообщений из 4, страница 1 из 1
CR10 Логический оператор OR
    #36347424
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Ниже приведены два варианта условия формулы .
И по ним есть два вопроса. Заранее спасибо за комментарии.

Вопрос № 1.
Почему вариант 1 отрабатывает , а второй нет ?

Вариант 1 - работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
(
{Table_.Field1} = "V1" AND  ({Table_.Field2} = "Нет") AND
(NextIsNull({Table_.Field3}))  AND 
({?Отчетный период (начало)} < {Table_.Date}) AND 
({?Отчетный период (конец)} > {Table_.Date})
)
OR
(
{Table_.Field1} = "V1" AND  ({Table_.Field2} = "Нет") AND
({Table_.Field3} <> Next({Table_.Field3}))  AND 
({?Отчетный период (начало)} < {Table_.Date}) AND 
({?Отчетный период (конец)} > {Table_.Date})
)

При чем если поменять местами первую половину выражения (до OR) со второй,
то тоже не работает.

Вопрос № 2.
Почему в этом случае (вариант 1) условие с функцией NextIsNull нужно писать первой ?

Вариант 2 - НЕ работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
(
{Table_.Field1} = "V1" AND  ({Table_.Field2} = "Нет") AND
  ( 
     (NextIsNull({Table_.Field3}))  OR ({Table_.Field3} <> Next({Table_.Field3}))
  )  AND 
({?Отчетный период (начало)} < {Table_.Date}) AND 
({?Отчетный период (конец)} > {Table_.Date})
)
...
Рейтинг: 0 / 0
CR10 Логический оператор OR
    #36349641
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ответ не теоретический, но:
Замечено из опыта, что проверка условия на IsNull, NextIsNull правильно работает только в случае, если эта проверка идет первой. Что-то типа
IsNull({Command.fld1}) OR {Command.fld1} = "Не определено".
Именно OR. В этом случае все срабатывает правильно.. Меняем их местами
{Command.fld1} = "Не определено" OR IsNull({Command.fld1})
и данные пропадают. Если условие AND - работает.
Принято как данность.
...
Рейтинг: 0 / 0
CR10 Логический оператор OR
    #36356184
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принято как данность.
Понятно.
Спасибо.

Но почему не работает "склеенный" второй вариант ?
Почему нужно дублировать условия в каждом из OR ?

Код: plaintext
1.
2.
({?Отчетный период (начало)} < {Table_.Date}) AND 
({?Отчетный период (конец)} > {Table_.Date})
...
Рейтинг: 0 / 0
CR10 Логический оператор OR
    #36357950
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Относительно первого примера - это нормально, что при такой логике необходимо дублировать второе условие. Просто разберите условия - там же OR.
Во втором примере что-то неправильное со скобками. Так и не смогла их пересчитать. Посмотрите вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
(
     ( (NextIsNull({Table_.Field3})  OR  ({Table_.Field3} <> Next({Table_.Field3}) )
AND  ( ({Table_.Field1} = "V1")   AND  ({Table_.Field2} = "Нет") )
)
  
AND 
( 
    ({?Отчетный период (начало)} < {Table_.Date}) AND 
    ({?Отчетный период (конец)} > {Table_.Date})
)
или
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
(
     ( (NextIsNull({Table_.Field3})  OR  ({Table_.Field3} <> Next({Table_.Field3}) )
AND  ( ({Table_.Field1} = "V1")   AND  ({Table_.Field2} = "Нет") )
)
  
AND 
( 
     {Table_.Date}) in {?Отчетный период (начало)} to {?Отчетный период (конец)}
    
)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR10 Логический оператор OR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]