Untitled
unknown
plain_text
2 years ago
4.6 kB
6
Indexable
Процедура РассчитатьНачисления(Регистратор, НаборЗаписей) Экспорт
// РАСЧЕТ ОКЛАДА
// Формула расчета: [Начальное значение оклада] / [Количество рабочих часов] * [Количество отработанных часов]
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовФактическийПериодДействия, 0) КАК ЧасовФакт,
| ОсновныеНачисленияДанныеГрафика.Параметр,
| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовПериодДействия, 0) КАК ЧасовПлан,
| ОсновныеНачисленияДанныеГрафика.НомерСтроки
|ИЗ
| РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчетаОклад) КАК ОсновныеНачисленияДанныеГрафика";
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("ВидРасчетаОклад", ПланыВидовРасчета.ОсновныеНачисления.Оклад);
Выборка = Запрос.Выполнить().Выбрать();
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("НомерСтроки",0);
Для Каждого Запись Из НаборЗаписей Цикл
СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
Запись.Результат = ?(Выборка.ЧасовПлан = 0,0, Выборка.Параметр / Выборка.ЧасовПлан * Выборка.ЧасовФакт);
КонецЕсли;
Выборка.Сбросить();
КонецЦикла;
НаборЗаписей.Записать(, Истина);
// РАСЧЕТ ПРЕМИИ
// Формула расчета: [Сумма базы (по окладу)] * [Процент премии]
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеНачисленияБазаОсновныеНачисления.НомерСтроки,
| ОсновныеНачисленияБазаОсновныеНачисления.РезультатБаза КАК База,
| ОсновныеНачисленияБазаОсновныеНачисления.Параметр
|ИЗ
| РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(
| &Измерения,
| &измерения,
| ,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчетаПремия) КАК ОсновныеНачисленияБазаОсновныеНачисления";
Измерения = Новый Массив(1);
Измерения[0] = "Сотрудник";
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("Измерения", Измерения);
Запрос.УстановитьПараметр("ВидРасчетаПремия", ПланыВидовРасчета.ОсновныеНачисления.Премия);
Выборка = Запрос.Выполнить().Выбрать();
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("НомерСтроки",0);
Для Каждого Запись Из НаборЗаписей Цикл
СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
Запись.Результат = Выборка.База * Выборка.Параметр / 100;
КонецЕсли;
Выборка.Сбросить();
КонецЦикла;
НаборЗаписей.Записать(, Истина);
КонецПроцедурыEditor is loading...