Имя: Пароль:
1C
1С v8
Пустые строки в результате запроса
0 Pyryrym
 
13.04.21
18:32
Есть запрос:

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

Который выводит пустые строки. Как я понял, он берет номенклатуру из документа, например 2 штуки, смотрит, есть ли остатки по этой номенклатуре, если нет - выводит две пустые строки. Как это решить?
1 Kassern
 
13.04.21
18:35
(0) Тебе это ни о чем не говорит?
ВЫБРАТЬ
    ОстаткиТоваровОстатки.Номенклатура КАК Номенклатура,
    ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
3 Kassern
 
13.04.21
18:35
(1) может все таки возьмешь данные из левой таблицы?
4 Волшебник
 
13.04.21
18:36
(1) Вы гений.
5 Pyryrym
 
13.04.21
18:39
(1) ни о чем(. Мне нужно получить текущие остатки тех товаров, которые указаны в документе
6 Жан Пердежон
 
13.04.21
18:40
(5) ты их и получаешь, ровно так как и запрашиваешь
7 azernot
 
13.04.21
18:41
(5) А если остатков нет, что выйдет?
8 Kassern
 
13.04.21
18:41
(5) очень плохо, что "ни о чем(". Посмотри еще внимательнее из какой таблицы ты номенклатуру берешь...
9 Kassern
 
13.04.21
18:42
(8) потом внимательно подумай и реши из какой таблицы какие данные нужно выводить в запросе
10 Ненавижу 1С
 
гуру
13.04.21
18:46
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
    Естьnull(ОстаткиТоваровОстатки.КоличествоОстаток,0) КАК КоличествоОстаток
11 Kassern
 
13.04.21
18:46
(10) ну зачем так скоро(
12 Kassern
 
13.04.21
18:48
(10) хотя бы пол часика дали подумать ТС, возможно бы и сам додумался, после наводящих коментов
13 Pyryrym
 
13.04.21
18:55
(10) Это не помогло - так у меня выводятся строки с заполненной номенклатурой и пустыми остатками, решил условием остатки>0
14 Волшебник
 
13.04.21
18:55
вирт. таблица РегистрНакопления.ОстаткиТоваров.Остатки будет выдавать остатки по всей номенклатуре, надо сделать отбор по номенклатуре в параметрах виртуальной таблицы
15 azernot
 
13.04.21
18:56
(13) Зачем тогда ЛЕВОЕ соединение?
16 Pyryrym
 
13.04.21
18:57
(14) Спасибо
17 Chameleon1980
 
14.04.21
04:30
Очередной индивидум, который не понимает что хочет и что делает
18 Mihasya
 
14.04.21
05:29
(14) Не верно, нулевые остатки не даст...

Вот так надо:

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

ну можно еще ограничить параметрами виртуальной таблицы...