Помогите оптимизироать запрос .
ПоставщикДанных = СоздатьОбъект("ПоставщикДанных"); ПоставщикДанных.ТипЗначений = "Документ.Счет"; ПоставщикДанных.КонтейнерТабличногоПоля = "ДокументыСписокДокументСчет"; ПоставщикДанных.КонтейнерКоманднойПанели = "ИДКоманднаяПанель"; Данные = ПоставщикДанных.Данные; Данные.РежимОтладки = 1; Данные.НоваяКолонка("НомерДокумента"); Данные.НоваяКолонка("ДатаДокумента"); Данные.НоваяКолонка("ВремяДокумента");
ТекстСоединения = "left join | $РегистрОстатки.ПотенциальныеПродажиФакт(,(???????????),(ЗаказПокупателя),(СуммаОплаты,СуммаОтгрузки),(???????????)) as РегОст | on $ТекущийОбъект.ТекущийДокумент = РегОст.ЗаказПокупателя |"; Данные.ДобавитьСоединениеДанных("Оплачено",ТекстСоединения); ток,0)","Число",15,2,1); Данные.НоваяКолонка("Оплачено"); иОстаток,0)","Число",15,2,1); Данные.НоваяКолонка("Отгружено");
Как связать $ТекущийОбъект.ТекущийДокумент и ЗаказПокупателя непосредственно в соединении?
Текст запроса отладки :
select top 20 journ.date_time_iddoc as ПозицияДокумента, journ.iddoc as ТекущийДокумент, case when journ.ismark = 1 then 7 else case when journ.closed&1 = 1 then 8 else 6 end end as Пиктограмма, ltrim(journ.docno) as НомерДокумента, left(journ.date_time_iddoc,8) as ДатаДокумента, journ.closed&1 as Проведен, case when journ.ismark = 1 then 1 else 0 end as ПометкаУдаления, journ.dnprefix as ПрефиксНомера, journ.row_id as НомерСтроки ЖурналаДокументов, journ.iddocdef as ВидДокументаСортировка, journ.docno as НомерДокументаСортировка, dbo.ConvertTime(substring(journ.date_time_iddoc,9,6)) as ВремяДокумента, ISNULL(РегОст.СуммаОплатыОстаток,0) as Оплачено, ISNULL(РегОст.СуммаОтгрузкиОстаток,0) as Отгружено from _1SJOURN as journ (nolock) inner join DH981 as dh981 (n olock) on journ.iddoc = dh981.iddoc and journ.IDDOCDEF = 981 left join ( SELECT ЗаказПокупателя ,SUM(СуммаОплатыОстаток) AS СуммаОплатыОстаток ,SUM(СуммаОтгрузкиОстаток) AS СуммаОтгрузкиОстаток FROM (SELECT rg_23275.sp23276 AS ЗаказПокупателя ,rg_23275.sp23274 AS СуммаОплатыОстаток ,rg_23275.sp24132 AS СуммаОтгрузкиОстаток FROM RG23275 AS rg_23275 (nolock) WHERE rg_23275.PERIOD = '20171201 ' ) AS vt_ra_23275 GROUP BY ЗаказПокупателя HAVING (SUM(СуммаОплатыОстаток) <> 0) OR (SUM(СуммаОтгрузкиОстаток) <> 0) ) as РегОст on journ.IDDOC = РегОст.ЗаказПокупателя where (((left(journ.date_time_iddoc,8) between '20171001' and '20171102Z'))) order by journ.date_time_iddoc
|