Добрый день.
Прошу помочь в объединении запросов. Данный вариант работает:
Запрос = СоздатьОбъект("ODBCRecordset");
СписокНакладных = СоздатьОбъект("СписокЗначений");
ИсхТаб = СоздатьОбъект("ИндексированнаяТаблица");
ТабНакл = СоздатьОбъект("ТаблицаЗначений");
//{ Установка параметров отбора запроса
ФильтрТовар = "";
Если ПустоеЗначение(ВыбТовар) = 0 Тогда
Если ВыбТовар.ЭтоГруппа() = 1 Тогда
ИмяТаблицы="#ГруппаТоваров";
Запрос.УложитьСписокОбъектов(ВыбТовар,ИмяТаблицы,"ВидыТоваров");
ФильтрТовар=ФильтрТовар+" AND Товар IN (SELECT Val FROM "+ИмяТаблицы+")";
Иначе
ФильтрТовар = ФильтрТовар+" AND Товар = :ВыбТовар";
Запрос.УстановитьТекстовыйПараметр("ВыбТовар", ВыбТовар);
КонецЕсли;
КонецЕсли;
ФильтрКонтр = "";
Если ПустоеЗначение(ВыбКонтрагент) = 0 Тогда
Если ВыбКонтрагент.ЭтоГруппа() = 1 Тогда
ИмяТаблицы="#ГруппаКонтрагентов";
Запрос.УложитьСписокОбъектов(ВыбКонтрагент,ИмяТаблицы,"Контрагенты");
ФильтрКонтр=ФильтрКонтр+" AND ПодзапросКонтр.Ссылка IN (SELECT Val FROM "+ИмяТаблицы+")";
Иначе
ФильтрКонтр = ФильтрКонтр+" AND ПодзапросКонтр.Ссылка = :ВыбКонтрагент";
Запрос.УстановитьТекстовыйПараметр("ВыбКонтрагент", ВыбКонтрагент);
КонецЕсли;
КонецЕсли;
ФильтрФилиал = "";
Если ПустоеЗначение(ВыбФилиал) = 0 Тогда
ФильтрФилиал = "AND Подзапрос.ФилиалСотр = :ВыбФилиал";
Запрос.УстановитьТекстовыйПараметр("ВыбФилиал", ВыбФилиал);
КонецЕсли;
ФильтрСклад = "";
Если ПустоеЗначение(ВыбСклад) = 0 Тогда
Если ВыбСклад.ЭтоГруппа() = 1 Тогда
ИмяТаблицы="#ГруппаСкладов";
Запрос.УложитьСписокОбъектов(ВыбСклад,ИмяТаблицы,"Склады");
ФильтрСклад=ФильтрСклад+" AND (COALESCE($ДокТТН.МОЛ, $ДокАкт.МОЛ, $ДокВозвр.МОЛ) IN (SELECT Val FROM "+ИмяТаблицы+"))";
Иначе
ФильтрСклад = ФильтрСклад+" AND (COALESCE($ДокТТН.МОЛ, $ДокАкт.МОЛ, $ДокВозвр.МОЛ) = :ВыбСклад)";
Запрос.УстановитьТекстовыйПараметр("ВыбСклад", ВыбСклад);
КонецЕсли;
КонецЕсли;
//}
//{ Текст запроса
ТекстЗапроса = "
|SELECT
| РеализацияОбороты.Покупатель [Покупатель $Справочник.Контрагенты]
| , РеализацияОбороты.Товар [Товар $Справочник.ВидыТоваров]
| , РеализацияОбороты.ТипЦены [ТипЦены $Справочник.ТипыЦен]
| , ПодзапросФилиал.Филиал [Филиал $Справочник.Подразделение]
| , ПодзапросДок.СсылкаНаДокумент [СсылкаНаДокумент $Документ]
| , Sum(РеализацияОбороты.СуммаПриходнаяОборот) СуммаПриходная
| , Sum(РеализацияОбороты.СуммаОборот) СуммаСНДС
| , Sum(РеализацияОбороты.СуммаБезНДСОборот) СуммаБезНДС
| , Sum(РеализацияОбороты.КоличествоОборот) Количество
|FROM $РегистрОбороты.Реализация(:НачДата
| ,:КонДата~,,
| INNER JOIN (SELECT Сотрудники.ID Ссылка
| ,$Сотрудники.Филиал ФилиалСотр
| FROM $Справочник.Сотрудники AS Сотрудники) as Подзапрос ON Подзапрос.Ссылка=Менеджер "+ФильтрФилиал+"
| INNER JOIN (SELECT Контрагенты.ID Ссылка
| FROM $Справочник.Контрагенты AS Контрагенты) AS ПодзапросКонтр ON ПодзапросКонтр.Ссылка=Покупатель "+ФильтрКонтр+"
| INNER JOIN (SELECT Товары.ID Ссылка
| FROM $Справочник.ВидыТоваров AS Товары) AS ПодзапросТовар ON ПодзапросТовар.Ссылка=Товар "+ФильтрТовар+"
| ,,
| (Накладная, Покупатель, Товар, ТипЦены, Менеджер),) AS РеализацияОбороты
|
|INNER JOIN (SELECT Документы.ID Ссылка
| , $Документы.СсылкаНаДокумент СсылкаНаДокумент
| FROM $Справочник.Документы AS Документы
|) AS ПодзапросДок ON РеализацияОбороты.Накладная = ПодзапросДок.Ссылка
|
|INNER JOIN (SELECT Сотрудники.ID Ссылка
| ,$Сотрудники.Филиал Филиал
| FROM $Справочник.Сотрудники AS Сотрудники
|) as ПодзапросФилиал ON ПодзапросФилиал.Ссылка=РеализацияОбороты.Менеджер
|GROUP BY РеализацияОбороты.Покупатель
| , ПодзапросДок.СсылкаНаДокумент
| , РеализацияОбороты.Товар
| , РеализацияОбороты.ТипЦены
| , ПодзапросФилиал.Филиал
|";
//}
Запрос.УстановитьТекстовыйПараметр("НачДата", НачДата);
Запрос.УстановитьТекстовыйПараметр("КонДата", КонДата);
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ИсхТаб,1);
ИсхТаб.Выгрузить(ТабНакл,,,"СсылкаНаДокумент, СуммаПриходная");
ТабНакл.Свернуть("СсылкаНаДокумент","СуммаПриходная");
ТабНакл.Выгрузить(СписокНакладных,,,"СсылкаНаДокумент");
ТекстЗапроса = "
|SELECT Журнал.IDDOC [Документ $Документ]
| , Журнал.IDDOCDEF [Документ_вид $ВидДокумента]
|, COALESCE($ДокТТН.МОЛ, $ДокАкт.МОЛ, $ДокВозвр.МОЛ) [Склад $Справочник.Склады]
|FROM _1SJOURN AS Журнал
| LEFT OUTER JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН With (NOLOCK) ON Журнал.IDDoc = ДокТТН.IDDoc
| LEFT OUTER JOIN $Документ.АктПриема as ДокАкт With (NOLOCK) ON Журнал.IDDoc = ДокАкт.IDDoc
| LEFT OUTER JOIN $Документ.ВозвратИзОрганизацииТоваров as ДокВозвр With (NOLOCK) ON Журнал.IDDoc = ДокВозвр.IDDoc
|WHERE (Журнал.IDDOC IN (SELECT val FROM #СписокДокументов)) "+ФильтрСклад+"
|GROUP BY Журнал.IDDOC
| , Журнал.IDDOCDEF
| , COALESCE($ДокТТН.МОЛ, $ДокАкт.МОЛ, $ДокВозвр.МОЛ)
|";
Запрос.УложитьСписокОбъектов(СписокНакладных, "#СписокДокументов");
тз2 = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
Хотелось бы объеденить все в один запрос, но увы, не понимаю как... При попытке соединения выдает пустую таблицу (данных нет). И по возможности, указать на явные ошибки в запросах, если такие есть.
Прошу строго не судить, начинаю углуб##ться в прямые запросы.