Имя: Пароль:
1C
1С v8
Почему не работает условие "не равно" в запросе?
0 tabarigen
 
13.04.20
13:56
Всем добра, мне баблка.

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

в результате получаю все характеристики..
1 tabarigen
 
13.04.20
13:57
Как будто условие
И (Остатки.Характеристика <> ПТиУТ.Характеристика)

игнорится..
2 tabarigen
 
13.04.20
13:57
не могу понять
3 sitex
 
naïve
13.04.20
13:59
(1) потому что первое уже Истина
4 tabarigen
 
13.04.20
13:59
блин осенило. все дело в том что у меня в документе поступления могут быть товары с разными характеристиками. видимо поэтому странно себя ведет запрос.
5 tabarigen
 
13.04.20
14:00
(3) да нет не в этом дело.
6 tabarigen
 
13.04.20
14:00
(4) то есть есть один  и тот же товар но с разными характеристиками. а условие связи левое как то странно  себя ведет
7 Antonych31
 
13.04.20
14:01
(3) Этого не может быть. операция И может не дойти до второго операнда, если первый ложь. Если первое выражение истина, то полюбому и второе тоже проверять нужно.
8 Жан Пердежон
 
13.04.20
14:06
(0) ты вообще представляешь как (любое) соединение делается?
9 Antonych31
 
13.04.20
14:17
Тут, наверное, нужно делать полное (или левое - смотря что нужно получить) соединение по номенклатура = номенклатура и хар-ка = хар-ка, и условием отбирать записи, где хар-ка есть Null
10 Antonych31
 
13.04.20
14:21
ВЫБРАТЬ
    Остатки.Номенклатура КАК Номенклатура,
    Остатки.Характеристика КАК Характеристика,
    Остатки.КоличествоОстаток КАК КоличествоОстаток,
    ПТиУТ.Характеристика КАК Характеристика1
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК Остатки
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров.Товары КАК ПТиУТ
        ПО (Остатки.Номенклатура = ПТиУТ.Номенклатура)
            И (Остатки.Характеристика = ПТиУТ.Характеристика)
ГДЕ
    ПТиУТ.Ссылка = &ДокПоступления
    И ПТиУТ.Характеристика есть Null

Так попробуй.
11 Ёпрст
 
13.04.20
14:23
(0)
На вот, наслаждайся


ВЫБРАТЬ
    Остатки.Номенклатура КАК Номенклатура,
    Остатки.Характеристика КАК Характеристика,
    Остатки.КоличествоОстаток КАК КоличествоОстаток,
    ПТиУТ.Характеристика КАК Характеристика1
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК Остатки
ГДЕ
   НЕ (Остатки.Номенклатура,Остатки.Характеристика) в (выбрать ПТиУТ.Номенклатура,ПТиУТ.Характеристика ИЗ Документ.ПоступлениеТоваров.Товары КАК ПТиУТ ГДЕ ПТиУТ.Ссылка = &ДокПоступления)
12 Ёпрст
 
13.04.20
14:24
+11 и
ПТиУТ.Характеристика КАК Характеристика1 //вот это выкини из селект листа
13 Жан Пердежон
 
13.04.20
14:25
(10) твой запрос всегда пустой результат будет выдавать
14 tabarigen
 
13.04.20
14:27
(12) в таком случае даст все характеристики даже той номенклатуры которой нет в документе поступления
15 Жан Пердежон
 
13.04.20
14:28
(11) вангу, ему надо только по тем же товарам, что в ПТУ, но другим хар-кам
16 tabarigen
 
13.04.20
14:29
(15)  да так и надо..
17 sitex
 
naïve
13.04.20
14:30
(15)  И (Остатки.Характеристика <> ПТиУТ.Характеристика) а разве в самом начале по этому не понятно было ?
18 Ёпрст
 
13.04.20
14:31
(14,15) в (0) вопрос только про хар-ки был )))

(16) ну добавь так еще, делов то



ВЫБРАТЬ
    Остатки.Номенклатура КАК Номенклатура,
    Остатки.Характеристика КАК Характеристика,
    Остатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад и Номенклатура в (выбрать ПТиУТ.Номенклатура из Документ.ПоступлениеТоваров.Товары КАК ПТиУТ ГДЕ ПТиУТ.Ссылка = &ДокПоступления)) КАК Остатки
ГДЕ
   НЕ (Остатки.Номенклатура,Остатки.Характеристика) в (выбрать ПТиУТ.Номенклатура,ПТиУТ.Характеристика ИЗ Документ.ПоступлениеТоваров.Товары КАК ПТиУТ ГДЕ ПТиУТ.Ссылка = &ДокПоступления)
19 RomanYS
 
13.04.20
14:32
(11) А почему условие не в параметрах ВТ?
20 Ёпрст
 
13.04.20
14:33
(19) потому, что копипасте
21 RomanYS
 
13.04.20
14:35
(20) Понятно. А то закрались сомнения, что для подобных условий есть какие-то другие рекомендации :)
22 tabarigen
 
13.04.20
14:42
(18)  Спасибо друже, все работает. Теперь понял в чем дело
Программист всегда исправляет последнюю ошибку.