Загрузка данных
Функция ПечатьЗаявки(МассивОбъектов, ПараметрыПечати)
ТабДок = Новый ТабличныйДокумент;
ТабДок.АвтоМасштаб = Истина;
ИспользоватьХарактеристики = Константы.торо_ИспользоватьХарактеристикиНоменклатуры.Получить();
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.торо_ЗаявкаНаРемонт.ПФ_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; ДП = Истина";
ПарамПред = Справочники.Валюты.НайтиПоНаименованию(Константы.ВалютаУправленческогоУчета.Получить()).ПараметрыПрописи;
СуммаУслуг = " " + Строка(Константы.ВалютаУправленческогоУчета.Получить())+" ("+ ЧислоПрописью(ОбщийИтог, ФормСтрока, ПарамПред)+")";
Подвал.Параметры.СуммаУслугПрописью = СуммаУслуг;
ТабДок.Вывести(Подвал);
КонецЦикла;
КонецЦикла;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.КлючПараметровПечати = "торо_ПечатьЗаявкиНаРемонт";
Возврат ТабДок;
КонецФункции