Имя: Пароль:
1C
1C 7.7
v7: 1sqlite. Помогите получить документы движения из регистра
0 palpetrovich
 
02.04.15
11:16
продолжаю мучить склайт :)

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

табличка есть, циферки верные, в колонке iddoc - пусто :(
1 palpetrovich
 
02.04.15
11:24
а вот так:

    текст="
    |    SELECT
    |        Движения2.Товар Товар
    |        ,Движения2.iddoc iddoc
    |       ,Движения2.ОстатокТовара * (1 - Движения2.Debkred) Приход
    |       ,Движения2.ОстатокТовара * Движения2.Debkred Расход
    |    FROM
    |       [Регистр.ПартииТоваров] Движения2
    |    INNER Join [Журнал] Жур2 ON Жур2.iddoc = Движения2.iddoc
    |                AND Жур2.date BETWEEN :Дата1ПриходРасход And :Дата2ПриходРасход
    |    WHERE Движения2.Товар in (select val from ВыбрТовар)            
    |
    |Group by Движения2.Товар, Движения2.iddoc
    |";

iddoc - непустые, правда выглядят так примерно "1UEZ", да и товар тоже не лучше - "71P" :)
2 palpetrovich
 
02.04.15
11:27
+(1) о, если сделать в первом запросе так:
    //|   ,Рег.iddoc [iddoc :Документ]
    |   ,Рег.iddoc [iddoc :Строка.9]
то эти "1UEZ" - получаю ...но как-то хотелось совсем другого :)
3 Ёпрст
 
02.04.15
11:30
по-уму, нужно либо воткнуть галку быстрая обработка движений, или воткнуть отбор на одном из измерений. Чтоб не было соединения с журналом в тексте запроса.

На счет документа - либо добавить iddocdef в селект как Док_вид
, либо прибавлять iddocdef к iddoc и типизировать как Документ
4 palpetrovich
 
02.04.15
11:32
(3) т.е. проблема в том, что Док неопеределенного вида?
тогда почему это работает:
    |   ,Рег.ПрихДокумент [ПрихДокумент :Документ]
5 palpetrovich
 
02.04.15
11:36
странно как-то ваще-т, вытащить ТекущийДокумент при запросе в регистру - это-ж... как-бы всем надо, неужели все так сложно?
6 Ёпрст
 
02.04.15
11:40
(4) основы бы почмтал, что ле.

>>>тогда почему это работает:
>>>    |   ,Рег.ПрихДокумент [ПрихДокумент :Документ]

Это работает, потому, что ПрихДокумент  - реквизит с типом <Документ>, хранится как char 13, первые 4 символа - вид документа, т.е это iddocdef(4)+iddoc(9) - тут типизация до <Документ> будет работать.

У тебя же - есть только iddoc, типизировать можно, если или добавить доп поля для конкретизации типизации iddocdef, либо прибавить iddocdef к iddoc, либо сразу типизировать iddoc к нужному виду, например

select iddoc [Док :Документ.Реализация], если к примеру, стоит фильтр на вид документа в запросе.
7 palpetrovich
 
02.04.15
11:50
(6) основы это конечно хорошо, но лень... :)
"прибавить iddocdef к iddoc" - как именно, примерчик можно?
8 palpetrovich
 
02.04.15
11:51
и select iddoc [Док :Документ.Реализация] - саловато будет, доки то там - всякие-разные
9 palpetrovich
 
02.04.15
11:55
мля, ваще ничего не понимаю, сделал для прикола:
    |   ,Рег.iddoc [iddoc :Документ.РасходнаяРозничная]
в результат вывалились ВСЕ доки, правда первая таки была РасходнаяРозничная
10 palpetrovich
 
02.04.15
12:26
+(9) ниччего не понимаю, так
    |   ,Рег.iddoc [iddoc :Документ.Взаимозачет]
тоже вываливает все документы ...шаманство какое-то
11 Ёпрст
 
02.04.15
12:38
(7)

да ё..

либо так
1.
  select
      iddoc [Док :Документ]
      ,iddocdef Док_вид

2.либо так (нет лишней колонки)
  select
      iddocdef||iddoc [Док :Документ]
12 palpetrovich
 
02.04.15
13:40
(11) при всем уважении: " no such column: iddocdef"
13 palpetrovich
 
02.04.15
13:46
+(12) хм, так что-ли?

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

вроде работает
14 palpetrovich
 
02.04.15
14:10
забавненько,

|  ,'1234'||Рег.iddoc [Док :Документ]
вместо
|   ,iddocdef||Рег.iddoc [Док :Документ]

тоже дает как-бы верный результат, вот только "провалиться" в выбранный документ результирующей таблицы - не получается :)
на "Если Док.НайтиДокумент(ТекЗнач) = 1  Тогда" говорит:
Недопустимая операция, хотя в отладчике я разницы "ТекЗнач" для обоих вариантов - не заметил
15 palpetrovich
 
02.04.15
14:16
+(14) для варианта |  ,'1234'||Рег.iddoc [Док :Документ]
если не искать докумет, а сразу
        ТекЗнач = тз.ПолучитьЗначение(стр, "Док");
        ОткрытьФорму(ТекЗнач);
предлагается выбрать ВидДока, если выбрать верный - открывается форма
16 palpetrovich
 
02.04.15
14:26
лан, Ёпрст - спасибо за помощь, остальным - спасибо за внимание :)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой