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