Расчет тарифов

Отчет по расчету ЗП в зависимости от категории сотрудников.

Процедура КнопкаСформироватьНажатие(Кнопка)

Если ЭтаФорма.Подразделение = Справочники.Подразделения.ПустаяСсылка() Тогда
Вопрос(«Для формирования отчета необходимо выбрать производственный участок!», РежимДиалогаВопрос.ОК);
Возврат;
КонецЕсли;

ТабДокумент = ЭтаФорма.ЭлементыФормы.ТД;
Макет = Отчеты.ОтчетРасчетаТарифовДок.ПолучитьМакет(«Макет»);

ТабДокумент.Очистить();

//Получение производительности
ЗапросПроизводительности = Новый Запрос();
ЗапросПроизводительности.Текст = «ВЫБРАТЬ
| ПроизводительностьПоУчасткамСрезПоследних.Номенклатура КАК Номенклатура,
| ПроизводительностьПоУчасткамСрезПоследних.ПроизводственныйУчасток КАК Подразделение,
| ПроизводительностьПоУчасткамСрезПоследних.Организация КАК Организация,
| ПроизводительностьПоУчасткамСрезПоследних.Производительность,
| ПроизводительностьПоУчасткамСрезПоследних.Период
|ИЗ
| РегистрСведений.ПроизводительностьПоУчасткам.СрезПоследних(&Период, ) КАК ПроизводительностьПоУчасткамСрезПоследних
|ГДЕ
| ПроизводительностьПоУчасткамСрезПоследних.ПроизводственныйУчасток = &Подразделение
| И ПроизводительностьПоУчасткамСрезПоследних.Организация = &Организация
|
|УПОРЯДОЧИТЬ ПО
| ПроизводственныйУчасток,
| Номенклатура,
| Организация»;

ЗапросПроизводительности.УстановитьПараметр(«Подразделение», ЭтаФорма.Подразделение);
ЗапросПроизводительности.УстановитьПараметр(«Организация», ЭтаФорма.Организация);
ЗапросПроизводительности.УстановитьПараметр(«Период», ЭтаФорма.ДатаОтчета);

ВыборкаПроизводительности = ЗапросПроизводительности.Выполнить().Выбрать();

ЗапросКатегорий = Новый Запрос();
ЗапросКатегорий.Текст = «ВЫБРАТЬ
| ДоговорнаяЗарплата.Категория КАК Категория,
| ДоговорнаяЗарплата.Сумма
|ИЗ
| РегистрСведений.ДоговорнаяЗарплата КАК ДоговорнаяЗарплата
|
|УПОРЯДОЧИТЬ ПО
| Категория»;

ВыборкаКатегорий = ЗапросКатегорий.Выполнить().Выбрать();

//Вывод шапки отчета
тШапкаОтчета = Макет.ПолучитьОбласть(«ШапкаОтчета|Данные»);
тШапкаОтчета.Параметры[«Подразделение»] = ЭтаФорма.Подразделение;

ТабДокумент.Вывести(тШапкаОтчета);

//Вывод шапки таблицы
тШапкаДанные = Макет.ПолучитьОбласть(«ШапкаТаблицы|Данные»);
ТабДокумент.Вывести(тШапкаДанные);
тШапкаКатегория = Макет.ПолучитьОбласть(«ШапкаТаблицы|Категория»);
Пока ВыборкаКатегорий.Следующий() Цикл
тШапкаКатегория.Параметры[«Категория»] = ВыборкаКатегорий.Категория;
ТабДокумент.Присоединить(тШапкаКатегория);
КонецЦикла;

//Формирование отчета
тСтрокаДанные = Макет.ПолучитьОбласть(«СтрокаТаблицы|Данные»);
тСтрокаКатегория = Макет.ПолучитьОбласть(«СтрокаТаблицы|Категория»);
Пока ВыборкаПроизводительности.Следующий() Цикл

//Вывод номенклатуры
тСтрокаДанные.Параметры[«Номенклатура»] = ВыборкаПроизводительности.Номенклатура;
ТабДокумент.Вывести(тСтрокаДанные);

//Проход по выборке категорий (для вывода тарифа по каждой категории)
ВыборкаКатегорий.Сбросить();
Пока ВыборкаКатегорий.Следующий() Цикл
тСтрокаКатегория.Параметры[«Сумма»] = Окр(ВыборкаКатегорий.Сумма / ВыборкаПроизводительности.Производительность, 2);
ТабДокумент.Присоединить(тСтрокаКатегория);
КонецЦикла;

КонецЦикла;
ТабДокумент.Показать();

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

Процедура ПриОткрытии()

Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной(«глТекущийПользователь»), «ОсновнаяОрганизация»);
ДатаОтчета = ТекущаяДата();

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

Процедура ПодразделениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

СписокПодразделений = Новый СписокЗначений;

Запрос = Новый Запрос();
Запрос.Текст =
«ВЫБРАТЬ
| Подразделения.Ссылка КАК Ссылка
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.Родитель = &Родитель
|
|УПОРЯДОЧИТЬ ПО
| Подразделения.Наименование»;

ПРУчастки = Справочники.Подразделения.НайтиПоНаименованию(«Производственные участки»);
Если ПРУчастки = неопределено Тогда
ПРУчастки = Справочники.Подразделения.ПустаяСсылка();
КонецЕсли;

Запрос.УстановитьПараметр(«Родитель»,ПРУчастки);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
//Сообщить(Выборка.Ссылка);
СписокПодразделений.Добавить(Выборка.Ссылка, Выборка.Ссылка.Наименование);
КонецЦикла;

ВыбранноеЗначение = ЭтаФорма.ВыбратьИзСписка(СписокПодразделений, Элемент);

Если ВыбранноеЗначение <> Неопределено Тогда
Элемент.Значение = ВыбранноеЗначение.Значение;
КонецЕсли;

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

 

 

 

 

 

1 Comment

  1. smooth

    (0), о чем вообще речь????

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *