Имя: Пароль:
1C
1C 7.7
v7: Прямой запрос.
0 Eeakie
 
14.05.14
01:50
Нужен отбор документов за период + остатки по 3 регистрам по каждому документу. Делаю так:

    Текст = "
    |select Выборка.Заявка [Заявка $Документ.Заявка]
    |    , sum(Выборка.Ост1) Бухгалтерия
    |    , sum(Выборка.Ост2) Склад
    |    , sum(Выборка.Ост3) Шайба
    |from(
    |    select Бухгалтерия.ПоСчету Заявка
    |        , Бухгалтерия.РезервТовараОстаток Ост1
    |        , 0 Ост2
    |        , 0 Ост3
    |    from
    |        $РегистрОстатки.Заявки(,, Фирма = :ТекущаяФирма) as Бухгалтерия
    |    
    |    union all
    |
    |    select Склад.Заявка Заявка
    |        , 0 Ост1
    |        , Склад.КоличествоОстаток Ост2
    |        , 0 Ост3
    |    from
    |        $РегистрОстатки.Ожидания(,, Фирма = :Центролаб) as Склад
    |
    |    union all
    |
    |    select Шайбы.Заявка Заявка
    |        , 0 Ост1
    |        , 0 Ост2
    |        , Шайбы.ОстатокТовараОстаток Ост3
    |    from
    |        $РегистрОстатки.ОстаткиТоваровОбщ(,, Фирма = :Центролаб) as Шайбы
    |    ) as Выборка
    |where
    |    Выборка.Заявка IN (select val from #Заявки)
    |group by
    |    Выборка.Заявка";

И всё бы ничего, но в результате получаю только документы, по которым хоть один остаток > 0. Как получить данные типа: "документ" "0" "0" "0"?
1 Eeakie
 
14.05.14
01:52
+(0) в списке документов 100% есть такие, по которым все 3 остатка = 0, но они не попадают.
2 Wobland
 
14.05.14
02:59
из документы левое остатки?
3 Eeakie
 
14.05.14
12:55
(2) Что?
4 Wobland
 
14.05.14
12:55
(3) from documents left join rests
5 vinogradъ
 
14.05.14
12:59
(4) бгг))
6 dk
 
14.05.14
13:00
добавь еще 1 union по заявкам с 0 0 0
7 Eeakie
 
14.05.14
13:02
(4) Кстати, да. Чё я обычным лэфтджойном не сделал?!
8 Eeakie
 
14.05.14
13:02
(6) Тоже вариант.
9 Ёпрст
 
14.05.14
13:03
+6

|   union all  select val,0,0,0 from #Заявки
10 dk
 
14.05.14
13:06
фильтр по заявкам лучше затащить внутрь параметров вирт табл остатков
$РегистрОстатки.ОстаткиТоваровОбщ(,, (Заявка IN (select val from #Заявки)) AND (Фирма = :Центролаб)) as Шайбы
11 Eeakie
 
14.05.14
13:12
Всё пошло. Спасибо.
(10) Чем лучше фильтр внутри ВТ?
12 Eeakie
 
14.05.14
13:16
Похоже, не самый умный вопрос ;)
13 Eeakie
 
14.05.14
13:54
А как через ВТ получить остатки, если одно из измерений находится в селекте?

select A
from $РегистрОстатки.Б(,, Измерение1 = А)?
14 Eeakie
 
14.05.14
13:57
Что-то я совсем туплю, походу...
15 Eeakie
 
14.05.14
14:17
Всё, разобрался. Можно закрывать.
Независимо от того, куда вы едете — это в гору и против ветра!