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