Имя: Пароль:
1C
1C 7.7
v7: 1с++ не работает запрос
0 Aragan
 
04.09.12
09:44
SELECT

Рег.Клиент as [Клиент $Справочник.Клиенты],
Рег.КредДокумент as [Док $Документ] ,
Рег.ДолгОстаток as Количество
FROM
$РегистрОстатки.Взаиморасчеты(:ВыбДата,INNER JOIN
(
SELECT DISTINCT
   $Док.Клиент as [Клиент $Справочник.Клиенты]
FROM
   _1SJourn as Жур
INNER JOIN
$Документ.РасходнаяРеализ as Док ON Док.IDDoc = Жур.IDDoc
INNER JOIN
$Справочник.Клиенты as Клиент ON Клиент.ID = $Док.Клиент
WHERE
   Жур.Date_Time_IDDoc BETWEEN :ВыбДата AND :ВыбДата~ AND
   Жур.IDDocDef = $ВидДокумента.РасходнаяРеализ AND Жур.Closed & 1 = 1) as qw on Клиент = qw.Клиент  
,,
) as Рег
1 Aragan
 
04.09.12
09:44
Что не так?
2 Mikeware
 
04.09.12
09:45
что за бред?
3 Андрюха
 
04.09.12
09:46
(0) Вид документа из Жур добавь в SELECT
4 Mikeware
 
04.09.12
09:48
(3) какой там "вид документа" - он в секцию соединений виртуальной таблиы напихал всякой фигни, да еще типизирует в ней зачем-то
5 Aragan
 
04.09.12
09:51
(4) Мне нужны остатки по списку клиентов по которым были выписанны документы за период
6 Aragan
 
04.09.12
09:51
SELECT DISTINCT
   $Док.Клиент as [Клиент $Справочник.Клиенты]
FROM
   _1SJourn as Жур
INNER JOIN
$Документ.РасходнаяРеализ as Док ON Док.IDDoc = Жур.IDDoc
INNER JOIN
$Справочник.Клиенты as Клиент ON Клиент.ID = $Док.Клиент
WHERE
  Жур.Date_Time_IDDoc BETWEEN :ВыбДата AND :ВыбДата~ AND
  Жур.IDDocDef = $ВидДокумента.РасходнаяРеализ AND Жур.Closed & 1 = 1

Этот кусок отдельно нормально отрабатывает и список возвращает
7 Ёпрст
 
04.09.12
09:54
(6) и нафига ЭТО унутр ВТ пихать, еще и с типизацией ?
8 Mikeware
 
04.09.12
09:56
<Соединение>
Тип: конструкция типа join. На языке SQL можно описать дополнительные
соединения с таблицами, которые могут быть необходимы для формирования
условий в следующем параметре. Можно оперировать полями измерений регистра,
обращаясь к ним по идентификатору 1С.
По умолчанию отсутствует.

<Условие>
Тип: конструкция типа where. На языке SQL можно описать условие для ограничения
выборки. Можно оперировать полями измерений регистра, обращаясь к ним по
идентификатору 1С, а также полями таблиц, соединения с которыми были описаны
в предыдущем параметре.
По умолчанию отсутствует.
9 Ёпрст
 
04.09.12
10:04
так хотя бы пиши:

select
Рег.Клиент as [Клиент $Справочник.Клиенты],
Рег.КредДокумент as [Док $Документ] ,
Рег.ДолгОстаток as Количество
from
$РегистрОстатки.Взаиморасчеты(:ВыбДата,,,(Клиент,КредДокумент),(ДолгОстаток)) as Рег
where Рег.Клиент in (
   select
       $Док.Клиент
   from
       $Документ.РасходнаяРеализ (nolock) as Док
   inner join
       _1SJourn (nolock) as Жур ON Док.IDDoc = Жур.IDDoc
   and Жур.IDDocDef = $ВидДокумента.РасходнаяРеализ
   and Жур.Date_Time_IDDoc BETWEEN :ВыбДата AND :ВыбДата~
   and Жур.Closed & 1 = 1)
10 trad
 
04.09.12
10:04
(7) а чо бы и не впихать, но с типизацией конечно погорячился
11 Aragan
 
04.09.12
10:17
(9) Запрос >>> ODBCRecordset:ВыполнитьИнструкцию() error:
Meta name parser error: неизвестное метаимя или алиас "$Док"
12 Aragan
 
04.09.12
10:21
(10) Да типизацию уже убрал все равно не отрабатывает
13 Ёпрст
 
04.09.12
10:27
(11)
select
Рег.Клиент as [Клиент $Справочник.Клиенты],
Рег.КредДокумент as [Док $Документ] ,

Рег.ДолгОстаток as Количество

from
$РегистрОстатки.Взаиморасчеты(:ВыбДата,,,(Клиент,КредДокумент),(ДолгОстаток)) as Рег
where Рег.Клиент in (
   select
       $Док.Клиент
   from
       $Документ.РасходнаяРеализ  as Док (nolock)
   inner join
       _1SJourn  as Жур (nolock)ON Док.IDDoc = Жур.IDDoc
   and Жур.IDDocDef = $ВидДокумента.РасходнаяРеализ
   and Жур.Date_Time_IDDoc BETWEEN :ВыбДата AND :ВыбДата~
   and Жур.Closed & 1 = 1)
14 Aragan
 
04.09.12
10:31
(13) ТОчно))
15 ЧеловекДуши
 
04.09.12
10:36
(14)Но быстрее было бы, если бы ты запрос уложил бы во временную таблицу

select
       $Док.Клиент
   from
       $Документ.РасходнаяРеализ  as Док (nolock)
   inner join
       _1SJourn  as Жур (nolock)ON Док.IDDoc = Жур.IDDoc
   and Жур.IDDocDef = $ВидДокумента.РасходнаяРеализ
   and Жур.Date_Time_IDDoc BETWEEN :ВыбДата AND :ВыбДата~
   and Жур.Closed & 1 = 1)
16 Aragan
 
04.09.12
10:41
а как бы добавить еще конструкцию типа -
Условие(КредДокумент.ДатаДок<Дата(Число(ВыбКонПериода-Клиент.СрокРеализ-Клиент.ПослеСрокаРеализ)));
17 Ёпрст
 
04.09.12
10:47
(16) а есть уверенность, что вот такое преобразование числа к дате даёт нужный результат ?!

Дата(Число(ВыбКонПериода-Клиент.СрокРеализ-Клиент.ПослеСрокаРеализ))
18 Ёпрст
 
04.09.12
10:47
мот проще так писать, не ?

ВыбКонПериода-Клиент.СрокРеализ-Клиент.ПослеСрокаРеализ

нахрена дату в число и потом обратно ?
19 Mikeware
 
04.09.12
10:48
(16) datediff()
20 Ёпрст
 
04.09.12
10:49
а так, dateadd в помощь для разности ВыбКонПериода-Клиент.СрокРеализ-Клиент.ПослеСрокаРеализ
21 Mikeware
 
04.09.12
10:51
(20) ну, или так...