Процедура КнопкаСформироватьНажатие(Кнопка)
Если ЭтаФорма.Подразделение = Справочники.Подразделения.ПустаяСсылка() Тогда
Вопрос("Для формирования отчета необходимо выбрать производственный участок!", РежимДиалогаВопрос.ОК);
Возврат;
КонецЕсли;
ТабДокумент = ЭтаФорма.ЭлементыФормы.ТД;
Макет = Отчеты.ОтчетРасчетаТарифовДок.ПолучитьМакет("Макет");
ТабДокумент.Очистить();
//Получение производительности
ЗапросПроизводительности = Новый Запрос();
ЗапросПроизводительности.Текст = "ВЫБРАТЬ
| ПроизводительностьПоУчасткамСрезПоследних.Номенклатура КАК Номенклатура,
| ПроизводительностьПоУчасткамСрезПоследних.ПроизводственныйУчасток КАК Подразделение,
| ПроизводительностьПоУчасткамСрезПоследних.Организация КАК Организация,
| ПроизводительностьПоУчасткамСрезПоследних.Производительность,
| ПроизводительностьПоУчасткамСрезПоследних.Период
|ИЗ
| РегистрСведений.ПроизводительностьПоУчасткам.СрезПоследних(&Период, ) КАК ПроизводительностьПоУчасткамСрезПоследних
|ГДЕ
| ПроизводительностьПоУчасткамСрезПоследних.ПроизводственныйУчасток = &Подразделение
| И ПроизводительностьПоУчасткамСрезПоследних.Организация = &Организация
|
|УПОРЯДОЧИТЬ ПО
| ПроизводственныйУчасток,
| Номенклатура,
| Организация";
ЗапросПроизводительности.УстановитьПараметр("Подразделение", ЭтаФорма.Подразделение);
ЗапросПроизводительности.УстановитьПараметр("Организация", ЭтаФорма.Организация);
ЗапросПроизводительности.УстановитьПараметр("Период", ЭтаФорма.ДатаОтчета);
ВыборкаПроизводительности = ЗапросПроизводительности.Выполнить().Выбрать();
ЗапросКатегорий = Новый Запрос();
ЗапросКатегорий.Текст = "ВЫБРАТЬ
| ДоговорнаяЗарплата.Категория КАК Категория,
| ДоговорнаяЗарплата.Сумма
|ИЗ
| РегистрСведений.ДоговорнаяЗарплата КАК ДоговорнаяЗарплата
|
|УПОРЯДОЧИТЬ ПО
| Категория";
ВыборкаКатегорий = ЗапросКатегорий.Выполнить().Выбрать();
//Вывод шапки отчета
тШапкаОтчета = Макет.ПолучитьОбласть("ШапкаОтчета|Данные");
тШапкаОтчета.Параметры["Подразделение"] = ЭтаФорма.Подразделение;
ТабДокумент.Вывести(тШапкаОтчета);
//Вывод шапки таблицы
тШапкаДанные = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ТабДокумент.Вывести(тШапкаДанные);
тШапкаКатегория = Макет.ПолучитьОбласть("ШапкаТаблицы|Категория");
Пока ВыборкаКатегорий.Следующий() Цикл
тШапкаКатегория.Параметры["Категория"] = ВыборкаКатегорий.Категория;
ТабДокумент.Присоединить(тШапкаКатегория);
КонецЦикла;
//Формирование отчета
тСтрокаДанные = Макет.ПолучитьОбласть("СтрокаТаблицы|Данные");
тСтрокаКатегория = Макет.ПолучитьОбласть("СтрокаТаблицы|Категория");
Пока ВыборкаПроизводительности.Следующий() Цикл
//Вывод номенклатуры
тСтрокаДанные.Параметры["Номенклатура"] = ВыборкаПроизводительности.Номенклатура;
ТабДокумент.Вывести(тСтрокаДанные);
//Проход по выборке категорий (для вывода тарифа по каждой категории)
ВыборкаКатегорий.Сбросить();
Пока ВыборкаКатегорий.Следующий() Цикл
тСтрокаКатегория.Параметры["Сумма"] = Окр(ВыборкаКатегорий.Сумма / ВыборкаПроизводительности.Производительность, 2);
ТабДокумент.Присоединить(тСтрокаКатегория);
КонецЦикла;
КонецЦикла;
ТабДокумент.Показать();
КонецПроцедуры
Процедура ПриОткрытии()
Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
ДатаОтчета = ТекущаяДата();
КонецПроцедуры
Процедура ПодразделениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СписокПодразделений = Новый СписокЗначений;
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Подразделения.Ссылка КАК Ссылка
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.Родитель = &Родитель
|
|УПОРЯДОЧИТЬ ПО
| Подразделения.Наименование";
ПРУчастки = Справочники.Подразделения.НайтиПоНаименованию("Производственные участки");
Если ПРУчастки = неопределено Тогда
ПРУчастки = Справочники.Подразделения.ПустаяСсылка();
КонецЕсли;
Запрос.УстановитьПараметр("Родитель",ПРУчастки);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
//Сообщить(Выборка.Ссылка);
СписокПодразделений.Добавить(Выборка.Ссылка, Выборка.Ссылка.Наименование);
КонецЦикла;
ВыбранноеЗначение = ЭтаФорма.ВыбратьИзСписка(СписокПодразделений, Элемент);
Если ВыбранноеЗначение <> Неопределено Тогда
Элемент.Значение = ВыбранноеЗначение.Значение;
КонецЕсли;
КонецПроцедуры