1c++ 7.7 Как добавить еще 1 вид документа в запрос? #502648


#0 by Absurdus
SELECT Жур.IDDoc as [Док $Документ], Жур.IDDocDef as Док_вид, CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,   SUM($Док.Сумма) as Сумма FROM INNER JOIN $Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc WHERE Жур.Date_Time_IDDoc BETWEEN :НачалоНедели AND :КонецНедели~ Жур.IDDocDef = $ВидДокумента.Реализация Жур.Closed & 1 = 1 GROUP BY Жур.IDDoc, Жур.IDDocDef, Жур.Date_Time_IDDoc Нужно чтобы отбиралось по двум видам док-тов: Реализация и РеализацияРозница. Как переделать запрос??
#1 by Попытка1С
UNION ALL
#2 by vitecd
union?
#3 by Absurdus
Куда вставит? Что написать??
#4 by Дык ё
а нафига там группировка при детализации до документа?
#5 by Absurdus
Надо..
#6 by Absurdus
Видимо придется двумя запросами ))
#7 by vitecd
читай про inner и union с ним
#8 by Дык ё
мона исчо left join + coalesce :-)
#9 by Злой Бобр
SELECT Жур.IDDoc as [Док $Документ], Жур.IDDocDef as Док_вид, CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,   SUM($Док.Сумма) as Сумма FROM INNER JOIN $Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc WHERE Жур.Date_Time_IDDoc BETWEEN :НачалоНедели AND :КонецНедели~ Жур.IDDocDef = $ВидДокумента.Реализация Жур.Closed & 1 = 1 GROUP BY Жур.IDDoc, Жур.IDDocDef, Жур.Date_Time_IDDoc UNION SELECT Жур.IDDoc, Жур.IDDocDef, SUM($Док.Сумма) INNER JOIN $Документ.РеализацияРозница as Док ON Док.IDDoc = Жур.IDDoc WHERE Жур.Date_Time_IDDoc BETWEEN :НачалоНедели AND :КонецНедели~ Жур.IDDocDef = $ВидДокумента.РеализацияРозница Жур.Closed & 1 = 1 GROUP BY Жур.IDDoc, Жур.IDDocDef, Жур.Date_Time_IDDoc
#10 by Absurdus
Запрос.УстТипыКолонок1С("Строка,Строка,Дата,Число"); {\USSR2DBA2_2010_140510EXTFORMSОБРАБОТКАМАТРИЦЫКОНТРАГЕНТОВ.ERT}: Данный метод возможно вызывать только после подготовки запроса или открытия курсора
#11 by Дык ё
эта строчка для запроса из не нужна
#12 by Absurdus
Закамментил.. Вываливается пустой запрос
#13 by Absurdus
$Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc       AND INNER JOIN    $Документ.РеализацияРозница as Док1 ON Док.IDDoc = Жур.IDDoc       а так неправильно будет?
#14 by vitecd
запусти - узнаешь :)
#15 by Ёпрст
У реквизита Сумма, стоит итог по колонке ? Если да, то нафига там уперлась группировка + функция сумма ? неправильно, це же очевидно.
#16 by Absurdus
правильно? - следствие из этого. как это обойти??
#17 by Mikeware
Контрагент - наверняка графа отбора.
#18 by Absurdus
правильно?
#19 by Ёпрст
ты кого спрашиваешь? А так, можно как юнион, так и лефт джоин сделать или по табличке 1срдок слепить..
#20 by Absurdus
Сумма- итог по колонке стоит. Контрагент - графа отбора
#21 by Mikeware
Шапки документов и табличку ссылок  джойни к журналу. Суммы из шапок, отбор по журналу по дате, по таюлице ссылок - по графе контры
#22 by Ёпрст
+21 группировка не нужна, функция сумма-тоже
#23 by Mikeware
А я где-то писал, что нужна группировка?
#24 by Ёпрст
я добавил, а то автор не догонит :)
#25 by Absurdus
Автор итак мало что догоняет ))))
#26 by Ёпрст
ну так сделай и всё.. SELECT Жур.IDDoc as [Док $Документ], Жур.IDDocDef as Док_вид, CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,   COALESCE($Док.Сумма,$Док2.Сумма) as Сумма FROM Left JOIN    $Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc    $Документ.РеализацияРозница as Док2 ON Док2.IDDoc = Жур.IDDoc WHERE Жур.Date_Time_IDDoc BETWEEN :НачалоНедели AND :КонецНедели~
#27 by Absurdus
Запрос.УстТипыКолонок1С("Строка,Строка,Дата,Число"); {\USSR2DBA2_2010_140510EXTFORMSОБРАБОТКАМАТРИЦЫКОНТРАГЕНТОВ.ERT}: Данный метод возможно вызывать только после подготовки запроса или открытия курсора Вот это как обойти?? Если закамментить эту строчку, запрос получается пустым.
#28 by Ёпрст
А нахрена ты это пишешь вообще ? У тебя же запрос не параметезированный  и не подготовленный.
#29 by Absurdus
На одном виде документов все прекрасно работало! Что сейчас мешает также прекрасно работать?
#30 by Ёпрст
#31 by Absurdus
.......................... Поему тогда в таблице одна и таже строка неск кучу раз встречается? И запрос из-за этого в рсотни раз медленнее работать стал.
#32 by Ёпрст
ой врешь.. Показывай весь код.
#33 by Absurdus
Жур.IDDoc as [Док $Документ], Жур.IDDocDef as Док_вид, CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,   COALESCE($Док.Сумма,$Док2.Сумма) as Сумма FROM INNER JOIN    $Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc          $Документ.РеализацияРозница as Док2 ON Док.IDDoc = Жур.IDDoc       WHERE    Жур.Date_Time_IDDoc BETWEEN "+ДатаВСКЛ(НачалоНедели)+" AND "+ДатаВСКЛ(СледующийВизит)+" AND";
#34 by Ёпрст
п..ц Научить пользоваться копи-пастом ? Ты различия с вообще не видишь ?
#35 by Absurdus
Переделал :) Но сейчас не отбирает по контрагентам и адресам, фигачит все подряд
#36 by Ёпрст
не верю. В выборке будут только документы с выбранными клиентосами и адресами.
#37 by Ёпрст
а ёпт, точно, ты же всё из журнала тащишь, тогда так: Жур.IDDoc as [Док $Документ], Жур.IDDocDef as Док_вид, CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,   COALESCE($Док.Сумма,$Док2.Сумма) as Сумма FROM Left JOIN    $Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc Left JOIN    $Документ.РеализацияРозница as Док2 ON Док2.IDDoc = Жур.IDDoc WHERE Жур.Date_Time_IDDoc BETWEEN :НачалоНедели AND :КонецНедели~
#38 by Absurdus
Ага, заработало! Огромное спасибо!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С