Хочу поблагодарить всех кто учатствовал в помощи наставления! И хочу выложить, то что в конце концов я хотел получить в идеале, мне нужно было получить остатки и движение по месяцам в разрезе складов, товарных групп, может кому нибудь пригодиться в хозяйстве:
Сам код:
ДатаОст=НачМесяца(НачДата)-1;
НачалоМесяца=НачМесяца(НачДата)-1;
recordset.УстановитьТекстовыйПараметр("НачалоМесяца",НачалоМесяца);
recordset.УстановитьТекстовыйПараметр("ДатаОст",ДатаОст);
recordset.УстановитьТекстовыйПараметр("НачДата",НачДата);
recordset.УстановитьТекстовыйПараметр("КонДата",КонДата);
recordset.УложитьСписокОбъектов(ВыбТовар,"#ВыбТовар","Номенклатура");
recordset.УложитьСписокОбъектов(ВыбСклад,"#ВыбСклад","Склады");
ТекстЗапроса="
|SELECT Номенклатура, ТорговаяМарка,Склад,Период,SUM(НачОст) НачОст, SUM(Приход) Приход, SUM(Расход) Расход, SUM(РасхВнутр) РасходВнутр ,SUM(НачОст)+SUM(Приход)-SUM(Расход)-SUM(РасхВнутр) КонОст
|FROM (SELECT СпрТов.CODE Номенклатура,
| СпрГр.DESCR ТорговаяМарка,
| СпрСклад.DESCR Склад,
| dateadd(month,1,dateadd(day,1-day(dateadd(day,1,РегИт.PERIOD)),РегИт.PERIOD))-1 Период,
| $РегИт.Количество НачОст,
| 0 Приход,
| 0 Расход,
| 0 РасхВнутр
| FROM $РегистрИтоги.ОстаткиТМЦ РегИт
| INNER JOIN $Справочник.Номенклатура СпрТов ON СпрТов.ID=$РегИт.Номенклатура
| LEFT JOIN $Справочник.Номенклатура СпрГр ON СпрГр.ID=СпрТов.PARENTID
| INNER JOIN $Справочник.Склады СпрСклад ON СпрСклад.ID=$РегИт.Склад
| WHERE РегИт.PERIOD=:ДатаОст";
Если ПустоеЗначение(ВыбСклад)=1 Тогда
Иначе
ТекстЗапроса=ТекстЗапроса+" AND $РегИт.Склад IN (SELECT val FROM #ВыбСклад)";
КонецЕсли;
Если ПустоеЗначение(ВыбТовар)=1 Тогда
Иначе
ТекстЗапроса=ТекстЗапроса+" AND $РегИт.Номенклатура IN (SELECT val FROM #ВыбТовар)";
КонецЕсли;
ТекстЗапроса=ТекстЗапроса+"
|
|UNION ALL
|
|SELECT СпрТов.CODE Номенклатура,
| СпрГр.DESCR ТорговаяМарка,
| СпрСклад.DESCR Склад,
| as DateTime))),dateadd(day,1,CAST(LEFT(Жур.Date_Time_IDDoc,8) as DateTime))))-1 Период,
| $РегОб.Количество*(1-РегОб.DEBKRED*2) НачОст,
| 0 Приход,
| 0 Расход,
| 0 РасхВнутр
|FROM $Регистр.ОстаткиТМЦ РегОб
|INNER JOIN _1SJOURN Жур ON РегОб.IDDOC=Жур.IDDOC
|INNER JOIN $Справочник.Номенклатура СпрТов ON СпрТов.ID=$РегОб.Номенклатура
|LEFT JOIN $Справочник.Номенклатура СпрГр ON СпрГр.ID=СпрТов.PARENTID
|INNER JOIN $Справочник.Склады СпрСклад ON СпрСклад.ID=$РегОб.Склад
|WHERE (Жур.DATE_TIME_IDDOC>=:НачалоМесяца) AND (Жур.DATE_TIME_IDDOC<:НачДата) AND (Жур.CLOSED & 1 = 1)
|";
Если ПустоеЗначение(ВыбСклад)=1 Тогда
Иначе
ТекстЗапроса=ТекстЗапроса+" AND ($РегОб.Склад IN (SELECT val FROM #ВыбСклад))";
КонецЕсли;
Если ПустоеЗначение(ВыбТовар)=1 Тогда
Иначе
ТекстЗапроса=ТекстЗапроса+" AND ($РегОб.Номенклатура IN (SELECT val FROM #ВыбТовар))";
КонецЕсли;
ТекстЗапроса=ТекстЗапроса+"
|
|UNION ALL
|
|SELECT СпрТов.CODE Номенклатура,
| СпрГр.DESCR ТорговаяМарка,
| СпрСклад.DESCR Склад,
| dateadd(month,1,dateadd(day,1-day(CAST(LEFT(Жур.Date_Time_IDDoc,8) as DateTime)),CAST(LEFT(Жур.Date_Time_IDDoc,8) as DateTime)))-1 Период,
| 0 НачОст,
| CASE
| WHEN РегОб.DEBKRED=0 THEN $РегОб.Количество
| END Приход,
| CASE
| WHEN РегОб.DEBKRED=1 AND $РегОб.Внутреннее=0 THEN $РегОб.Количество
| END Расход,
| CASE
| WHEN РегОб.DEBKRED=1 AND $РегОб.Внутреннее=1 THEN $РегОб.Количество
| END РасхВнутр
|FROM $Регистр.ОстаткиТМЦ РегОб
|INNER JOIN _1SJOURN Жур ON РегОб.IDDOC=Жур.IDDOC
|INNER JOIN $Справочник.Номенклатура СпрТов ON СпрТов.ID=$РегОб.Номенклатура
|LEFT JOIN $Справочник.Номенклатура СпрГр ON СпрГр.ID=СпрТов.PARENTID
|INNER JOIN $Справочник.Склады СпрСклад ON СпрСклад.ID=$РегОб.Склад
|WHERE (Жур.DATE_TIME_IDDOC>=:НачДата) AND (Жур.DATE_TIME_IDDOC<:КонДата) AND (Жур.CLOSED & 1 = 1)
|";
Если ПустоеЗначение(ВыбСклад)=1 Тогда
Иначе
ТекстЗапроса=ТекстЗапроса+" AND ($РегОб.Склад IN (SELECT val FROM #ВыбСклад))";
КонецЕсли;
Если ПустоеЗначение(ВыбТовар)=1 Тогда
Иначе
ТекстЗапроса=ТекстЗапроса+" AND ($РегОб.Номенклатура IN (SELECT val FROM #ВыбТовар))";
КонецЕсли;
ТекстЗапроса=ТекстЗапроса+"
|) TMP
|GROUP BY Номенклатура,ТорговаяМарка,Склад,Период
|ORDER BY ТорговаяМарка,Номенклатура,Склад,Период ASC
|";
ТЗ = recordset.ВыполнитьИнструкцию(ТекстЗапроса);
в ну а сам результат выглядит примерно так - смотрите вложение!
Если вы увидите ошибки просьба не пинать