Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 04:26

Не работает проверка ЕСТЬ NULL

Автор Alter, 21 мая 2018, 22:56

0 Пользователей и 1 гость просматривают эту тему.

Alter

Делаю отчет по платежам, в котором нужно разграничить платежи по предоплате и постоплате. Выбираю запросом данные из платежных документов (номер, дата, сумма платежа), далее через левое соединение выбираю данные из документа реализация. Связываю по полю ЗаказКлиента.Номер.
Создаю два вычисляемых поля "Предоплата" и "Постоплата". В поле Предоплата попадают суммы из платежного документа по условию ДатаПлатежа < ДатаРеализации ИЛИ ДатаРеализации ЕСТЬ NULL (т.е. логично, что при предоплате реализации на момент оплаты может еще не быть).
В поле Постоплата суммы попадают по условию ДатаПлатежа > ДатаРеализации И ДатаРеализации ЕСТЬ НЕ NULL (т.е. при постоплате реализация всегда существует)
НО! Столкнулась с проблемой, что при предоплате, при которой реализация еще не создана, сумма платежа попадает в оба поля - и в постоплату и в предоплату! Т.е. условие ДатаРеализации ЕСТЬ НЕ NULL в поле "постоплата" не выполняется. Пробовала ставить сразу все условия, которые, на мой взгляд, могут быть применимы, т.е.

Выбор
    Когда ДатаРеализации <> "" И ДатаРеализации <> неопределено И ДатаРеализации ЕСТЬ Не null И Дата > ДатаРеализации
        Тогда СуммаВзаиморасчетов
    Иначе ""
Конец 

Ничего не работает...

Пожалуйста, подскажите, в чем ошибка

bsn-chita

НЕ ДатаРеализации ЕСТЬ NULL

Alter

Цитата: bsn-chita от 22 мая 2018, 01:25
НЕ ДатаРеализации ЕСТЬ NULL

УВЫ, это также пробовала, не работает

ДмитрийФ

Цитата: Alter от 22 мая 2018, 07:56
Цитата: bsn-chita от 22 мая 2018, 01:25
НЕ ДатаРеализации ЕСТЬ NULL

УВЫ, это также пробовала, не работает
Естественно, дата не равна NULL, она всегда принимает какое-то значение, в данном случае пустая дата это ДАТАВРЕМЯ(1,1,1)

alex0402

Цитата: ДмитрийФ от 22 мая 2018, 08:44Естественно, дата не равна NULL,

не правда. Если левое или полное соединение и нет записи по условию, тогда NULL.
Цитата: Alter от 21 мая 2018, 22:56Выбор
    Когда ДатаРеализации <> "" И ДатаРеализации <> неопределено И ДатаРеализации ЕСТЬ Не null И Дата > ДатаРеализации
разбей условие:
Выбор
    Когда ДатаРеализации = "" Тогда 1
    Когда ДатаРеализации = неопределено Тогда 2
    Когда Дата > ДатаРеализации Тогда СуммаВзаиморасчетов.

что бы было понятно, что на самом деле происходит.
и еще Дата точно всегда Тип("Дата") или иногда NULL?
Спасибо за Сказать спасибо

Alter

Цитата: alex0402 от 22 мая 2018, 09:27
Цитата: ДмитрийФ от 22 мая 2018, 08:44Естественно, дата не равна NULL,

не правда. Если левое или полное соединение и нет записи по условию, тогда NULL.
Цитата: Alter от 21 мая 2018, 22:56Выбор
    Когда ДатаРеализации <> "" И ДатаРеализации <> неопределено И ДатаРеализации ЕСТЬ Не null И Дата > ДатаРеализации
разбей условие:
Выбор
    Когда ДатаРеализации = "" Тогда 1
    Когда ДатаРеализации = неопределено Тогда 2
    Когда Дата > ДатаРеализации Тогда СуммаВзаиморасчетов.

что бы было понятно, что на самом деле происходит.
и еще Дата точно всегда Тип("Дата") или иногда NULL?

Похоже, тяжелый случай..
В поле постоплата пишу следующее выражение:

Выбор
    Когда ДатаРеализации = ДАТАВРЕМЯ(1,1,1) тогда 1
    Когда ДатаРеализации = "" Тогда 2
    Когда ДатаРеализации = неопределено Тогда 3
Иначе 4
Конец


Т.е. при любом из условий мы должны получить только 1,2,3,4. Но выводится СуммаВзаиморасчетов как ни в чем не бывало!

ДмитрийФ

Цитата: Alter от 22 мая 2018, 12:46
Похоже, тяжелый случай..
Тогда запрос в студию.

Alter

Всем большое спасибо за советы. В моем случае проблема решилась написанием запроса и отчета заново с нуля И теперь все работает.
Не первый раз сталкиваюсь с такой особенностью. Кстати, кто-нибудь может подсказать, почему внесение правильных корректировок в уже созданный отчет часто не срабатывает и приходится все создавать заново?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск