Имя: Пароль:
1C
1C 7.7
v7: Получить остатки, в т.ч. и нулевые ПрямымЗапросом 1c++
0 botman4
 
06.06.17
12:19
Запрос выполняю через " Класс ПрямойЗапрос " к DBF

Есть вот такой запрос:
        |SELECT
        |Спр.ID as [Товар :Справочник.Товары],
        |(select ОстатокТовараОстаток from $РегистрОстатки.ОстаткиТоваров( , , , ОстатокТовара) where Товар = Спр.ID) прОстаток,
        |Спр.МинОстаток as [МинОст :Число.15.5]
        |FROM Справочник.Товары as Спр
        |WHERE Спр.IsFolder = 2
        |AND Спр.МинОстаток > 0
        |AND Спр.МинОстаток > прОстаток
        |AND Спр.ISMARK <> '*'";

Получается, что если остаток = НУЛЮ то он не попадает сюда.
Делал запрос число к select * from $РегистрОстатки.ОстаткиТоваров( , , , ОстатокТовара)
в выборке только Остатки <> 0 ....
Подскажите пож как обойти такое ?
1 AntiBuh
 
06.06.17
12:24
может лефт джойн сделать?
2 VladZ
 
06.06.17
12:26
Вариант 1:

Выбрать данные из справочника номенклатура плюс левое соединение с остатками.

Вариант 2.
Выбрать данные из справочника номенклатура плюс нулевое значение остатков плюс юнион алл с остатками.
3 ADirks
 
06.06.17
14:26
AND (прОстаток Is Null OR Спр.МинОстаток > прОстаток)
4 botman4
 
06.06.17
14:48
(3) Точняк! null ))) спс
5 botman4
 
06.06.17
16:17
Сработал еще один вариант:
    |SELECT
        |Спр.ID as [Товар :Справочник.Товары],
        |IFNULL((select ОстатокТовараОстаток from $РегистрОстатки.ОстаткиТоваров( , , , ОстатокТовара) where Товар = Спр.ID), 0) прОстаток,
        |Спр.МинОстаток as [МинОст :Число.15.5]
        |FROM Справочник.Товары as Спр
        |WHERE Спр.IsFolder = 2
        |AND Спр.МинОстаток > 0
        |AND Спр.МинОстаток > прОстаток
        |AND Спр.ISMARK <> '*'";
6 AliAksA
 
08.06.17
10:57
(5) красиво
7 Chameleon1980
 
08.06.17
11:05
блин. Да самое первое было
лефт джойн номенклатуры с остатками
8 Sserj
 
08.06.17
11:31
(5) Тебе не кажется что выполнять запрос по остатку для КАЖДОГО элемента номенклатуры жирновато?
:)

ВЫБРАТЬ
   $Спр.ТекущийЭлемент КАК [Товар $Справочник.Товары]
   , ВЫБОР КОГДА Рег.Товар IS NULL Тогда 0 ИНАЧЕ Рег.ОстатокТовараОстаток КОНЕЦ КАК [Остаток $Число]
ИЗ
   Справочник.Товары as Спр
   ЛЕВОЕ СОЕДИНЕНИЕ $РегистрОстатки.ОстаткиТоваров( , ,(Товар) , (ОстатокТовара)) КАК Рег
   $Спр.ТекущийЭлемент = Рег.Товар
ГДЕ
   $Спр.МинОстаток > 0
   И $Спр.МинОстаток > прОстаток
   И $Спр.ПометкаУдаления = 0