|
v7: вопрос по прямому запросу к MSSQL | ☑ | ||
---|---|---|---|---|
0
ksa-nsk
09.08.11
✎
22:43
|
Здравствуйте,
не могу сообразить, как в прямой запрос для выборки документов по контрагенту ТекстЗапроса = " |SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, | COALESCE($АВР.Контрагент, $СФ.Контрагент) as [Контрагент $Справочник.Контрагенты] |FROM | _1SJourn Жур |LEFT JOIN | $Документ.ОказаниеУслуг as АВР ON АВР.IDDoc = Жур.IDDoc |LEFT JOIN | $Документ.СчетФактура as СФ ON СФ.IDDoc = Жур.IDDoc |WHERE | ($АВР.Контрагент = :ВыбКонтрагент OR $СФ.Контрагент = :ВыбКонтрагент) AND | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.Closed & 1 = 1 |"; RS.УстановитьТекстовыйПараметр("НачДата", НачДата); RS.УстановитьТекстовыйПараметр("КонДата", КонДата); RS.УстановитьТекстовыйПараметр("ВыбКонтрагент", ВыбКонтрагент); добавить еще выборку по выпискам, пробовал ТекстЗапроса = " |SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, | COALESCE($АВР.Контрагент, $СФ.Контрагент, $Выписка.Субконто1) as [Контрагент $Справочник] |FROM | _1SJourn Жур |LEFT JOIN | $Документ.ОказаниеУслуг as АВР ON АВР.IDDoc = Жур.IDDoc |LEFT JOIN | $Документ.СчетФактура as СФ ON СФ.IDDoc = Жур.IDDoc |LEFT JOIN | $Документ.Выписка as Выписка ON Выписка.IDDoc = Жур.IDDoc |WHERE | ($АВР.Контрагент = :ВыбКонтрагент OR $СФ.Контрагент = :ВыбКонтрагент OR $Выписка.Субконто1 = :ВыбКонтрагент) AND | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.Closed & 1 = 1 |"; RS.УстановитьТекстовыйПараметр("НачДата", НачДата); RS.УстановитьТекстовыйПараметр("КонДата", КонДата); RS.УстановитьТекстовыйПараметр("ВыбКонтрагент", ВыбКонтрагент); ругается на Субконто1 - он в табличной части и неопределенного вида... |
|||
1
Rie
09.08.11
✎
22:44
|
(0) Попробуй выделить из него ту часть, которая ID.
|
|||
2
Лефмихалыч
09.08.11
✎
22:46
|
хреново вам без v8...
|
|||
3
ksa-nsk
09.08.11
✎
22:50
|
(1) гмм, надо как-то умудриться обратиться к Субконто1 в Выписке, ну и привязать к запросу, в этом и проблема(
|
|||
4
toypaul
гуру
09.08.11
✎
23:04
|
соединять с табличной частью а не с шапкой надо. и выделять из Субконто1 ИД. в toysql это проще все делается
|
|||
5
Азат
10.08.11
✎
00:31
|
(3) ты хелп читал? неопр. реквизит будет иметь вид 9 + 4, если не ошибаюсь
|
|||
6
Rie
10.08.11
✎
00:33
|
(5) Ошибаешься. Неопределенный тип - 2 байта на тип, после которых уже идёт 9+4.
|
|||
7
Азат
10.08.11
✎
00:35
|
(6) легко может быть, но автору это посмотреть без особых проблем... что ему мешало просто в селект втыкнуть это поле и на него внимательно поглядеть
|
|||
8
Варвар
10.08.11
✎
01:25
|
(4) там много чего проще делается. В toysql.
|
|||
9
ksa-nsk
12.08.11
✎
10:13
|
все, сделал, на всякий случай, может кому сгодится,
ТекстЗапроса = " |SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, | CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок, | COALESCE($ДокАВР.Контрагент, $ДокСФ.Контрагент, СпрК.ID) as [Контрагент $Справочник.Контрагенты], | COALESCE($ДокАВР.Договор, $ДокСФ.Договор, СпрД.ID) as [Договор $Справочник.Договоры], | СпрОрг.ID as [Организация $Справочник.НашиОрганизации], | COALESCE(ДокАВР.SP319, ДокСФ.SP11007, ВыпискаШ.SP228) as Расход, | ВыпискаШ.SP227 as Приход |FROM | _1SJourn Жур |LEFT JOIN | $Справочник.НашиОрганизации as СпрОрг ON СпрОрг.ID = :ВыбНашаОрганизация |LEFT JOIN | $Справочник.Контрагенты as СпрК ON СпрК.ID = :ВыбКонтрагент |LEFT JOIN | $Справочник.Договоры as СпрД ON СпрД.ID = :ВыбДоговор |LEFT JOIN | scs.dbo.DT238 as ВыпискаТ ON ВыпискаТ.IDDoc = Жур.IDDoc |LEFT JOIN | scs.dbo.DH238 as ВыпискаШ ON ВыпискаШ.IDDoc = Жур.IDDoc |LEFT JOIN | $Документ.ОказаниеУслуг as ДокАВР ON ДокАВР.IDDoc = Жур.IDDoc |LEFT JOIN | $Документ.СчетФактура as ДокСФ ON ДокСФ.IDDoc = Жур.IDDoc |WHERE | (LEFT(RIGHT(ВыпискаТ.SP231,17),11) = :ВыбКонтрагент | OR $ДокАВР.Контрагент = :ВыбКонтрагент | OR $ДокСФ.Контрагент = :ВыбКонтрагент) | AND(LEFT(RIGHT(ВыпискаТ.SP232,17),11) =:ВыбДоговор | OR $ДокАВР.Договор = :ВыбДоговор | OR $ДокСФ.Договор = :ВыбДоговор) | AND(LEFT(RIGHT(ВыпискаШ.SP50322,17),11) = :ВыбНашаОрганизация | OR $ДокАВР.НашаОрганизация = :ВыбНашаОрганизация | OR $ДокСФ.НашаОрганизация = :ВыбНашаОрганизация) | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.Closed & 1 = 1 |"; это в выборка в разрезе Контрагента, Договора, Организации (реквизит шапок) + выводит итого по документу |
|||
10
ksa-nsk
12.08.11
✎
10:15
|
Обрабатываются документы "ОказаниеУслуг", "СчетФактура", "Выписка"
тема закрыта))) |
|||
11
Ёпрст
12.08.11
✎
11:12
|
(9) дык неверный же код..
(10) рано радуешься. ЗЫ: и чего за манера не пользоваться метапарсером и писать SP и т.д.. |
|||
12
Ёпрст
12.08.11
✎
11:14
|
+11 я б даже больше сказал, не то что не верный, а бредовый..
|
|||
13
ksa-nsk
12.08.11
✎
11:34
|
(11),(12) для кого некрасивый и неверный, а у кого и рабочий, где ты раньше был с умными советами (хотя бы как к табличной части документа обратиться), когда вопрос был актуален.
|
|||
14
Дык ё
12.08.11
✎
12:44
|
(12) бредовый, тормозной - это да. а в каком месте он не верный? чета не соображу :-?
|
|||
15
Ёпрст
12.08.11
✎
16:22
|
(14)
LEFT JOIN | $Справочник.НашиОрганизации as СпрОрг ON СпрОрг.ID = :ВыбНашаОрганизация И т.д по всем левым соединениям.. Ну и нафиг оно надо с таким условием в ON ? :))) |
|||
16
Дык ё
12.08.11
✎
16:46
|
(15) ну выбрал он N раз одну и ту же строку из справочника, ну вывел в селекте ид строки, который и так ему был известен.. я ж не про бредовость, а про неверность спрашиваю :-)
|
|||
17
Ёпрст
12.08.11
✎
16:56
|
(16) ну ладно, уговорил
|
|||
18
Ёпрст
12.08.11
✎
16:56
|
:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |