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