Всем добрый день. Посоветуйте как быть: есть запрос из которого впоследствии делается 2 выборки, по результатам каждой выборки заполняется табличный документ. В 1-й выборке соединение документа и регистра накоплений, во 2-м - ТЧ этого документа и другого регистра накоплений. Смысл отчета: если в результате выполнения 1-го запроса во 2-й выборке не окажется необходимых мне параметров( нет записей в регистре накоплений ), то выполнить 2-й запрос,где эти параметры есть и соответственно соединить с данными из 1-й выборки.
Привожу код (немного длинноват):
Запрос=Новый Запрос;
Запрос.УстановитьПараметр("Клиент",Клиент);
Запрос.УстановитьПараметр("Грузополучатель",Грузополучатель);
Запрос.Параметры.Вставить("Инвойс",Инвойс);
Запрос.Параметры.Вставить("Заявка",Заявка);
Запрос.Параметры.Вставить("ДатаНачала",НачалоДня(ДатаНачала));
Запрос.Параметры.Вставить("ДатаКонца",КонецДня(ДатаКонца));
Запрос.Текст="ВЫБРАТЬ
| ОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход КАК СуммаИнвойс,
| ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
| ОборотыДенежныхСредствОстаткиИОбороты.Инвойс.Номер КАК НомерИнвойс,
| ОборотыДенежныхСредствОстаткиИОбороты.Инвойс.Дата КАК ДатаИнвойс,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомерЗаказаНаПроизводство КАК НомерЗаявка,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата КАК ДатаЗаявка,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.СоставИтогСтоимость КАК СуммаЗаявка,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Валюта,
| ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты КАК ВариантОплаты,
| ЗаявкаНаПоставкуУсловиеОплаты.Процент,
| ЗаявкаНаПоставкуУсловиеОплаты.СДаты КАК СДаты,
| ЗаявкаНаПоставкуУсловиеОплаты.ВТечение,
| ОборотыДенежныхСредствОстаткиИОбороты.Период
|ИЗ
| Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
| ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
|ГДЕ
| (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
| ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
| И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
| ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
| И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
| И (&Заявка = ЗНАЧЕНИЕ(Документ.ЗаявкаНаПоставку.ПустаяСсылка)
| ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = &Заявка)
| И (&Инвойс = ЗНАЧЕНИЕ(Документ.ПрохождениеТаможни.ПустаяСсылка)
| ИЛИ ОборотыДенежныхСредствОстаткиИОбороты.Инвойс = &Инвойс)
|ИТОГИ ПО
| Заявка";
РезультатЗапроса=Запрос.Выполнить();
ДокументДанных=Новый ТабличныйДокумент;
ДатаНачалаФормат=Формат(ДатаНачала,"ДФ=dd.MM.yyyy");
ДатаКонцаФормат=Формат(ДатаКонца,"ДФ=dd.MM.yyyy");
Макет=Отчеты.Отчет1.ПолучитьМакет("Макет1");
ОбластьШапкаЗаявки=Макет.ПолучитьОбласть("ШапкаЗаявки");
ОбластьЗаголовок=Макет.ПолучитьОбласть("Заголовок");
ОбластьСтрока=Макет.ПолучитьОбласть("Строка");
ОбластьИтог=Макет.ПолучитьОбласть("Итог");
ОбластьСтрЗаявки=Макет.ПолучитьОбласть("ШапкаЗаявки");
ОбластьШапкаОплаты=Макет.ПолучитьОбласть("ШапкаОплаты");
ОбластьШапкаОтчета=Макет.ПолучитьОбласть("ШапкаОтчета");
ОбластьШапкаКонтрагент=Макет.ПолучитьОбласть("ШапкаКонтрагент");
ОбластьШапкаОтчета.Параметры.ДатаНачала=ДатаНачалаФормат;
ОбластьШапкаОтчета.Параметры.ДатаКонца=ДатаКонцаФормат;
ДокументДанных.Вывести(ОбластьШапкаОтчета);
ВыборкаПоЗаявке=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоЗаявке.Следующий() Цикл
ОбластьЗаголовок.Параметры.Валюта=ВыборкаПоЗаявке.Валюта;
ОбластьШапкаЗаявки.Параметры.Заявка=ВыборкаПоЗаявке.Заявка;
ОбластьШапкаКонтрагент.Параметры.Клиент=ВыборкаПоЗаявке.Клиент;
ОбластьШапкаКонтрагент.Параметры.Грузополучатель=ВыборкаПоЗаявке.Грузополучатель;
ОбластьШапкаОтчета.Параметры.ДатаНачала=ДатаНачалаФормат;
ОбластьШапкаОтчета.Параметры.ДатаКонца=ДатаКонцаФормат;
ДокументДанных.Вывести(ОбластьШапкаКонтрагент);
ДокументДанных.Вывести(ОбластьШапкаЗаявки);
ДокументДанных.Вывести(ОбластьЗаголовок);
ВыборкаПоИнвойсу=ВыборкаПоЗаявке.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоИнвойсу.Следующий() Цикл
ДатаИнвойс=ВыборкаПоИнвойсу.ДатаИнвойс;
ТекЗаявка=ВыборкаПоИнвойсу.Заявка;
Если ДатаИнвойс=Null Тогда
Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомерЗаказаНаПроизводство КАК НомерЗаявка,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата КАК ДатаЗаявка,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.СоставИтогСтоимость КАК СуммаЗаявка,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель,
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Валюта,
| ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты КАК ВариантОплаты,
| ЗаявкаНаПоставкуУсловиеОплаты.Процент,
| ЗаявкаНаПоставкуУсловиеОплаты.СДаты КАК СДаты,
| ЗаявкаНаПоставкуУсловиеОплаты.ВТечение,
| ПрохождениеТаможенногоОформления.Период,
| ПрохождениеТаможенногоОформления.Регистратор КАК Инвойс,
| ПрохождениеТаможенногоОформления.Регистратор.Номер КАК НомерИнвойс,
| ПрохождениеТаможенногоОформления.Регистратор.Дата КАК ДатаИнвойс,
| ПрохождениеТаможенногоОформления.Регистратор.СтоимостьИтог КАК СуммаИнвойс
|ИЗ
| Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПрохождениеТаможенногоОформления КАК ПрохождениеТаможенногоОформления
| ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ПрохождениеТаможенногоОформления.Заявка
|ГДЕ
| ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = &ТекЗаявка
|ИТОГИ ПО
| Заявка";
ЗапросТаможня=Новый Запрос;
ЗапросТаможня.УстановитьПараметр("ТекЗаявка",ТекЗаявка);
ЗапросТаможня.Текст=Текст;
ТекРезультат=ЗапросТаможня.Выполнить().Выгрузить();
КонецЕсли;
ДатаЗаявкаФормат=Формат(ВыборкаПоИнвойсу.ДатаЗаявка,"ДФ=dd.MM.yyyy");
ДатаИнвойсФормат=Формат(ВыборкаПоИнвойсу.ДатаИнвойс,"ДФ=dd.MM.yyyy");
ОбластьИтог.Параметры.СуммаЗаявка=ВыборкаПоИнвойсу.СуммаЗаявка;
ДниОплаты=ВыборкаПоИнвойсу.ВТечение;
СрокОплаты=ДатаИнвойс+ДниОплаты*24*60*60;
СрокОплатыФормат=Формат(СрокОплаты,"ДФ=dd.MM.yyyy");
ОбластьСтрока.Параметры.СрокОплаты=СрокОплатыФормат;
Период=ВыборкаПоИнвойсу.Период;
ПериодФормат=Формат(Период,"ДФ=dd.MM.yyyy");
Если Период=Неопределено И ТекущаяДата()>СрокОплаты Тогда
Долг="Да";
Иначе
Долг="Нет";
КонецЕсли;
ОбластьСтрока.Параметры.Долг=Долг;
ОбластьСтрока.Параметры.ДатаОплаты=ПериодФормат;
ОбластьСтрока.Параметры.НомерЗаявка=ВыборкаПоИнвойсу.НомерЗаявка;
ОбластьСтрока.Параметры.ДатаЗаявка=ДатаЗаявкаФормат;
ОбластьСтрока.Параметры.НомерИнвойс=ВыборкаПоИнвойсу.НомерИнвойс;
ОбластьСтрока.Параметры.ДатаИнвойс=ДатаИнвойсФормат;
ОбластьСтрока.Параметры.СуммаИнвойс=ВыборкаПоИнвойсу.СуммаИнвойс;
ОбластьСтрока.Параметры.НомерЗаказ=ВыборкаПоИнвойсу.НомерЗаказ;
ОбластьСтрока.Параметры.ВариантОплаты=ВыборкаПоИнвойсу.ВариантОплаты;
ОбластьСтрока.Параметры.Процент=ВыборкаПоИнвойсу.Процент;
ОбластьСтрока.Параметры.СДаты=ВыборкаПоИнвойсу.СДаты;
ОбластьСтрока.Параметры.ВТечение=ВыборкаПоИнвойсу.ВТечение;
ДокументДанных.Вывести(ОбластьСтрока);
КонецЦикла;
ДокументДанных.Вывести(ОбластьИтог);
КонецЦикла;
Возврат ДокументДанных;
Соответственно, условие
ДатаИнвойс=ВыборкаПоИнвойсу.ДатаИнвойс;
ТекЗаявка=ВыборкаПоИнвойсу.Заявка;
Если ДатаИнвойс=Null Тогда
мои потуги реализовать данную задачу. Буду признателен за любые советы.