Имя: Пароль:
1C
1C 7.7
v7: 1с++ В запросе получить значение реквизита измерения регистра
0 Стрелок
 
20.09.13
09:28
Задача получить в запросе значение реквизита (строка) измерения (справочник) регистра

понимаю что нужен джоин а как не могу понять. 1срр недоступен. работал ночь голова не соображает. помогите конкретным куском листинга

вот запрос

Текст="SELECT
    |Рег.Фирма as [Фирма $Справочник.Фирмы],
    |Рег.Контрагент as [Контрагент $Справочник.Контрагенты],  
    |Рег.КредДокумент as [КредДокумент $Документ],
    |SUM(Рег.Долг) AS Долг
    |FROM
    |    (SELECT
    |        $Рег_1.Фирма AS Фирма,
    |        $Рег_1.Контрагент AS Контрагент,
    |        $Рег_1.КредДокумент AS КредДокумент,
    |        $Рег_1.Долг AS Долг
    |    FROM
    |        $РегистрИтоги.ВзаиморасчетыПокупателей AS Рег_1
    |    WHERE
    |        (PERIOD = :ПредМесяц)
    |        AND $Рег_1.Контрагент IN (SELECT Val FROM #Группа)
    |        AND $Рег_1.Фирма<>:ПустаяФирма
    |UNION ALL
    |
    |    SELECT
    |        $Рег_2.Фирма AS Фирма,
    |        $Рег_2.Контрагент AS Контрагент,
    |        $Рег_2.КредДокумент AS КредДокумент,
    |        $Рег_2.Долг*(1-Рег_2.debkred*2) AS Долг
    |    FROM
    |        $Регистр.ВзаиморасчетыПокупателей AS Рег_2
    |   INNER JOIN
    |        _1SJourn jr ON Рег_2.iddoc = jr.iddoc
    |            AND (jr.Date_Time_IDDoc BETWEEN :НачалоМесяца AND :ПредДата~)
    |            AND ($ФлагРегистра.ВзаиморасчетыПокупателей = 1)
    |           AND ($Рег_2.Контрагент IN (SELECT Val FROM #Группа))
    |           AND ($Рег_2.Фирма<>:ПустаяФирма)
    |    ) Рег  
    |WHERE (Долг<>0)
    |GROUP BY  
    |   Рег.Фирма,
    |   Рег.Контрагент,
    |   Рег.КредДокумент
    |
    |ORDER BY
    |    Рег.Контрагент";

надо в запросе получить реквизит "КодВКПК" измерения "Контрагент"

уж очень не хочется потом лопатить ТЗ на предмет установки этого самого кода.
1 Ёпрст
 
гуру
20.09.13
09:31
select
Клиентосы.КодВКПК,Рег.Фирма as [Фирма $Справочник.Фирмы], ...
...
left join $Справочник.Клиентосы as Клиентосы on Клиентосы.id =    Рег.Контрагент

GROUP BY  
    |   Рег.Фирма,Клиентосы.КодВКПК,...
2 Стрелок
 
20.09.13
09:32
(1) фирма тут каким боком? я понимаю что с ночи торможу, ты не мог бы прямо в мой запрос вставить то что надо - я оттанцую при случаи ;)
3 Стрелок
 
20.09.13
09:33
а кажется вкурил. сенксь

левое соединение ставить ДО

|FROM
    |    (SELECT

или внутри?
4 Ёпрст
 
гуру
20.09.13
09:33
Текст="SELECT
|Клиентосы.КодВКПК,
    |Рег.Фирма as [Фирма $Справочник.Фирмы],
    |Рег.Контрагент as [Контрагент $Справочник.Контрагенты],  
    |Рег.КредДокумент as [КредДокумент $Документ],
    |SUM(Рег.Долг) AS Долг
    |FROM
    |    (SELECT
    |        $Рег_1.Фирма AS Фирма,
    |        $Рег_1.Контрагент AS Контрагент,
    |        $Рег_1.КредДокумент AS КредДокумент,
    |        $Рег_1.Долг AS Долг
    |    FROM
    |        $РегистрИтоги.ВзаиморасчетыПокупателей AS Рег_1
    |    WHERE
    |        (PERIOD = :ПредМесяц)
    |        AND $Рег_1.Контрагент IN (SELECT Val FROM #Группа)
    |        AND $Рег_1.Фирма<>:ПустаяФирма
    |UNION ALL
    |
    |    SELECT
    |        $Рег_2.Фирма AS Фирма,
    |        $Рег_2.Контрагент AS Контрагент,
    |        $Рег_2.КредДокумент AS КредДокумент,
    |        $Рег_2.Долг*(1-Рег_2.debkred*2) AS Долг
    |    FROM
    |        $Регистр.ВзаиморасчетыПокупателей AS Рег_2
    |   INNER JOIN
    |        _1SJourn jr ON Рег_2.iddoc = jr.iddoc
    |            AND (jr.Date_Time_IDDoc BETWEEN :НачалоМесяца AND :ПредДата~)
    |            AND ($ФлагРегистра.ВзаиморасчетыПокупателей = 1)
    |           AND ($Рег_2.Контрагент IN (SELECT Val FROM #Группа))
    |           AND ($Рег_2.Фирма<>:ПустаяФирма)
    |    ) Рег  
|left join $Справочник.Клиентосы as Клиентосы on Клиентосы.id =    Рег.Контрагент
    |WHERE (Долг<>0)
    |GROUP BY Клиентосы.КодВКПК,
    |   Рег.Фирма,
    |   Рег.Контрагент,
    |   Рег.КредДокумент
    |
    |ORDER BY
    |    Рег.Контрагент";
5 Стрелок
 
20.09.13
09:41
сенькс
6 Ёпрст
 
гуру
20.09.13
10:11
|WHERE (Долг<>0)

вот это переделай на
|having SUM(Рег.Долг)<>0
7 Стрелок
 
20.09.13
10:14
(6) ок гляну
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан