Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Помогите с запросом

Помогите с запросом
Я
   Alex-tlt
 
09.07.18 - 14:41
Суть такая. У меня есть два документа (РН и ДЗ). Надо сравнить номенклатуру и выбрать из ДЗ только те, которых нет в РН. Пишу такой запрос.

ВЫБРАТЬ
    ДополнительныеЗатратыСписокНоменклатуры.Номенклатура КАК Номенклатура
ИЗ
    Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК ДополнительныеЗатратыСписокНоменклатуры,
    Документ.РасходнаяНакладная КАК РасходнаяНакладная
ГДЕ
    ДополнительныеЗатратыСписокНоменклатуры.Ссылка = &СсылкаДок
    И ДополнительныеЗатратыСписокНоменклатуры.Номенклатура <> РасходнаяНакладная.СписокНоменклатуры.Номенклатура
    И РасходнаяНакладная.СписокНоменклатуры.Ссылка = &Ссылка

Если в условии делаю проверку на равенство, то все работает, но мне нужна не совпадающая номенклатура в документах, а наоборот. Ставлю <> и запрос выдает мне всю номенклатуру ДЗ.
Что я не так делаю? Подскажите пожалуйста.
 
 
   novichok79
 
1 - 09.07.18 - 14:42
(0) ДЗ левое соединение РН по ДЗ.Номенклатура = РН.Номенклатура Где РН.Номенклатура Есть NULL
   Малыш Джон
 
2 - 09.07.18 - 14:43
Ты все не так делаешь)

Используй левое соединение и поставь условие, где значение из правой таблицы есть null
   Alex-tlt
 
3 - 09.07.18 - 14:47
Спасибо, сейчас попробую. Пробовал соединениями, но на нулл не проверял.

Малыш Джон, а можешь сказать как правильно сделать?
А то я только разбираюсь, и многое не знаю...
   AceVi
 
4 - 09.07.18 - 14:53
Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК  ДополнительныеЗатратыСписокНоменклатуры  ЛЕВОЕ СОЕДИНЕНИЕ ДополнительныеЗатратыСписокНоменклатуры,
    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладная
ПО ДополнительныеЗатратыСписокНоменклатуры.Номенклатура = РасходнаяНакладная.Номенклатура
ГДЕ РасходнаяНакладная.Номенклатура ЕСТЬ NULL
   Alex-tlt
 
5 - 09.07.18 - 15:06
ВЫБРАТЬ
    ДополнительныеЗатратыСписокНоменклатуры.Номенклатура КАК Номенклатура
ИЗ
    Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК ДополнительныеЗатратыСписокНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
        ПО ДополнительныеЗатратыСписокНоменклатуры.Номенклатура = РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
ГДЕ
    ДополнительныеЗатратыСписокНоменклатуры.Ссылка = &СсылкаДок
    И РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
    И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура ЕСТЬ NULL

Вот, что получилось. Но теперь запрос ничего не выдает. Пустая ТЗ.
   crasler
 
6 - 09.07.18 - 15:13
Попробуй так

ВЫБРАТЬ
    ДополнительныеЗатратыСписокНоменклатуры.Номенклатура КАК Номенклатура
ИЗ
    Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК ДополнительныеЗатратыСписокНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
        ПО ДополнительныеЗатратыСписокНоменклатуры.Номенклатура = РасходнаяНакладнаяСписокНоменклатуры.Номенклатура И РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
ГДЕ
    ДополнительныеЗатратыСписокНоменклатуры.Ссылка = &СсылкаДок
    И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура ЕСТЬ NULL
   Alex-tlt
 
7 - 09.07.18 - 15:17
crasler спасибо!!! Все сразу заработало! А почему так? Можно объяснить вкратце, если не сложно
   Alex-tlt
 
8 - 09.07.18 - 15:17
Ведь по сути то запросы, которые предлагали тоже должны были работать
   crasler
 
9 - 09.07.18 - 15:26
Предыдущий запрос работал только если бы допустим был только один документ ДЗ и один РН, т.к. условие после ГДЕ обрабатывается уже после соединения таблиц.
   Alex-tlt
 
10 - 09.07.18 - 15:28
Спасибо! Теперь понятно.
 
 Рекламное место пустует

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует