//======================================================================
Процедура Сформировать()
	Перем Запрос, ТекстЗапроса;
	
	печТекстФильтра = ОбъектМФ.ВернутьТекстФильтра();
	
	Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Период с НачДата по КонДата;
	|Без итогов;
	|Док = Документ.РасходнаяНакладная.ТекущийДокумент;
	|Фирма = Документ.РасходнаяНакладная.Фирма;
	|Клиент = Документ.РасходнаяНакладная.Контрагент;
	|Агент = Документ.РасходнаяНакладная.Проект;
	|Склад = Документ.РасходнаяНакладная.МестоХранения;
	|СуммаРуб = Документ.РасходнаяНакладная.Всего;
	|Функция Всего = Сумма(СуммаРуб);
	|Группировка Док;
	|"//}}ЗАПРОС
	;
	ОбъектМФ.СформироватьУсловияЗапроса(ТекстЗапроса,Запрос);
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
		Возврат;
	КонецЕсли;
	тзДок=СоздатьОбъект("ИндексированнаяТаблица");
	тзДок.ЗагрузитьЗапрос(Запрос,0,0);
	
	тзПодч=СоздатьОбъект("ИндексированнаяТаблица");
	тзПодч.НоваяКолонка("Док");
	тзПодч.НоваяКолонка("ДокПодч");
	тзПодч.НоваяКолонка("ВсегоПодч");
	
	Если флПрямойЗапрос=1 Тогда
		// ПрямойЗапрос ВТ $ПодчиненныеДокументы
		ЗапросПодч = СоздатьОбъект("ПрямойЗапрос");
	    ЗапросПодч.БухгалтерскийУчет = 0;
	    ЗапросПодч.ОперативныйУчет = 0;
	    ЗапросПодч.ПериодическиеЗначения = 0;
		ЗапросПодч.РежимОтладки = 0;
		ЗапросПодч.Текст="
		|ВЫБРАТЬ
		|	ПодчДок.ТекущийДокумент КАК [ДокПодч $Документ]
		|	,ПодчДок.ВидДокумента КАК [ДокПодч_вид $ВидДокумента]
		|ИЗ
		|	$ПодчиненныеДокументы.Потомки(@ДокОсн) КАК ПодчДок
		|ГДЕ";
		Если глЭтоSQL=1	Тогда
			ЗапросПодч.Текст=ЗапросПодч.Текст+"
			|	ПодчДок.ВидДокумента = @лВидДок";
			лЗначВидДок=глМетаДата.ИДДокумента("ПриходныйОрдер");
		Иначе
			ЗапросПодч.Текст=ЗапросПодч.Текст+"
			|	СОКРЛ(ПодчДок.ВидДокумента) = @лВидДок";
			лЗначВидДок=глМетаДата.ЧислоВСтроку(глМетаДата.ИДДокумента("ПриходныйОрдер"),36);
		КонецЕсли;
		
		ЗапросПодч.ОписаниеПараметра("ДокОсн","Неопределенный");
		ЗапросПодч.ОписаниеПараметра("лВидДок","ВидДокумента");
		ЗапросПодч.ПодготовитьПараметризованныйЗапрос();
		
		ВремяВып = _GetPerformanceCounter();
		тзДок.ВыбратьСтроки();
		Пока тзДок.ПолучитьСтроку()=1 Цикл
			ЗапросПодч.ПодставлятьПараметры("ДокОсн",тзДок.Док);
			ЗапросПодч.ПодставлятьПараметры("лВидДок",лЗначВидДок);
			тзВрем = ЗапросПодч.ВыполнитьПараметризованныйЗапрос();
			тзВрем.ВыбратьСтроки();
			Пока тзВрем.ПолучитьСтроку()=1 Цикл
				тзПодч.НоваяСтрока();
				тзПодч.Док=тзДок.Док;
				тзПодч.ДокПодч=тзВрем.ДокПодч;
				тзПодч.ВсегоПодч=тзПодч.ДокПодч.Сумма;
			КонецЦикла;
		КонецЦикла;
		//лисхТЗ = тзПодч;
		//ОткрытьФорму("Отчет#", лисхТЗ, КаталогИБ()+"\Extforms\служб_ПросмотрСЗ_ТЗ_ИТЗ.ert");
	Иначе
		// типовой
		ВремяВып = _GetPerformanceCounter();
		ДокПодч=СоздатьОбъект("Документ");
		тзДок.ВыбратьСтроки();
		Пока тзДок.ПолучитьСтроку()=1 Цикл
			Если ДокПодч.ВыбратьПодчиненныеДокументы(,,тзДок.Док)=0 Тогда
				Продолжить;
			КонецЕсли;
			Пока ДокПодч.ПолучитьДокумент() = 1 Цикл
				Если (ДокПодч.Вид()="ПриходныйОрдер") и (ДокПодч.Проведен()=1) Тогда
					тзПодч.НоваяСтрока();
					тзПодч.Док=тзДок.Док;
					тзПодч.ДокПодч=ДокПодч.ТекущийДокумент();
					тзПодч.ВсегоПодч=ДокПодч.Сумма;
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
	КонецЕсли;
	
	Сообщить(глСообщитьРазностьТаймера(ВремяВып,_GetPerformanceCounter()));
	
	тзДок.Объединить(тзПодч);
	тзДок.Группировать("индДок:Док","Всего,ВсегоПодч",1);
	//лисхТЗ = тзДок;
	//ОткрытьФорму("Отчет#", лисхТЗ, КаталогИБ()+"\Extforms\служб_ПросмотрСЗ_ТЗ_ИТЗ.ert");
	Таб=СоздатьОбъект("Таблица"); 
	Таб.ИсходнаяТаблица("Таблица");
	Таб.ВывестиСекцию("Шапка");
	Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
	
	тзДок.ВыбратьСтроки("индДок",1);
	Пока тзДок.ПолучитьСтроку("индДок",1)=1 Цикл
		тз=тзДок.тзПотомки;
		тз.ВыбратьСтроки();
		Пока тз.ПолучитьСтроку()=1 Цикл
			Если тз.НомерСтроки=1 Тогда
				Таб.ВывестиСекцию("СтрДок");
			Иначе
				Таб.ВывестиСекцию("СтрПодч");
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	Таб.ВывестиСекцию("Подвал");
	
	Таб.ПараметрыСтраницы(1,,,2,2,2,2,0,0,1,,);
	Таб.ТолькоПросмотр(1);
	Таб.Показать("Реестр_РНК_ПКО","");

КонецПроцедуры