Вариант с юнионами:
ИТЗ=СоздатьОбъект("ИндексированнаяТаблица"); щийДокумент(),0)); Recordset.УстановитьТекстовыйПараметр("перУслуга",перУслуга); Recordset.УстановитьТекстовыйПараметр("Склад",Склад); Recordset.УложитьСписокОбъектов(СписокТоваров,"#СписокТоваров","Товары"); Если ИтогиАктуальны()=1 Тогда ДатаРасч=""; Иначе ДатаРасч=":ТекПоз~"; КонецЕсли; ФильтрПоТовару="Товар IN (SELECT Val FROM #СписокТоваров)"; ДопСоединения=""; ДопПоля=""; Если ДокументОснование.Вид()="Счет" Тогда Recordset.УстановитьТекстовыйПараметр("ДокОсн",ДокументОснование); Recordset.УстановитьТекстовыйПараметр("ДокОснСклад",ДокументОснование.Склад); ДопСоединения=ДопСоединения+" |UNION ALL |SELECT |РегРез.Товар as [Товар], |0 as [Ост], |0 AS СебестКол, |0 AS СебестУпр, |0 AS СебестРуб, |0 AS ОбщКол, |0 ОбщПуть, |0 AS ОбщРезКол, |РегРез.КоличествоОстаток AS РезКол |FROM |$РегистрОстатки.РезервыТоваров("+ДатаРасч+",,"+ФильтрПоТовару+" AND Склад=:ДокОснСклад AND Счет=:ДокОсн~,(Товар),(Количество)) as РегРез"; ДопПоля=ДопПоля+", |Sum(ВложЗапрос.РезКол) AS РезКол"; КонецЕсли; ТекстЗапроса=" |SELECT |ВложЗапрос.Товар as [Товар $Справочник.Товары], |Sum(ВложЗапрос.Ост) as [Ост], |Sum(ВложЗапрос.СебестКол) AS СебестКол, |Sum(ВложЗапрос.СебестУпр) AS СебестУпр, |Sum(ВложЗапрос.СебестРуб) AS СебестРуб, |Sum(ВложЗапрос.ОбщКол) AS ОбщКол, |Sum(ВложЗапрос.ОбщПуть) AS ОбщПуть, |Sum(ВложЗапрос.ОбщРезКол) AS ОбщРезКол" +ДопПоля+" |FROM | |(SELECT |Рег.Товар as [Товар], |Рег.КоличествоОстаток as [Ост], |0 AS СебестКол, |0 AS СебестУпр, |0 AS СебестРуб, |0 as ОбщКол, |0 as ОбщПуть, |0 as ОбщРезКол, |0 as РезКол |FROM |$РегистрОстатки.ОстаткиТоваров("+ДатаРасч+",,"+ФильтрПоТовару+" AND Склад=:Склад,(Товар),(Количество)) as Рег |UNION ALL |SELECT |РегПарт.Товар as [Товар], |0 as [Ост], |РегПарт.КоличествоОстаток AS СебестКол, |РегПарт.СуммаУпрОстаток AS СебестУпр, |РегПарт.СуммаРубОстаток AS СебестРуб, |0 as ОбщКол, |0 as ОбщПуть, |0 as ОбщРезКол, |0 as РезКол |FROM тво,СуммаУпр,СуммаРуб)) as РегПарт |UNION ALL |SELECT |Рег1.Товар as [Товар], |0 as [Ост], |0 AS СебестКол, |0 AS СебестУпр, |0 AS СебестРуб, |Рег1.КоличествоОстаток AS ОбщКол, |0 as ОбщПуть, |0 as ОбщРезКол, |0 as РезКол |FROM ство)) as Рег1 |UNION ALL |SELECT |РегП.Товар as [Товар], |0 as [Ост], |0 AS СебестКол, |0 AS СебестУпр, |0 AS СебестРуб, |0 AS ОбщКол, |РегП.КоличествоОстаток AS ОбщПуть, |0 as ОбщРезКол, |0 as РезКол |FROM ество)) as РегП |UNION ALL |SELECT |РегРез1.Товар as [Товар], |0 as [Ост], |0 AS СебестКол, |0 AS СебестУпр, |0 AS СебестРуб, |0 AS ОбщКол, |0 ОбщПуть, |РегРез1.КоличествоОстаток AS ОбщРезКол, |0 as РезКол |FROM ство)) as РегРез1" +ДопСоединения+" |) as ВложЗапрос |GROUP BY |ВложЗапрос.Товар |"; RecordSet.ВыполнитьИнструкцию(ТекстЗапроса, ИТЗ);
|