могу предложить такой вариант:
ТекстЗапроса="
|select
| max(j.iddoc) [Док $Документ],
| max(j.iddocdef) Док_вид,
| max(isnull($Док1.Контрагент, $Док2.Контрагент)) [Контрагент $Справочник.Контрагенты],
| /*Сумма*/ Сумма
|from _1sjourn j (nolock)
|/*ОтборПоКонтрагенту*/
|left join $Документ.Реализация Док1 (nolock) on Док1.iddoc = j.iddoc
|left join $Документ.ВозвратОтПокупателя Док2 (nolock) on Док2.iddoc = j.iddoc
|left join $ДокументСтроки.Реализация СтрокиДок1 (nolock) on СтрокиДок1.iddoc = j.iddoc
|left join $ДокументСтроки.ВозвратОтПокупателя СтрокиДок2 (nolock) on СтрокиДок2.iddoc = j.iddoc
|where j.date_time_iddoc between :НачДата and :КонДата~
| and j.iddocdef in ($ВидДокумента.Реализация, $ВидДокумента.ВозвратОтПокупателя)
| and j.ismark = 0
| /*ОтборПоНоменклатуре*/
|group by j.date_time_iddoc
|order by j.date_time_iddoc
|";
рс=СоздатьОбъект("ODBCRecordset");
//рс.Отладка(1);
Если ВыбНоменклатура.Выбран() = 1 Тогда
$СтрокиДок2.Сумма))");
Если ВыбНоменклатура.ЭтоГруппа() = 1 Тогда
рс.УложитьСписокОбъектов(ВыбНоменклатура,"#tmp1","Номенклатура");
ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*ОтборПоНоменклатуре*/","and isnull($СтрокиДок1.Номенклатура, $СтрокиДок2.Номенклатура) in (select #tmp1.val from #tmp1)");
Иначе
рс.УстановитьТекстовыйПараметр("ВыбНоменклатура",ВыбНоменклатура);
ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*ОтборПоНоменклатуре*/","and isnull($СтрокиДок1.Номенклатура, $СтрокиДок2.Номенклатура) = :ВыбНоменклатура");
КонецЕсли;
Иначе
ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*Сумма*/","max(isnull($Док1.Сумма, $Док2.Сумма))");
КонецЕсли;
Если ВыбКонтрагент.Выбран() = 1 Тогда
Если ВыбКонтрагент.ЭтоГруппа() = 1 Тогда
рс.УложитьСписокОбъектов(ВыбКонтрагент,"#tmp2","Контрагенты");
ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*ОтборПоКонтрагенту*/","
|join _1scrdoc cr (nolock) on cr.mdid = $ГрафаОтбора.Контрагент
| and cr.child_date_time_iddoc between :НачДата and :КонДата~
| and cr.child_date_time_iddoc = j.date_time_iddoc
|join #tmp2 on 'B1'+$ВидСправочника36.Контрагенты+#tmp2.val = cr.parentval
|");
Иначе
рс.УстановитьТекстовыйПараметр("ВыбКонтрагент",ВыбКонтрагент);
ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*ОтборПоКонтрагенту*/","
|join _1scrdoc cr (nolock) on cr.mdid = $ГрафаОтбора.Контрагент
| and cr.parentval = :ВыбКонтрагент*
| and cr.child_date_time_iddoc between :НачДата and :КонДата~
| and cr.child_date_time_iddoc = j.date_time_iddoc
|");
КонецЕсли;
КонецЕсли;
рс.УстановитьТекстовыйПараметр("НачДата",НачДата);
рс.УстановитьТекстовыйПараметр("КонДата",КонДата);
Рез=рс.ВыполнитьИнструкцию(ТекстЗапроса);
Проверено на рабочей базе на правильность данных и на эффективность построения планов запросов.
ВАЖНО: статистика таблиц _1sjourn и _1scrdoc должна быть свежей!