Имя: Пароль:
1C
1С v8
В отчет не попадают строки, которые должны попасть
, , ,
0 Serioso
 
19.04.16
10:36
Платформа: 1С:Предприятие 8.3 (8.3.6.2152)
Конфигурация: Управление производственным предприятием, редакция 1.3 (1.3.75.2), измененная, SQL-серверный вариант.

Уважаемые форумчане!

В данный момент пишу отчет на СКД и обнаружил эффект, противоречащий логике.

По запросу 1. За март месяц попадают в отчет 674 строки:

1.
ВЫБРАТЬ
    ВнутреннийЗаказ.Ссылка КАК Заказ,
    пг_ИспользованиеМатериалов.Ссылка КАК ИспользованиеМатериалов,
    пг_ИспользованиеМатериалов.Дата
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.пг_ИспользованиеМатериалов КАК пг_ИспользованиеМатериалов
        ПО ВнутреннийЗаказ.ДокументОснование = пг_ИспользованиеМатериалов.Ссылка
ГДЕ
    пг_ИспользованиеМатериалов.Дата МЕЖДУ &Дата1 И &Дата2



По запросу 2. За март месяц попадают в отчет 671 строка:

2.
ВЫБРАТЬ
    ВнутреннийЗаказ.Ссылка КАК Заказ,
    пг_ИспользованиеМатериалов.Ссылка КАК ИспользованиеМатериалов,
    пг_ИспользованиеМатериалов.Дата
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.пг_ИспользованиеМатериалов КАК пг_ИспользованиеМатериалов
        ПО ВнутреннийЗаказ.ДокументОснование = пг_ИспользованиеМатериалов.Ссылка
ГДЕ
    пг_ИспользованиеМатериалов.Дата МЕЖДУ &Дата1 И &Дата2
    И ВнутреннийЗаказ.Ссылка <> ЗНАЧЕНИЕ(Документ.ВнутреннийЗаказ.ПустаяСсылка)


По запросу 3. За март месяц попадают в отчет 0 строк (а должно быть 674 – 671 = 3 строки):

3.
ВЫБРАТЬ
    ВнутреннийЗаказ.Ссылка КАК Заказ,
    пг_ИспользованиеМатериалов.Ссылка КАК ИспользованиеМатериалов,
    пг_ИспользованиеМатериалов.Дата
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.пг_ИспользованиеМатериалов КАК пг_ИспользованиеМатериалов
        ПО ВнутреннийЗаказ.ДокументОснование = пг_ИспользованиеМатериалов.Ссылка
ГДЕ
    пг_ИспользованиеМатериалов.Дата МЕЖДУ &Дата1 И &Дата2
    И НЕ (ВнутреннийЗаказ.Ссылка <> ЗНАЧЕНИЕ(Документ.ВнутреннийЗаказ.ПустаяСсылка))

Короче, в 3-м запросе содержится условие противоположное условию во 2-м запросе.

Почему в отчет по запросу 3. Попадает 0 строк?
Какие могут быть версии?
1 Timon1405
 
19.04.16
10:37
про null дать почитать или сам найдешь?
2 Serioso
 
19.04.16
10:39
(1) Уже пробовал. Не получилось.
3 Serioso
 
19.04.16
10:42
(1) С этим null в моем отчете как угодно крути, будет 0 строк.
4 Timon1405
 
19.04.16
10:44
(2) как пробовал-то?
5 Serioso
 
19.04.16
10:47
(4)

Вот так:

ВЫБРАТЬ
    ВнутреннийЗаказ.Ссылка КАК Заказ,
    пг_ИспользованиеМатериалов.Ссылка КАК ИспользованиеМатериалов,
    пг_ИспользованиеМатериалов.Дата
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.пг_ИспользованиеМатериалов КАК пг_ИспользованиеМатериалов
        ПО ВнутреннийЗаказ.ДокументОснование = пг_ИспользованиеМатериалов.Ссылка
ГДЕ
    пг_ИспользованиеМатериалов.Дата МЕЖДУ &Дата1 И &Дата2
    И (ВнутреннийЗаказ.Ссылка = Null)


И вот так:

ВЫБРАТЬ
    ВнутреннийЗаказ.Ссылка КАК Заказ,
    пг_ИспользованиеМатериалов.Ссылка КАК ИспользованиеМатериалов,
    пг_ИспользованиеМатериалов.Дата
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.пг_ИспользованиеМатериалов КАК пг_ИспользованиеМатериалов
        ПО ВнутреннийЗаказ.ДокументОснование = пг_ИспользованиеМатериалов.Ссылка
ГДЕ
    пг_ИспользованиеМатериалов.Дата МЕЖДУ &Дата1 И &Дата2
    И НЕ (ВнутреннийЗаказ.Ссылка = Null)
6 тарам пам пам
 
19.04.16
10:49
(5) на null надо проверять через ЕСТЬ NULL, а не просто через равенство
7 Serioso
 
19.04.16
10:49
(4) И в двух случаях - 0 строк.

Наверное откажусь от СКД и буду делать тупой классический отчет с условием вне запроса.

Так надежнее.

Но хочется знать - почему?
8 Serioso
 
19.04.16
10:49
(6) Сейчас попробую.
9 Serioso
 
19.04.16
10:53
(6) Охренеть. Получилось. Спасибо большое.
10 Chameleon1980
 
19.04.16
10:55
ну правильно Null это ничего

как сравнить само ничегос ничего

можно только узнать что это ничего и другое ничего что и делает Is Null