Норма времени по плану отработанного времени
Продолжаю дорабатывать модуль по расчету зарплаты в УТ от Codestar. О предыдущих хитростях по спуску параметра вниз по стеку я уже писал.
Теперь понадобилось нормы времени рассчитывать по плановому времени.
Для этого добавил в начисление галочку «По плановым часам»:
Далее в менеджере регистра сведений «Нормы времени» осталось только посчитать норму времени по плановому времени работы сотрудника за месяц.
И опять мы сталкиваемся с необходимостью передать вниз по стеку текущего сотрудника, для которого рассчитывается норма.
На этот раз я завел параметр сеанса «Сотрудник для норм» — учусь на ваших советах. При запуске расчета устанавливаю его:
&НаСервере &Вместо("ПолучитьРезультатНачисленияУдержания") Функция дор_ПолучитьРезультатНачисленияУдержания(СтрокаТЧ, тПланФакт) //Устанавливаем сотрудника ПараметрыСеанса.дор_СотрудникДляНорм = СтрокаТЧ.Физлицо; Результат = ПродолжитьВызов(СтрокаТЧ, тПланФакт); Возврат Результат; КонецФункции
А при расчете получаю его (в модуле менеджера регистра «Нормы времени»):
&Вместо("ПолучитьНорму") Функция дор_ПолучитьНорму(Начисление, Период, Показатель) //По плановым часам считаем по-другому Если Начисление._ПоПлановымЧасам Тогда З = Новый Запрос( "ВЫБРАТЬ | Т.ЧасовОборот КАК Часов |ИЗ | РегистрНакопления._ОтработанноеВремя.Обороты(&Дата1, &Дата2, , ) КАК Т |ГДЕ | Т.Сотрудник = &Сотрудник | И Т.ВидРабочегоВремени = &ВидРабочегоВремени"); ТекСотрудник = ПараметрыСеанса.дор_СотрудникДляНорм; З.УстановитьПараметр("Сотрудник", ТекСотрудник); З.УстановитьПараметр("ВидРабочегоВремени", Справочники._ВидыРабочегоВремени.План); З.УстановитьПараметр("Дата1", НачалоМесяца(Период)); З.УстановитьПараметр("Дата2", КонецМесяца(Период)); Выборка = З.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Результат = Выборка.Часов; Сообщить("Сотрудник: " + ТекСотрудник + " Начисление: " + Начисление + " за месяц: " + Формат(Период, "ДФ='MMMM yyyy'") + " = " + Результат); Возврат Результат; Иначе Возврат 0; КонецЕсли; КонецЕсли; Результат = ПродолжитьВызов(Начисление, Период, Показатель); Возврат Результат; КонецФункции
При этом еще и вывожу сообщения, чтобы пользователь мог проверить расчет:
Можно сверить данные с табелем:
Среда: УТ 11.4.13.46. Объем факт: 1 час.
Свежие комментарии