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