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