1. Документ РасчетСредней, модуль документа, Процедура ЗаполнитьТабСуммыНачислений:
зСуммы = СоздатьОбъект("Запрос");
тСуммы = "//{{ЗАПРОС(зСуммы)
|С ДатаС по ДатаПо;
|ПеД = ЖурналРасчетов.Зарплата.ПериодДействия;
|ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч;
|Сот = ЖурналРасчетов.Зарплата.Объект;
|Рез = ЖурналРасчетов.Зарплата.Результат;"
// СуммаПолностью
// согласно Порядка 1266 для больничного премии по итогам года и доплата за выслугу лет
// учитывается, причем в том месяце, в котором они были начислены,
// а не в размере 1/12 на каждый месяц (для премии)
+?(ГруппаДляСредней = ГруппаРасчетов.ВключатьВСреднююДляБольничного,
"Функция СуммаПолностью = Сумма(Рез) Когда (
|(ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВключатьВСреднююБольничногоПропорциональноВремени) <> 1)
|И (ВидРасч.ВходитВГруппу(ГруппаРасчетов.КвартальныеПремии) <> 1)
|И ((ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВключатьВСреднююДляБольничного) = 1)
|или (ВидРасч.ВходитВГруппу(ГруппаРасчетов.ПремииПоИтогамГода) = 1)
|или (ВидРасч = ВидРасчета.ДоплатаЗаВыслугуЛет)) );
|
|Функция СуммаПропорционально = Сумма(Рез) Когда (
|(ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВключатьВСреднююБольничногоПропорциональноВремени) = 1)
|И ((ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВключатьВСреднююДляБольничного) = 1)
|или (ВидРасч.ВходитВГруппу(ГруппаРасчетов.ПремииПоИтогамГода) = 1)
|или (ВидРасч = ВидРасчета.ДоплатаЗаВыслугуЛет)) );
|",
"Функция СуммаПолностью = Сумма(Рез) Когда (ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВключатьВСреднююПолностью) = 1);
|Функция СуммаПропорционально = Сумма(Рез) Когда (ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВключатьВСреднююПропорциональноВремени) = 1);
|")+
// СуммаКвартальнойПремии
"Функция СуммаКвартальнойПремии = Сумма(Рез) Когда (ВидРасч.ВходитВГруппу(ГруппаРасчетов.КвартальныеПремии) = 1);
// СуммаПропорционально
.............................
Смотрим СуммаПолностью и Сумма пропорционально для больничных:
Если ВидРасч годовая премия или Доплата за выслугу, они попадают в обе суммы
Смотрим дальше Функция ОпределитьСуммыЗаработка()
Пока ПолучитьСтроку() = 1 Цикл
ЗаработокЗаМесяц = 0;
ПолныйЗаработокЗаМесяц = СуммаПолностью;
Если ГруппаДляСредней = ГруппаРасчетов.ВключатьВСреднююДляОтпуска Тогда
// средняя для отпуска
// при расчете средней все начисления учитываем полностью
ПолныйЗаработокЗаМесяц = ПолныйЗаработокЗаМесяц + СуммаКвартальнойПремии +
СуммаПропорционально + ПремияПрошлогоГода / 12;
ИначеЕсли ГруппаДляСредней = ГруппаРасчетов.ВключатьВСреднююДляБольничного Тогда
// средняя для больничного
// при расчете средней все начисления учитываем полностью
// кроме премии прошлого года (Порядок 1266)
Если Отработано < Норма Тогда
ПолныйЗаработокЗаМесяц = ПолныйЗаработокЗаМесяц + СуммаКвартальнойПремии +
?(Норма = 0, 0, СуммаПропорционально * Отработано/Норма);
Иначе
ПолныйЗаработокЗаМесяц = ПолныйЗаработокЗаМесяц + СуммаКвартальнойПремии +
?(Норма = 0, 0, СуммаПропорционально);
КонецЕсли;
Если (Отработано < Норма) и (БазаНалога > БазаВзноса) Тогда
// Письмо от 14.09.2006г. № 600/020/99-06 Мин.труда и соц.политики,
// мы должны Базу взять пропорционально
ПолныйЗаработокЗаМесяц = ?(БазаНалога = 0, 0, ПолныйЗаработокЗаМесяц * БазаВзноса/БазаНалога);
//СуммаКвартальнойПремии = ?(БазаНалога = 0, 0, СуммаКвартальнойПремии * БазаВзноса/БазаНалога);
КонецЕсли;
Иначе
// прочие случаи, когда средняя рассчитывается за два месяца
// полный заработок с учетом отраб. времени и годовой премии
// определяем коэффициент нормы времени
Если Норма <> 0 Тогда
Коэф = Отработано/Норма;
Иначе
Коэф = 0;
глТрассировка("Нулевая норма за "+ПериодСтр(ДатаМесяца,КонМесяца(ДатаМесяца))+". Расчеты могут быть неверными.",1);
КонецЕсли;
ПолныйЗаработокЗаМесяц = ПолныйЗаработокЗаМесяц +
(СуммаКвартальнойПремии * КоличествоСтрок() / 3 +
СуммаПропорционально + ПремияПрошлогоГода / 12) * Коэф;
КонецЕсли;
И что сдесь?, в ПолныйЗаработокЗаМесяц попадает и СуммаПолностью и СуммаПропорционально, тоесть дважды попадает в расчет.
Теперь, если у нас пособие по Берименности и родам: то премия по итогам года еще попадает в ПремияПрошлогоГода, тоесть уже 3 раза учавствует в расчете.
Да и Группы расчетов странно набраны, например Доплата за выслугу включена и в ВключатьВСреднююДляБольничного и в ВключатьВСреднююБольничногоПропорциональноВремени, а годовая только в ВключатьВСреднююДляБольничного. А в группах ВключатьВСреднююПолностью и ВключатьВСреднююПропорциональноВремени - расчеты, что пропорционально, исключены из полностью Нафига весь этот геморой в условиях, и группы по разным принципам набраны.
Иногда вообще нехочется наворачивать обновления...но, требуют.
! | Правила, п.5!! |