Пожалуйста:
RS = СоздатьОбъект("ODBCRecordset");
RS.УстБД1С();
ТекстЗапроса = "
|SELECT
| Подзапрос.Фирма as [Фирма $Справочник.Фирмы],
| Подзапрос.Склад as [Склад $Справочник.Склады],
| Подзапрос.Номенклатура as [Номенклатура $Справочник.Номенклатура],
| Подзапрос.ИтогПоФирмам as ИтогПоФирмам,
| Подзапрос.ИтогПоСкладам as ИтогПоСкладам,
| Подзапрос.Количество as Количество,
| Подзапрос.Резерв as Резерв,
| СпрНом.Descr as Наименование
|FROM (
|SELECT
| Рег.Фирма as Фирма,
| Рег.Склад as Склад,
| СпрТ.ParentExt as Номенклатура,
| GROUPING(Рег.Фирма) as ИтогПоФирмам,
| GROUPING(Рег.Склад) as ИтогПоСкладам,
| SUM(Рег.КоличествоОстаток) as Количество,
| SUM(РегРезервы.КоличествоОстаток) as Резерв
|FROM
| $Справочник.Товары as СпрТ
| INNER JOIN
// остатки
| ($РегистрОстатки.ОстаткиТоваров(:ВыбДата~,
|";
Если флОтборПоНоменклатуре = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
| inner join $Справочник.Товары as СпрТТ on СпрТТ.ID = Товар,
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| ,
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
| Фирма = :ВыбФирма
| and
| Склад = :ВыбСклад
|";
Если флОтборПоНоменклатуре = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
| and
| СпрТТ.ParentExt IN (SELECT Val FROM #СписокЭлементовНоменклатуры)
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|,
| (Фирма,Склад,Товар), (Количество)) as Рег
// конец остатки
// резервы
| FULL JOIN
| $РегистрОстатки.Резервы(:ВыбДата~,
|";
Если флОтборПоНоменклатуре = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
| inner join $Справочник.Товары as СпрТТ on СпрТТ.ID = Товар,
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| ,
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
| Фирма = :ВыбФирма
| and
| Склад = :ВыбСклад
|";
Если флОтборПоНоменклатуре = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
| and
| СпрТТ.ParentExt IN (SELECT Val FROM #СписокЭлементовНоменклатуры)
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|,
| (Фирма,Склад,Товар), (Количество)) as РегРезервы
| ON РегРезервы.Фирма = Рег.Фирма and РегРезервы.Склад = Рег.Склад and РегРезервы.Товар = Рег.Товар)
// конец резервы
// остатки
| ON Рег.Товар = СпрТ.ID
// конец остатки
|GROUP BY
| Рег.Фирма, Рег.Склад, СпрТ.ParentExt
| WITH ROLLUP
//|ORDER BY Рег.Фирма, Рег.Склад, СпрТ.ParentExt, Рег.ИтогПоФирмам DESC, Рег.ИтогПоСкладам DESC
|) as Подзапрос
// для сортировки по наименованию номенклатуры
|LEFT JOIN $Справочник.Номенклатура as СпрНом on СпрНом.ID = Подзапрос.Номенклатура
|ORDER BY Подзапрос.Фирма, Подзапрос.Склад, Подзапрос.Наименование, Подзапрос.ИтогПоФирмам DESC, Подзапрос.ИтогПоСкладам DESC
|";
RS.УстановитьТекстовыйПараметр("ВыбДата", прДата);
RS.УстановитьТекстовыйПараметр("ВыбФирма", прФирма);
RS.УстановитьТекстовыйПараметр("ВыбСклад", прОтдел);
Если флОтборПоНоменклатуре = 1 Тогда
RS.УложитьСписокОбъектов(прНоменклатура, "#СписокЭлементовНоменклатуры", "Номенклатура");
КонецЕсли;
RS.Открыть(ТекстЗапроса);
ТЗ = СоздатьОбъект("ТаблицаЗначений");
RS.ПолучитьРезультатыВ_ТЗ(ТЗ, 1);
//RS.ВыполнитьИнструкцию(ТекстЗапроса, ТЗ, 1);
RS.Закрыть();
Только ошибка выводится на строке
RS.УложитьСписокОбъектов(прНоменклатура, "#СписокЭлементовНоменклатуры", "Номенклатура");
т.е. ДО вызова запроса.
При этом в старой версии 1с++ все работает нормально, достаточно заменить длл-ку