Имя: Пароль:
1C
1С v8
Запрос. Связи таблиц. Не равно. <>
0 prtx
 
28.05.15
13:07
Здравствуйте.
Мне нужно выбрать записи из регистра "ПрайсыПоставщиков", и только те записи "Кода" которых нет в регистре "ПоставляемаяНоменклатура".

Вот мой запрос:

"ВЫБРАТЬ
|    ПрайсыПоставщиков.Код,
|    ПрайсыПоставщиков.Наименование,
|    ПрайсыПоставщиков.Поставщик
|ИЗ
|    РегистрСведений.ПрайсыПоставщиков КАК ПрайсыПоставщиков
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура
|        ПО ПрайсыПоставщиков.Поставщик = ПоставляемаяНоменклатура.Поставщик
|            И ПрайсыПоставщиков.Код <> ПоставляемаяНоменклатура.Код"

Не могу понять в чем ошибка, выбираются все записи из регистра "ПрайсыПоставщиков", где поставщик = поставщик. Почему одно условие выполняется а второе нет.
1 чувак
 
28.05.15
13:09
Ты в отладчике проверь один из них на равенство. Може лишные пробелы в одном из них?
2 Господин ПЖ
 
28.05.15
13:10
у тебя любые две разные позиции выполняют условия ПрайсыПоставщиков.Код <> ПоставляемаяНоменклатура.Код
3 Heckfy
 
28.05.15
13:11
Где ЕСТЬ NULL
4 Господин ПЖ
 
28.05.15
13:12
тебе дырки надо искать через null и левое соединение...
5 prtx
 
28.05.15
14:21
(1) Не они абсолютно равны.
6 prtx
 
28.05.15
15:01
(4) А как через левое соединение?

Если делать левое соединение то я тогда получу все записи из регистра ПрайсыПоставщиков и совпавшие из ПоставляемаяНоменклатура.


Не знаю даже как правильно сформулировать то что мне нужно.

достать из ПрайсыПоставщиков только те записи в которых есть "код"(он есть во всех записях), и если в ПоставляемаяНоменклатура нет ни одной записи с таким же кодом.

Есль можно объясните подробнее как это сделать? я закипел..
7 Ёпрст
 
28.05.15
15:05
(6) замени иннер джоин на лефт джоин, выкини условие неравенства и воткни условие на ПоставляемаяНоменклатура.Код есть Null
8 FIXXXL
 
28.05.15
15:06
(6) левое от ПоставляемаяНоменклатура к ПрайсыПоставщиков
оба поля с "="
и отбор по NULL в коде

если правильно понял условия твои
9 Ёпрст
 
28.05.15
15:06
+7 в ГДЕ
10 prtx
 
28.05.15
15:20
(9)

"ВЫБРАТЬ
                   |    ПрайсыПоставщиков.Код,
                   |    ПрайсыПоставщиков.Наименование КАК Наименование,
                   |    ПрайсыПоставщиков.Поставщик
                   |ИЗ
                   |    РегистрСведений.ПрайсыПоставщиков КАК ПрайсыПоставщиков
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура
                   |        ПО ПрайсыПоставщиков.Поставщик = ПоставляемаяНоменклатура.Поставщик
                   |ГДЕ
                   |    ПоставляемаяНоменклатура.Код ЕСТЬ NULL
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Наименование"

Теперь вообще ничего не находит.
11 Demetres
 
28.05.15
15:24
Вот как-то так

ВЫБРАТЬ
    ПрайсыПоставщиков.Код,
    ПрайсыПоставщиков.Наименование,
    ПрайсыПоставщиков.Поставщик
ИЗ
    РегистрСведений.ПрайсыПоставщиков КАК ПрайсыПоставщиков
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура
        ПО ПрайсыПоставщиков.Поставщик = ПоставляемаяНоменклатура.Поставщик
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура1
        ПО ПрайсыПоставщиков.Поставщик = ПоставляемаяНоменклатура1.Поставщик
            И ПрайсыПоставщиков.Код = ПоставляемаяНоменклатура1.Код    
ГДЕ
    ПоставляемаяНоменклатура1.Поставщик ЕСТЬ NULL
12 Drac0
 
28.05.15
15:24
(10) И ПрайсыПоставщиков.Код = ПоставляемаяНоменклатура.Код
13 prtx
 
28.05.15
15:25
https://drive.google.com/file/d/0B0IpbsF62O6YSTRtYnJvSE5UWU0/view?usp=sharing

мне нужно из ПрайсыПоставщиков получить "мандарины" и "помидоры", потому что в ПоставляемаяНоменклатура тупо нет записей где код равен ихнему коду в ПрайсыПоставщиков.

надеюсь понятно.

извините что туплю!)
14 Ёпрст
 
28.05.15
15:29
(13) добавь условие из (12) в условие соединения в (10) Наслаждайся
15 prtx
 
28.05.15
15:39
(14) (12)

Ура заработало!!! Спасибо огромное.

Только принцип немного понял((
16 prtx
 
28.05.15
15:42
Окончательный запрос: (может кому пригодиться)

"ВЫБРАТЬ
|    ПрайсыПоставщиков.Код,
|    ПрайсыПоставщиков.Наименование КАК Наименование,
|    ПрайсыПоставщиков.Поставщик
|ИЗ
|    РегистрСведений.ПрайсыПоставщиков КАК ПрайсыПоставщиков
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура
|        ПО ПрайсыПоставщиков.Поставщик = ПоставляемаяНоменклатура.Поставщик
|            И ПрайсыПоставщиков.Код = ПоставляемаяНоменклатура.Код
|ГДЕ
|    ПоставляемаяНоменклатура.Код ЕСТЬ NULL"
17 Demetres
 
28.05.15
15:43
не благодарный