Вот пример запроса. Если период взять, что бы он включал границу, то можно все увидеть.
ИБ=СоздатьОбъект("ODBCDataBase"); ИБ.ПрисоединитьИБ(КаталогБазыOLE+"\",ПользовательOLE,ПарольOLE,"Driver={SQL Server};Server="+СокрЛП(СпрИБ.Сервер)+ +СокрЛП(СпрИБ.Пароль)+";"); RS=СоздатьОбъект("ODBCRecordset"); RS.УстБД(ИБ);
ТекстЗапроса = " |SELECT | СпрСклад.Code as Склад, | СпрТовар.Code as Товар, | Рег.ОстатокТовараНачальныйОстаток as НачОст, | Рег.ОстатокТовараПриход as Приход, | Рег.ОстатокТовараРасход as Расход, | Рег.ОстатокТовараКонечныйОстаток as КонОст |FROM | а,,Фирма=$ПустойИД ,(Товар,Склад),ОстатокТовара) as Рег |INNER JOIN | $Справочник.Номенклатура as СпрТовар ON СпрТовар.ID = Рег.Товар |INNER JOIN | $Справочник.МестаХранения as СпрСклад ON СпрСклад.ID = Рег.Склад |";
RS.УстановитьТекстовыйПараметр("НачДата", ДатаНачала); RS.УстановитьТекстовыйПараметр("КонДата", ДатаКонца);
А вот как он выглядит ... В базе к которой делается запрос, период установлен "ДЕКАДА", а в той из которой делается запрос "МЕСЯЦ" период с 30 пред. месяца по 1 число текущего.
SELECT СпрСклад.Code as Склад, СпрТовар.Code as Товар, Рег.ОстатокТовараНачальныйОстаток as НачОст, Рег.ОстатокТовараПриход as Приход, Рег.ОстатокТовараРасход as Расход, Рег.ОстатокТовараКонечныйОстаток as КонОст FROM ( select rb99_vt.Товар, rb99_vt.Склад, sum(rb99_vt.ОстатокТовараОстаток) - sum(rb99_vt.ОстатокТовараПриход) + sum(rb99_vt.ОстатокТовараРасход) as ОстатокТовараНачальныйОстаток , sum(rb99_vt.ОстатокТовараПриход) as ОстатокТовараПриход, sum(rb99_vt.ОстатокТовараРасход) as ОстатокТовараРасход, sum(rb99_vt.ОстатокТовараОстаток) as ОстатокТовараКонечныйОстаток from ( select ra99_vt.sp101 as Товар, ra99_vt.sp100 as Склад, case when ra99_vt.debkred = 0 then ra99_vt.sp102 else 0 end as ОстатокТовараПриход, case when ra99_vt.debkred = 1 then ra99_vt.sp102 else 0 end as ОстатокТовараРасход, 0 as ОстатокТовараОстаток from ra99 as ra99_vt (nolock) inner join _1sjourn as j99_vt (nolock) on j99_vt.iddoc = ra99_vt.iddoc where j99_vt.date_time_iddoc > '20091030' and j99_vt.date_time_iddoc < '20091101Z' and j99_vt.rf99 = 0x1 and (ra99_vt.sp3603=' 0 ') union all select rg99_vt.sp101 as Товар, rg99_vt.sp100 as Склад, 0, 0, rg99_vt.sp102 from rg99 as rg99_vt (nolock) where rg99_vt.period={d '2009-10-01'} and (rg99_vt.sp3603=' 0 ') ) as rb99_vt group by rb99_vt.Товар, rb99_vt.Склад having sum(rb99_vt.ОстатокТовараОстаток) - sum(rb99_vt.ОстатокТовараПриход) + sum(rb99_vt.ОстатокТовараРасход) <> 0 or sum(rb99_vt.ОстатокТовараПриход) <> 0 or sum(rb99_vt.ОстатокТовараРасход) <> 0 or sum(rb99_vt.ОстатокТовараОстаток) <> 0 ) as Рег INNER JOIN sc33 as СпрТовар ON СпрТовар.ID = Рег.Товар INNER JOIN sc31 as СпрСклад ON СпрСклад.ID = Рег.Склад
а если попытаться получить группировку по периоду, например по дням, то вообще выводиться ошибка!!!!!!
|