|   |   | 
| 
 | 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 | 
        :)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |