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