Загрузка данных


Функция ПечатьЗаявки(МассивОбъектов, ПараметрыПечати) 
	
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.АвтоМасштаб = Истина;
	
	ИспользоватьХарактеристики = Константы.торо_ИспользоватьХарактеристикиНоменклатуры.Получить();
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.торо_ЗаявкаНаРемонт.ПФ_MXL_Заявка");
	ШапкаДокумента                = Макет.ПолучитьОбласть("ШапкаДокумента");
	ШапкаСоставРабот              = Макет.ПолучитьОбласть("ШапкаСоставРаботКомментарий");
	
	ПроверкаШапкиСФО = Макет.Области.Найти("ШапкаНоменклатураФО"); 
	ПроверкаСтрокиСФО = Макет.Области.Найти("СтрокаТаблицыНоменклатурыФО");
	Если ИспользоватьХарактеристики И ТипЗнч(ПроверкаШапкиСФО) <> Тип("Неопределено") 
		И ТипЗнч(ПроверкаСтрокиСФО)<> Тип("Неопределено")Тогда 
		ШапкаНоменклатуры         = Макет.ПолучитьОбласть("ШапкаНоменклатураФО");
		СтрокаТаблицыНоменклатуры = Макет.ПолучитьОбласть("СтрокаТаблицыНоменклатурыФО");
	Иначе
		ШапкаНоменклатуры         = Макет.ПолучитьОбласть("ШапкаНоменклатура");
		СтрокаТаблицыНоменклатуры = Макет.ПолучитьОбласть("СтрокаТаблицыНоменклатуры");
	КонецЕсли;
	
	ПроверкаШапкиСФО = Макет.Области.Найти("ШапкаЗапчастиФО"); 
	ПроверкаСтрокиСФО = Макет.Области.Найти("СтрокаТаблицыЗапчастейФО");
	Если ИспользоватьХарактеристики И ТипЗнч(ПроверкаШапкиСФО) <> Тип("Неопределено") 
		И ТипЗнч(ПроверкаСтрокиСФО)<> Тип("Неопределено")Тогда
		ШапкаЗапчасти             = Макет.ПолучитьОбласть("ШапкаЗапчастиФО");
		СтрокаТаблицыЗапчастей    = Макет.ПолучитьОбласть("СтрокаТаблицыЗапчастейФО");
	Иначе 
		ШапкаЗапчасти             = Макет.ПолучитьОбласть("ШапкаЗапчасти");
		СтрокаТаблицыЗапчастей    = Макет.ПолучитьОбласть("СтрокаТаблицыЗапчастей");
	КонецЕсли;
	
	ШапкаМерыБезопасности         = Макет.ПолучитьОбласть("ШапкаМерыБезопасности");
	ШапкаТрудозатраты             = Макет.ПолучитьОбласть("ШапкаТрудозатраты");
	ШапкаИнструменты              = Макет.ПолучитьОбласть("ШапкаИнструменты");
	ШапкаИсполнители              = Макет.ПолучитьОбласть("ШапкаИсполнители");				
	СтрокаТаблицыРабот            = Макет.ПолучитьОбласть("СтрокаТаблицыРаботКомментарий");
	СтрокаТаблицыМерыБезопасности = Макет.ПолучитьОбласть("СтрокаТаблицыМерыБезопасности");
	СтрокаТаблицыТрудозатрат      = Макет.ПолучитьОбласть("СтрокаТаблицыТрудозатрат");
	СтрокаТаблицыИнструментов     = Макет.ПолучитьОбласть("СтрокаТаблицыИнструментов");
	СтрокаТаблицыИсполнителей     = Макет.ПолучитьОбласть("СтрокаТаблицыИсполнителей");
	ИтогоТрудозатраты             = Макет.ПолучитьОбласть("ИтогоТрудозатраты");
	ИтогоМатериалы                = Макет.ПолучитьОбласть("ИтогоМатериалы");
	ИтогоЗапчасти                 = Макет.ПолучитьОбласть("ИтогоЗапчасти");
	Подвал                        = Макет.ПолучитьОбласть("Подвал");
	
	Запрос = Новый Запрос;
	Запрос.Текст = 	"ВЫБРАТЬ
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.Ссылка КАК Ссылка,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.Ссылка.Номер КАК Номер,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.Ссылка.Дата КАК Дата,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.Ссылка.Организация КАК Организация,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.Ссылка.Подразделение КАК Подразделение,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.Ссылка.Ответственный КАК Ответственный,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.ОбъектРемонта КАК ОбъектРемонта,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.ID КАК ID,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.ВидРемонтныхРабот КАК ВидРемонтныхРабот,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.ДатаНачала КАК ДатаНачала,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.ДатаОкончания КАК ДатаОкончания,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.ОписаниеРемонта КАК ОписаниеРемонта,
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.ОбъектРемонта.ИнвентарныйНомер КАК ИнвентарныйНомер
	|ИЗ
	|	Документ.торо_ЗаявкаНаРемонт.РемонтыОборудования КАК торо_ЗаявкаНаРемонтРемонтыОборудования
	|ГДЕ
	|	торо_ЗаявкаНаРемонтРемонтыОборудования.Ссылка В(&Ссылка)
	|	И торо_ЗаявкаНаРемонтРемонтыОборудования.ID В(&ID)
	|ИТОГИ
	|	МАКСИМУМ(Номер),
	|	МАКСИМУМ(Дата),
	|	МАКСИМУМ(Организация),
	|	МАКСИМУМ(Подразделение),
	|	МАКСИМУМ(Ответственный)
	|ПО
	|	Ссылка";
	
	Запрос.УстановитьПараметр("Ссылка", МассивОбъектов);
	Если ПараметрыПечати.Свойство("МассивID") Тогда
		Запрос.УстановитьПараметр("ID", ПараметрыПечати.МассивID);
	Иначе
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "И торо_ЗаявкаНаРемонтРемонтыОборудования.ID В(&ID)", "");
	КонецЕсли;
	
	ВыборкаШапки = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ссылка");
	ЭтоПервый = Истина;
	
	Пока ВыборкаШапки.Следующий() Цикл
		
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ
		|	ВЫБОР
		|		КОГДА торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтнаяРабота ССЫЛКА Справочник.торо_ТехнологическиеОперации
		|			ТОГДА ВЫБОР
		|					КОГДА торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтнаяРабота.НаименованиеПолное = """"
		|						ТОГДА торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтнаяРабота.Наименование
		|					ИНАЧЕ торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтнаяРабота.НаименованиеПолное
		|				КОНЕЦ
		|		ИНАЧЕ ПРЕДСТАВЛЕНИЕССЫЛКИ(торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтнаяРабота)
		|	КОНЕЦ КАК Работа,
		|	торо_ЗаявкаНаРемонтРемонтныеРаботы.ID КАК ID,
		|	торо_ЗаявкаНаРемонтРемонтныеРаботы.Родитель_ID КАК Родитель_ID,
		|	торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтыОборудования_ID КАК РемонтыОборудования_ID,
		|	торо_ЗаявкаНаРемонтРемонтныеРаботы.Количество КАК Количество,
		|	ТехнологическиеОперации.СодержаниеРабот КАК Комментарий,
		|	ТехнологическиеОперации.БазоваяЕдиницаИзмерения КАК ЕдИзм
		|ИЗ
		|	Документ.торо_ЗаявкаНаРемонт.РемонтныеРаботы КАК торо_ЗаявкаНаРемонтРемонтныеРаботы
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.торо_ТехнологическиеОперации КАК ТехнологическиеОперации
		|		ПО торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтнаяРабота = ТехнологическиеОперации.Ссылка
		|ГДЕ
		|	торо_ЗаявкаНаРемонтРемонтныеРаботы.Ссылка = &Заявка";
		
		Запрос.УстановитьПараметр("Заявка", ВыборкаШапки.Ссылка);	
		тзСписокРаботИсх = Запрос.Выполнить().Выгрузить();
		
		ВыборкаРемонтов = ВыборкаШапки.Выбрать(ОбходРезультатаЗапроса.Прямой);
		
		Пока ВыборкаРемонтов.Следующий() Цикл
			
			ОбщийИтог = 0;
			
			Если НЕ ЭтоПервый Тогда
				ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
			ЭтоПервый = Ложь;
			
			ШапкаДокумента.Параметры.Организация                 = торо_ЗаполнениеДокументов.ПолучитьПредставлениеОрганизацииДляПечати(ВыборкаШапки.Организация);
			ШапкаДокумента.Параметры.Подразделение               = ВыборкаШапки.Подразделение;
			ШапкаДокумента.Параметры.ДатаНачалаРемонтныхРабот    = ВыборкаРемонтов.ДатаНачала;
			ШапкаДокумента.Параметры.ДатаОкончанияРемонтныхРабот = ВыборкаРемонтов.ДатаОкончания;
			ШапкаДокумента.Параметры.ИнвНомер                    = ВыборкаРемонтов.ИнвентарныйНомер;
			ШапкаДокумента.Параметры.ВидРемонтныхРабот           = торо_ЗаполнениеДокументов.ПолучитьПредоставленияВРДляПечати(ВыборкаРемонтов.ВидРемонтныхРабот);
			ШапкаДокумента.Параметры.Номер                       = ВыборкаШапки.Номер;
			ШапкаДокумента.Параметры.ДатаНомерЗаявки             = Формат(ВыборкаШапки.Дата,"ДФ=dd.MM.yyyy");
			
			ОбъектРемонта = ВыборкаРемонтов.ОбъектРемонта; 
			ШапкаДокумента.Параметры.ОбъектРемонта = торо_ЗаполнениеДокументов.ПолучитьПредоставленияОРДляПечати(ОбъектРемонта);
			// Заполнить поле Ответственный
			Если НЕ ЗначениеЗаполнено(ВыборкаШапки.Ответственный) Тогда
				Подвал.Параметры.Ответственный = "                                           ";
			Иначе
				Подвал.Параметры.Ответственный = ВыборкаШапки.Ответственный;
			КонецЕсли;
			
			ТабДок.Вывести(ШапкаДокумента);
			ТабДок.Вывести(ШапкаСоставРабот);
			
			// Накладываем отбор по РемонтуОборудования. Если делать это в запросе - теряется последовательность ремонтов.
			ПараметрыОтбора = Новый Структура("РемонтыОборудования_ID",ВыборкаРемонтов.ID);
			тзСписокРабот = тзСписокРаботИсх.Скопировать(ПараметрыОтбора);	
			Ном = "1";
			МассивID = Новый Массив;
			
			МассивСтрок = тзСписокРабот.НайтиСтроки(Новый Структура("Родитель_ID",""));
			
			// Определяем используются ли комментарии или нет
			ВывестиРаботы(МассивСтрок,тзСписокРабот,СтрокаТаблицыРабот,ТабДок,МассивID,Ном,Истина,Истина);
			
			// Вывод трудовых затрат
			ПараметрыРасчета = Новый Структура();
			ПараметрыРасчета.Вставить("ОбъектПотребности", "Квалификация");
			ПараметрыРасчета.Вставить("РСПотребности", "РегистрСведений.торо_ИтоговаяПлановаяПотребностьВКвалификациях");
			ПараметрыРасчета.Вставить("РСПотребностиИмя", "торо_ИтоговаяПлановаяПотребностьВКвалификациях");
			ПараметрыРасчета.Вставить("ТипОбъектаПотребности", "СправочникСсылка.торо_КвалификацииРемонтногоПерсонала");
			
			ПотребностьВКвалификациях = торо_Ремонты.РассчитатьПотребностьПоРемонтуДокумента(ВыборкаРемонтов.ID, ВыборкаШапки.Ссылка, ПараметрыРасчета);
			
			Запрос = Новый Запрос();
			Запрос.Текст = "ВЫБРАТЬ
			|	торо_ЗаявкаНаРемонтТрудовыеЗатраты.Квалификация КАК Квалификация,
			|	СУММА(торо_ЗаявкаНаРемонтТрудовыеЗатраты.ВремяРаботы) КАК ВремяРаботы,
			|	СУММА(торо_ЗаявкаНаРемонтТрудовыеЗатраты.Количество) КАК Количество
			|ПОМЕСТИТЬ втКвалификации
			|ИЗ
			|	Документ.торо_ЗаявкаНаРемонт.ТрудовыеЗатраты КАК торо_ЗаявкаНаРемонтТрудовыеЗатраты
			|ГДЕ
			|	торо_ЗаявкаНаРемонтТрудовыеЗатраты.РемонтыОборудования_ID = &РемонтыОборудования_ID
			|	И торо_ЗаявкаНаРемонтТрудовыеЗатраты.Ссылка = &Ссылка
			|
			|СГРУППИРОВАТЬ ПО
			|	торо_ЗаявкаНаРемонтТрудовыеЗатраты.Квалификация
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	Квалификация
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	торо_СтоимостьЧасаКвалификацииСрезПоследних.Квалификация КАК Квалификация,
			|	торо_СтоимостьЧасаКвалификацииСрезПоследних.Стоимость КАК Стоимость
			|ПОМЕСТИТЬ втЦеныЗаЧас
			|ИЗ
			|	РегистрСведений.торо_СтоимостьЧасаКвалификации.СрезПоследних(
			|			&Дата,
			|				Квалификация В
			|					(ВЫБРАТЬ
			|						втКвалификации.Квалификация КАК Квалификация
			|					ИЗ
			|						втКвалификации КАК втКвалификации)) КАК торо_СтоимостьЧасаКвалификацииСрезПоследних
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	Квалификация
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ПотребностьВКвалификациях.Квалификация КАК Квалификация,
			|	ПотребностьВКвалификациях.Количество КАК Количество
			|ПОМЕСТИТЬ ВТ_ПотребностьВКвалификациях
			|ИЗ
			|	&ПотребностьВКвалификациях КАК ПотребностьВКвалификациях
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	Квалификация
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	втКвалификации.Квалификация КАК Квалификация,
			|	втКвалификации.ВремяРаботы КАК ВремяРаботы,
			|	ЕСТЬNULL(ВТ_ПотребностьВКвалификациях.Количество, втКвалификации.Количество) КАК Количество,
			|   ЕСТЬNULL(втЦеныЗаЧас.Стоимость, 0) КАК ЦенаЗаЧас, 
			|   втКвалификации.ВремяРаботы / 3600 * ЕСТЬNULL(втЦеныЗаЧас.Стоимость, 0) КАК Стоимость
			|ИЗ
			|	втКвалификации КАК втКвалификации
			|		ЛЕВОЕ СОЕДИНЕНИЕ втЦеныЗаЧас КАК втЦеныЗаЧас
			|		ПО втКвалификации.Квалификация = втЦеныЗаЧас.Квалификация
			|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПотребностьВКвалификациях КАК ВТ_ПотребностьВКвалификациях
			|		ПО втКвалификации.Квалификация = ВТ_ПотребностьВКвалификациях.Квалификация";
			
			Запрос.УстановитьПараметр("Ссылка", ВыборкаШапки.Ссылка);
			Запрос.УстановитьПараметр("РемонтыОборудования_ID", ВыборкаРемонтов.ID);
			Запрос.УстановитьПараметр("Дата", ВыборкаРемонтов.ДатаНачала); 
			Запрос.УстановитьПараметр("Валюта",Константы.ВалютаУправленческогоУчета.Получить());
			Запрос.УстановитьПараметр("ПотребностьВКвалификациях", ПотребностьВКвалификациях);
			
			СтрокиТрудозатрат = Запрос.Выполнить().Выгрузить();
			Если СтрокиТрудозатрат.Количество() > 0 Тогда
				ТабДок.Вывести(ШапкаТрудозатраты);
				
				Ном = 1;
				Итого = 0;
				Для Каждого Стр Из СтрокиТрудозатрат Цикл
					СтрокаТаблицыТрудозатрат.Параметры.Номер = Ном;
					СтрокаТаблицыТрудозатрат.Параметры.Квалификация = Стр.Квалификация;
					СтрокаТаблицыТрудозатрат.Параметры.Количество = Стр.Количество;
					СтрокаТаблицыТрудозатрат.Параметры.ВремяРаботы = торо_ОбщегоНазначенияКлиентСервер.СформироватьЗаголовокПоПродолжительности(Стр.ВремяРаботы);
					СтрокаТаблицыТрудозатрат.Параметры.Стоимость = Стр.Стоимость;
					ТабДок.Вывести(СтрокаТаблицыТрудозатрат);
					Ном = Ном +1;
					Итого = Итого + СтрокаТаблицыТрудозатрат.Параметры.Стоимость;
				КонецЦикла;
				
				ИтогоТрудозатраты.Параметры.Итого = Итого;
				ТабДок.Вывести(ИтогоТрудозатраты);
				ОбщийИтог = ОбщийИтог + Итого;
			КонецЕсли;
			
			// Вывод исполнителей
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			|	торо_ЗаявкаНаРемонтИсполнителиПоРемонтам.Исполнитель КАК Исполнитель,
			|	торо_ЗаявкаНаРемонтИсполнителиПоРемонтам.УточнениеИсполнителя КАК ДоговорБригада,
			|	ВЫБОР
			|		КОГДА торо_ЗаявкаНаРемонтИсполнителиПоРемонтам.Исполнитель ССЫЛКА Справочник.СтруктураПредприятия
			|			ТОГДА ""Хозспособ""
			|		ИНАЧЕ ""Подрядный""
			|	КОНЕЦ КАК СпособВыполнения
			|ИЗ
			|	Документ.торо_ЗаявкаНаРемонт.ИсполнителиПоРемонтам КАК торо_ЗаявкаНаРемонтИсполнителиПоРемонтам
			|ГДЕ
			|	торо_ЗаявкаНаРемонтИсполнителиПоРемонтам.Ссылка = &Ссылка
			|	И торо_ЗаявкаНаРемонтИсполнителиПоРемонтам.РемонтыОборудования_ID = &ID";
			Запрос.УстановитьПараметр("Ссылка", ВыборкаШапки.Ссылка);
			Запрос.УстановитьПараметр("ID", ВыборкаРемонтов.ID);
			РезЗапросаИсполнителей = Запрос.Выполнить();
			Если Не РезЗапросаИсполнителей.Пустой() Тогда 
				ТабДок.Вывести(ШапкаИсполнители);
				ТабИсполнителей = РезЗапросаИсполнителей.Выгрузить();
				Для Каждого Стр Из ТабИсполнителей Цикл
					СтрокаТаблицыИсполнителей.Параметры.Заполнить(Стр);
					СтрокаТаблицыИсполнителей.Параметры.Номер = ТабИсполнителей.Индекс(Стр) + 1;
					ТабДок.Вывести(СтрокаТаблицыИсполнителей);
				КонецЦикла;
			КонецЕсли;

			// Вывод материальных затрат 
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			|	торо_ЗаявкаНаРемонтМатериальныеЗатраты.Номенклатура КАК Номенклатура,
			|	торо_ЗаявкаНаРемонтМатериальныеЗатраты.Количество КАК Количество,
			|	ВЫБОР
			|		КОГДА торо_ЗаявкаНаРемонтМатериальныеЗатраты.ЕдиницаИзмерения = &ПустаяСсылкаЕдИзм
			|			ТОГДА торо_ЗаявкаНаРемонтМатериальныеЗатраты.Номенклатура.ЕдиницаИзмерения
			|		ИНАЧЕ торо_ЗаявкаНаРемонтМатериальныеЗатраты.ЕдиницаИзмерения
			|	КОНЕЦ КАК ЕдИзм,
			|	торо_ЗаявкаНаРемонтМатериальныеЗатраты.ХарактеристикаНоменклатуры КАК Характеристика
			|ПОМЕСТИТЬ МатЗатраты_Упаковки
			|ИЗ
			|	Документ.торо_ЗаявкаНаРемонт.МатериальныеЗатраты КАК торо_ЗаявкаНаРемонтМатериальныеЗатраты
			|ГДЕ
			|	торо_ЗаявкаНаРемонтМатериальныеЗатраты.Ссылка = &Заявка
			|	И торо_ЗаявкаНаРемонтМатериальныеЗатраты.РемонтыОборудования_ID = &РемонтыОборудования_ID
			| 
			|ИНДЕКСИРОВАТЬ ПО
			|	ЕдИзм
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	СУММА(МатериальныеЗатраты.Количество * ЕСТЬNULL(УпаковкиНоменклатуры.Коэффициент, 1)) КАК Количество,
			|	МатериальныеЗатраты.Номенклатура КАК Номенклатура,
			|	МатериальныеЗатраты.Характеристика КАК Характеристика,
			|	МатериальныеЗатраты.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
			|ПОМЕСТИТЬ МатЗатраты
			|ИЗ
			|	МатЗатраты_Упаковки КАК МатериальныеЗатраты
			|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиНоменклатуры КАК УпаковкиНоменклатуры
			|		ПО МатериальныеЗатраты.ЕдИзм = УпаковкиНоменклатуры.Ссылка
			|
			|СГРУППИРОВАТЬ ПО
			|    МатериальныеЗатраты.Номенклатура, 
			|    МатериальныеЗатраты.Характеристика,
			|    МатериальныеЗатраты.Номенклатура.ЕдиницаИзмерения
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	Номенклатура,
			|	Характеристика,
			|	ЕдиницаИзмерения
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ЦеныНоменклатуры.Цена КАК Цена,
			|	ЦеныНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
			|	ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
			|	ЦеныНоменклатуры.Характеристика КАК Характеристика
			|ПОМЕСТИТЬ ЦеныНоменклатурыСрезПоследних
			|ИЗ
			|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
			|			&Дата,
			|			ВидЦены = &ТипЦены
			|				И (Номенклатура, Характеристика) В
			|					(ВЫБРАТЬ
			|						Таб.Номенклатура КАК Номенклатура,
			|						Таб.Характеристика КАК Характеристика
			|					ИЗ
			|						МатЗатраты КАК Таб)) КАК ЦеныНоменклатуры
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	Номенклатура,
			|	Характеристика,
			|	ЕдиницаИзмерения
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	МатериальныеЗатраты.Количество КАК Количество,
			|	МатериальныеЗатраты.Номенклатура.НаименованиеПолное КАК Номенклатура,
			|	МатериальныеЗатраты.Характеристика КАК Характеристика,
			|	МатериальныеЗатраты.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
			|	ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
			|	МатериальныеЗатраты.Количество * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Стоимость
			|ИЗ
			|	МатЗатраты КАК МатериальныеЗатраты
			|		ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
			|		ПО МатериальныеЗатраты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
			|			И МатериальныеЗатраты.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика";
			
			Запрос.УстановитьПараметр("Заявка",ВыборкаШапки.Ссылка);
			Запрос.УстановитьПараметр("РемонтыОборудования_ID", ВыборкаРемонтов.ID);
			Запрос.УстановитьПараметр("ПустаяСсылкаЕдИзм", Справочники.УпаковкиНоменклатуры.ПустаяСсылка());
			Запрос.УстановитьПараметр("Дата", ВыборкаРемонтов.ДатаНачала);
			Запрос.УстановитьПараметр("ТипЦены",Константы.торо_ТипЦеныДляРасчетаСебестоимостиРемонта.Получить()); 			
			ТаблицаМатериалов = Запрос.Выполнить().Выгрузить();
					
			Если ТаблицаМатериалов.Количество() > 0 Тогда
				ТабДок.Вывести(ШапкаНоменклатуры);
				
				Ном = 0;
				Итого = 0;
				Для Каждого Стр Из ТаблицаМатериалов Цикл
					Ном = Ном + 1;
					СтрокаТаблицыНоменклатуры.Параметры.Номер = Ном; 
					СтрокаТаблицыНоменклатуры.Параметры.Заполнить(Стр);
				    Итого = Итого + СтрокаТаблицыНоменклатуры.Параметры.Стоимость;  
					ТабДок.Вывести(СтрокаТаблицыНоменклатуры);
				КонецЦикла;
				
				ИтогоМатериалы.Параметры.Итого = Итого;
				ТабДок.Вывести(ИтогоМатериалы);
				ОбщийИтог = ОбщийИтог + Итого;
			КонецЕсли;
			
			// Вывод запчастей  
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			|	торо_ЗаявкаНаРемонтЗапчастиРемонта.Номенклатура КАК Номенклатура,
			|	торо_ЗаявкаНаРемонтЗапчастиРемонта.Количество КАК Количество,
			|	торо_ЗаявкаНаРемонтЗапчастиРемонта.ХарактеристикаНоменклатуры КАК Характеристика,
			|	ВЫБОР
			|		КОГДА торо_ЗаявкаНаРемонтЗапчастиРемонта.ЕдиницаИзмерения = &ПустаяСсылкаЕдИзм
			|			ТОГДА торо_ЗаявкаНаРемонтЗапчастиРемонта.Номенклатура.ЕдиницаИзмерения
			|		ИНАЧЕ торо_ЗаявкаНаРемонтЗапчастиРемонта.ЕдиницаИзмерения
			|	КОНЕЦ КАК ЕдиницаИзмерения
			|ПОМЕСТИТЬ Запчасти_Упаковки
			|ИЗ
			|	Документ.торо_ЗаявкаНаРемонт.ЗапчастиРемонта КАК торо_ЗаявкаНаРемонтЗапчастиРемонта
			|ГДЕ
			|	торо_ЗаявкаНаРемонтЗапчастиРемонта.Ссылка = &Заявка
			|	И торо_ЗаявкаНаРемонтЗапчастиРемонта.РемонтыОборудования_ID = &РемонтыОборудования_ID
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	ЕдиницаИзмерения
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Запчасти_Упаковки.Номенклатура КАК Номенклатура,
			|	Запчасти_Упаковки.Характеристика КАК Характеристика,
			|	Запчасти_Упаковки.Номенклатура.ЕдиницаИзмерения КАК ЕдИзм,
			|	СУММА(Запчасти_Упаковки.Количество * ЕСТЬNULL(УпаковкиНоменклатуры.Коэффициент, 1)) КАК Количество
			|ПОМЕСТИТЬ Запчасти
			|ИЗ
			|	Запчасти_Упаковки КАК Запчасти_Упаковки
			|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиНоменклатуры КАК УпаковкиНоменклатуры
			|		ПО Запчасти_Упаковки.ЕдиницаИзмерения = УпаковкиНоменклатуры.Ссылка
			|
			|СГРУППИРОВАТЬ ПО
			|	Запчасти_Упаковки.Номенклатура,
			|	Запчасти_Упаковки.Характеристика,
			|	Запчасти_Упаковки.Номенклатура.ЕдиницаИзмерения
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	Номенклатура,
			|	Характеристика,
			|	ЕдИзм
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
			|	ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
			|	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
			|	ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика
			|ПОМЕСТИТЬ ЦеныНоменклатуры
			|ИЗ
			|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
			|			&Дата,
			|			ВидЦены = &ТипЦены
			|				И (Номенклатура, Характеристика) В
			|					(ВЫБРАТЬ
			|						Таб.Номенклатура КАК Номенклатура,
			|						Таб.Характеристика КАК Характеристика
			|					ИЗ
			|						Запчасти КАК Таб)) КАК ЦеныНоменклатурыСрезПоследних
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	Номенклатура,
			|	Характеристика,
			|	ЕдиницаИзмерения
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Запчасти.Количество КАК Количество,
			|	Запчасти.Номенклатура.НаименованиеПолное КАК Запчасть,
			|	Запчасти.Характеристика КАК Характеристика,
			|	Запчасти.ЕдИзм КАК ЕдИзм,
			|	Запчасти.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Стоимость
			|ИЗ
			|	Запчасти КАК Запчасти
			|		ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатуры КАК ЦеныНоменклатуры
			|		ПО Запчасти.Номенклатура = ЦеныНоменклатуры.Номенклатура
			|			И Запчасти.Характеристика = ЦеныНоменклатуры.Характеристика";
			
			Запрос.УстановитьПараметр("Заявка", ВыборкаШапки.Ссылка);
			Запрос.УстановитьПараметр("РемонтыОборудования_ID", ВыборкаРемонтов.ID);
			Запрос.УстановитьПараметр("ПустаяСсылкаЕдИзм", Справочники.УпаковкиНоменклатуры.ПустаяСсылка());
			Запрос.УстановитьПараметр("Дата", ВыборкаРемонтов.ДатаНачала);
			Запрос.УстановитьПараметр("ТипЦены",Константы.торо_ТипЦеныДляРасчетаСебестоимостиРемонта.Получить()); 			
			ТаблицаЗапчастей = Запрос.Выполнить().Выгрузить();
			
			Если ТаблицаЗапчастей.Количество() > 0 Тогда
				ТабДок.Вывести(ШапкаЗапчасти);
				
				Ном = 0;
				Итого = 0;
				Для Каждого Стр Из ТаблицаЗапчастей Цикл
					Ном = Ном + 1;
					СтрокаТаблицыЗапчастей.Параметры.Номер = Ном; 
					СтрокаТаблицыЗапчастей.Параметры.Заполнить(Стр);
				    Итого = Итого + СтрокаТаблицыЗапчастей.Параметры.Стоимость;  
					ТабДок.Вывести(СтрокаТаблицыЗапчастей);
				КонецЦикла;
				
				ИтогоЗапчасти.Параметры.Итого = Итого;
				ТабДок.Вывести(ИтогоЗапчасти);
				ОбщийИтог = ОбщийИтог + Итого;
			КонецЕсли;
						
			// Вывод инструментов
			ПараметрыРасчета = Новый Структура();
			ПараметрыРасчета.Вставить("ОбъектПотребности", "Инструмент");
			ПараметрыРасчета.Вставить("РСПотребности", "РегистрСведений.торо_ИтоговаяПлановаяПотребностьВИнструментах");
			ПараметрыРасчета.Вставить("РСПотребностиИмя", "торо_ИтоговаяПлановаяПотребностьВИнструментах");
			ПараметрыРасчета.Вставить("ТипОбъектаПотребности", "СправочникСсылка.Номенклатура");
			
			ТаблицаИнструментов = торо_Ремонты.РассчитатьПотребностьПоРемонтуДокумента(ВыборкаРемонтов.ID, ВыборкаШапки.Ссылка, ПараметрыРасчета);
			
			Если ТаблицаИнструментов.Количество() > 0  Тогда 
				ТабДок.Вывести(ШапкаИнструменты);
			КонецЕсли;
			
			Ном = 0;
			Для каждого Стр Из ТаблицаИнструментов Цикл
				Ном = Ном +1;
				СтрокаТаблицыИнструментов.Параметры.Номер = Ном;
				СтрокаТаблицыИнструментов.Параметры.Заполнить(Стр);
				СтрокаТаблицыИнструментов.Параметры.ЕдИзм = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Стр.Инструмент, "ЕдиницаИзмерения");
				ТабДок.Вывести(СтрокаТаблицыИнструментов);
			КонецЦикла;
									
			Если ВыборкаШапки.Ссылка.МерыБезопасности.Количество()>0 Тогда
				ТабДок.Вывести(ШапкаМерыБезопасности);
			КонецЕсли;
			
			Для Каждого Стр Из ВыборкаШапки.Ссылка.МерыБезопасности Цикл
				СтрокаТаблицыМерыБезопасности.Параметры.Номер = Стр.НомерСтроки;
				СтрокаТаблицыМерыБезопасности.Параметры.МерыБезопасности = Стр.МераБезопасности;
				ТабДок.Вывести(СтрокаТаблицыМерыБезопасности);   
			КонецЦикла;
			
			Подвал.Параметры.СуммаУслуг = ОбщийИтог;
			ФормСтрока = "Л = ru_RU; ДП = Истина";
			ПарамПред  = Справочники.Валюты.НайтиПоНаименованию(Константы.ВалютаУправленческогоУчета.Получить()).ПараметрыПрописи;
			СуммаУслуг = " " + Строка(Константы.ВалютаУправленческогоУчета.Получить())+" ("+ ЧислоПрописью(ОбщийИтог, ФормСтрока, ПарамПред)+")";
			Подвал.Параметры.СуммаУслугПрописью = СуммаУслуг;
			ТабДок.Вывести(Подвал);
			
		КонецЦикла;
	КонецЦикла;
	 
	ТабДок.ТолькоПросмотр = Истина;
	ТабДок.КлючПараметровПечати = "торо_ПечатьЗаявкиНаРемонт";
	Возврат ТабДок;	

КонецФункции