Имя: Пароль:
1C
1С v8
Не могу понять запрос
,
0 serg999
 
10.10.18
15:26
Не пинайте, но не могу понять конструкцию ...

=========
ГДЕ
    ВЫБОР
        КОГДА ХозрасчетныйОбороты.КорСчет В (&ФильтрСписокСчетов)
        ТОГДА ВЫБОР
            КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
                ТОГДА НЕ ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО) = &Контрагент
        ИНАЧЕ НЕ(ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО) = &Контрагент
                И ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто2, НЕОПРЕДЕЛЕНО) = &ДоговорКонтрагента)
            КОНЕЦ
        ИНАЧЕ ИСТИНА
    КОНЕЦ
=========

Что по итогу тут:
ТОГДА НЕ ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО) = &Контрагент
и тут
НЕ(ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО) = &Контрагент
                И ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто2, НЕОПРЕДЕЛЕНО) = &ДоговорКонтрагента)
1 Cool_Profi
 
10.10.18
15:26
Проверка заполненности полей
2 serg999
 
10.10.18
15:30
Зачем из проверять в "ГДЕ" ?
3 Cool_Profi
 
10.10.18
15:31
(2) А где ты предлагашь это сделать?
4 serg999
 
10.10.18
15:36
Тогда еще раз .. допустим "ХозрасчетныйОбороты.КорСубконто1" = "NULL" проверил:

ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО)

Вернул "НЕОПРЕДЕЛЕНО"

Далее зачем второй раз проверить:
НЕОПРЕДЕЛЕНО = &Контрагент
5 Cool_Profi
 
10.10.18
15:40
А если ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО) вернул какое-то приличное значение, а не NULL?
6 Cool_Profi
 
10.10.18
15:40
Но не контрагента, например. Или другого контру?
7 Михаил Козлов
 
10.10.18
15:44
Если параметр Договор не указан, проверяется на совпадение контрагента. В противном случае на совпадение и договора и контрагента.
8 unregistered
 
10.10.18
15:50
(7) Точнее не "на совпадение", а "на НЕ совпадение".
9 serg999
 
10.10.18
16:00
То что проверятся заполнение параметра &ДоговорКонтрагента это понятно, вопрос по ЕСТЬNULL ..
(6) Но NULL, как и "НЕОПРЕДЕЛЕНО" не будет равно &Контрагент, почему не написать:
"ТОГДА НЕ ХозрасчетныйОбороты.КорСубконто1 = &Контрагент"
?
10 Cool_Profi
 
10.10.18
16:04
(9) потому что любое сравнение с NULL даёт ложь
11 serg999
 
10.10.18
16:43
Cool_Profi .. спасибо!!!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс