Имя: Пароль:
1C
1C 7.7
v7: 1sqlite. Остаток на произвольную дату
0 palpetrovich
 
25.03.15
15:16
Код:

    текст="
    |Select
    |   Рег.Товар [Товар :Справочник.Номенклатура]
    |   ,SUM(Рег.НачОст+Рег.Приход-Рег.Расход) [КонОст :Число]
    |From
    |    (
    |    SELECT
    |         Итоги.Товар Товар
    |        ,Итоги.ОстатокТовара НачОст
    |        ,0 Приход
    |        ,0 Расход
    |    FROM
    |        [РегистрИтоги.ОстаткиТоваров] Итоги
    |
    |    WHERE
    |        Итоги.period = :ПредПериод
    |
    |   UNION ALL
    |
    |    SELECT
    |         Движения.Товар
    |        ,Движения.ОстатокТовара * (1 - Движения.debkred * 2)
    |        ,0
    |        ,0
    |    FROM
    |        [Регистр.ОстаткиТоваров] AS Движения
    |   INNER Join [Журнал] Жур ON Жур.iddoc = Движения.iddoc and Жур.date BETWEEN :НачПериод And :КонПериод
    |
    |) Рег
    |    WHERE
    |        Рег.Товар in (select val from ВыбрТовар)
    |
    |Group by Рег.Товар
    |";

Есть у меня подозрение, что условие: "WHERE Рег.Товар in (select val from ВыбрТовар)" я делаю не там.
Если да - то как надо?
1 palpetrovich
 
25.03.15
15:20
+(0) а может и все не так ...есть еще подозрение что и Рег.Приход, Рег.Расход я не получаю :(
2 palpetrovich
 
25.03.15
15:22
+(1) хотя, сейчас проверил - как-то таки считает... и даже правильно
3 palpetrovich
 
25.03.15
15:24
+(2) хотя, они там нафик не нужны наверное, так  пашет

    текст="
    |Select
    |   Рег.Товар [Товар :Справочник.Номенклатура]
    |   ,SUM(Рег.НачОст) [КонОст :Число]
    |From
    |    (
    |    SELECT
    |         Итоги.Товар Товар
    |        ,Итоги.ОстатокТовара НачОст
    |    FROM
    |        [РегистрИтоги.ОстаткиТоваров] Итоги
    |
    |    WHERE
    |        Итоги.period = :ПредПериод
    |
    |   UNION ALL
    |
    |    SELECT
    |         Движения.Товар
    |        ,Движения.ОстатокТовара * (1 - Движения.debkred * 2)
    |    FROM
    |        [Регистр.ОстаткиТоваров] AS Движения
    |   INNER Join [Журнал] Жур ON Жур.iddoc = Движения.iddoc and Жур.date BETWEEN :НачПериод And :КонПериод
    |
    |) Рег
    |    WHERE
    |        Рег.Товар in (select val from ВыбрТовар)
    |
    |Group by Рег.Товар
    |";
4 palpetrovich
 
25.03.15
15:37
может так правильней?

    текст="
    |Select
    |   Рег.Товар [Товар :Справочник.Номенклатура]
    |   ,SUM(Рег.НачОст) [КонОст :Число]
    |From
    |    (
    |    SELECT
    |         Итоги.Товар Товар
    |        ,Итоги.ОстатокТовара НачОст
    |    FROM
    |        [РегистрИтоги.ОстаткиТоваров] Итоги
    |
    |    WHERE
    |        Итоги.period = :ПредПериод
    |        AND Итоги.Товар in (select val from ВыбрТовар)
    |
    |   UNION ALL
    |
    |    SELECT
    |         Движения.Товар
    |        ,Движения.ОстатокТовара * (1 - Движения.debkred * 2)
    |    FROM
    |        [Регистр.ОстаткиТоваров] AS Движения
    |   INNER Join [Журнал] Жур ON Жур.iddoc = Движения.iddoc and Жур.date BETWEEN :НачПериод And :КонПериод
    |    WHERE
    |        Движения.Товар in (select val from ВыбрТовар)
    |
    |) Рег
    |
    |Group by Рег.Товар
    |";
5 palpetrovich
 
25.03.15
15:41
проверил по времени (4) - побыстрее будет
6 Sserj
 
25.03.15
15:45
(5) Вот что не говори приятно поговорить с умным человеком особенно с собой
:)
7 Ёпрст
 
25.03.15
15:51
(0) ну как бэ в (0) и в (4) разные запросы..
если че, приход и расход не верно считаешь
8 palpetrovich
 
25.03.15
16:01
(7) я (4) уже с (3) сравнивал, т.е. вопрос где условие должно быть
9 Ёпрст
 
25.03.15
16:02
ну и.. на регистр нужно галку воткнуть или поставить отбор на одном из измерений, чтоб не было соединения с журналом в запросе.
10 palpetrovich
 
25.03.15
16:13
(9) дык, это-ж перепровечти все прийдется..
11 Ёпрст
 
25.03.15
16:13
(10) че ?
12 Ёпрст
 
25.03.15
16:14
реструктуризация регистра будет, да... но проводить ничего не надо
13 Попытка1С
 
25.03.15
16:16
Юзайте уже класс прямойзапрос с виртуальными табличками.
14 palpetrovich
 
25.03.15
16:23
(12) поянтно ...если сделаю "отбор по товару" хуже не будет? :)
(13) есть подозоение что это не к файловой базе...
15 Попытка1С
 
25.03.15
17:37
(14) В смысле не к файловой базе? ПрямойЗапрос работает и на файловой и на скл