Z1 писал(а) 12. Марта 2012 :: 10:44:Ivanych писал(а) 12. Марта 2012 :: 10:38:Всем спасибо Анатолий помог разобраться.
выкладывай решение.
а его можно будет покритиковать
б может оно пригодиться другим будущим читателям ветки
RS = СоздатьОбъект("ODBCRecordset");
RS.УстБД1С();
ТекстЗапроса = "
|SELECT
| TMP.Склад as [Склад $Справочник.МестаХранения],
|
TMP.ТМЦ as [ТМЦ $Справочник.Номенклатура],
| SUM(TMP.Количество) as Количество,
| SUM(TMP.Сумма) as Сумма
|FROM
|(
|SELECT
| $Док.Склад as [Склад],
| $ДокС.ТМЦ as [ТМЦ],
| $ДокС.Количество as Количество,
| $ДокС.Сумма as Сумма
|FROM
| $ДокументСтроки.РеализацияТоваров as ДокС
|INNER JOIN
| $Документ.РеализацияТоваров as Док ON Док.IDDoc = ДокС.IDDoc
| " + ?( ВыбСклад.Выбран()=1, "AND $Док.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
| " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
|INNER JOIN
| _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
| Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
| Жур.Closed & 1 = 1
|UNION ALL
|SELECT
| $Док14.Склад as [Склад],
|
SUBSTRING($ДокС14.ТМЦ, 7, 9) as [ТМЦ],
| -($ДокС14.Количество) as Количество,
| -($ДокС14.Сумма) as Сумма
|FROM
| $ДокументСтроки.ВозвратОтПокупателя as ДокС14
|INNER JOIN
| $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
| " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
| " + ?( ВыбТМЦ.Выбран()=1, "AND
SUBSTRING($ДокС14.ТМЦ, 7, 9) IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
|INNER JOIN
| _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
| Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
| Жур.Closed & 1 = 1
|) AS TMP
|
|GROUP BY
| TMP.Склад, TMP.ТМЦ WITH ROLLUP";
RS.УстановитьТекстовыйПараметр("ВыбСклад1", ВыбСклад);
RS.УложитьСписокОбъектов(ВыбСклад, "#ГруппаСклад", "МестаХранения");
RS.УложитьСписокОбъектов(ВыбТМЦ, "#ГруппаТМЦ", "Номенклатура");
RS.УстановитьТекстовыйПараметр("НачДата", ВыбНачПериода);
RS.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода);
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);