Имя: Пароль:
1C
 
Отобрать номенклатуру (запрос)
0 1ctube
 
24.01.18
16:19
Привет, нужно отобрать номенклатуру которой не было в документах "Пступление ТМЗ" за указанный период. Если пишу так(без периода) то работает как надо(выводит те номенклатуры которых нет в было в доках)

ВЫБРАТЬ
    Ном.Ссылка,
    ПоступлениеТоваровУслугТовары.Номенклатура
ИЗ
    Справочник.Номенклатура КАК Ном
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ПО (ПоступлениеТоваровУслугТовары.Номенклатура = Ном.Ссылка)
ГДЕ
    Ном.ЭтоГруппа = &ЭтоГруппа
    И ПоступлениеТоваровУслугТовары.Номенклатура ЕСТЬ NULL
    
Однако если добавляю так :

И ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата И &ДатаКон

То вообще ничего не выводит. Как исправить?
1 Timon1405
 
24.01.18
16:24
в общих чертах
Выбрать
Номенклатура.Ссылка из СпрНом...
Где НЕ Номенклатура.ссылка В (Выбрать Нужное из ТЧ товаров за период)
2 vicof
 
24.01.18
16:24
И ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата И &ДатаКон
надо добавлять не в ГДЕ, а в условие соединения
3 1ctube
 
24.01.18
16:26
(1) (2) спс, помогло
4 1ctube
 
24.01.18
16:27
(2) а не работало из-за того, что у меня было левое соединение, а когда пишем "ГДЕ"  то он сначала выбирает все данные и только потом "отсекает" по условию? Из-за этого не работало?
5 vicof
 
24.01.18
16:43
Условие в ГДЕ на правую таблицу превращает левое соединение во внутреннее
6 Сти
 
24.01.18
16:54
(4) Да, условие ГДЕ по дате отсекает записи, в которых получился Null, ведь Null не находится между Дата и ДатаКон, он вообще никогда ни с чем не сравнивается. И таким образом получается (5).

Впрочем, "ПоступлениеТоваровУслугТовары.Дата МЕЖДУ &Дата И &ДатаКон" можно превратить в "(ПоступлениеТоваровУслугТовары.Дата МЕЖДУ &Дата И &ДатаКон ИЛИ ПоступлениеТоваровУслугТовары.Ссылка ЕСТЬ Null)", но это и некрасиво, и неоптимально, поэтому лучше условие переносить в связь. Хотя в редких случаях такой вариант может пригодиться.
7 1ctube
 
24.01.18
16:57
(6) (5) спасибо за разъяснение!