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