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