Имя: Пароль:
1C
1C 7.7
v7: Индексация зарплаты. Помогите!
0 Standart
 
02.03.16
09:04
по новому Положению поменялись правила расчета индексации ЗП. Сейчас  у меня считает за фактическое отработанное время. Не получается сделать по новому: надо чтоб считало от всех начислений за месяц, за исключением Единовременных премий, материальных помощей, больничные листы, вознаграждения, уволенных в течении месяца, по совместимости, временные работники.
Процедура ПровестиРасчет()
    Результат =0;
    Если Объект.ТипСотрудника.получить(ДатаОкончания) <> Перечисление.ТипСотрудника.Штатный Тогда
        Возврат;
    КонецЕсли;
    Если ОпределитьДатуНачалаРаботы(Объект) >= ДатаНачала Тогда
        Возврат;
    КонецЕсли;
    
    Если Документ.Вид()="ПриказНаДоплату"  Тогда
        Величина=Документ.Величина;
    ИначеЕсли Документ.Вид()="НачислениеИндексацииЗП"  Тогда
        Если СтрокаДока>0  Тогда
            Документ.ПолучитьСтрокуПоНомеру(СтрокаДока);
        Иначе
            Сообщить("Невозможно рассчитать "+ПредставлениеВР(ВидРасч)+" для сотрудника "+ФИО(Объект.Наименование)+" по документу ""Ввод премии/доплаты списком"" № "+СокрЛП(Документ.НомерДок)+" от "+Документ.ДатаДок +" - отсутствует привязка к строке документа", "!");
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
        ЖрнЗп = СоздатьОбъект("ЖурналРасчетов.Зарплата");
        дтИндПериода = Документ.ДатаАктуальности;
        ВесьДоход =0;
        ЖрнЗп.ВыбратьПериодПоОбъекту(Объект, дтИндПериода);
        Пока ЖрнЗп.ПолучитьЗапись()=1 Цикл
            //Если ЖрнЗп.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ДляИндексации)=1 Тогда
            //    ВесьДоход = ВесьДоход + ЖрнЗп.Результат;
            //КонецЕсли;
        Если ЖрнЗп.ВидРасч.ВходитВГруппу(ГруппаРасчетов.БольничныеЛисты)=1 Тогда
            Продолжить;
        ИначеЕсли ЖрнЗп.ВидРасч.ВходитВгруппу(ГруппаРасчетов.ВсеНачисления)=1 тогда
            
                ВесьДоход = ВесьДоход + ЖрнЗп.Результат;
            КонецЕсли;
        КонецЦикла;  
        
        ИндексСумма = ?(ВесьДоход >= Документ.МаксИндексДоход, Документ.МаксИндексДоход, ВесьДоход);
        //Величина = ИндексСумма * Документ.ИндексПЦен / 100; //Округление(ИндексСумма * Документ.ИндексПЦен / 100, Константа.ОкруглениеРасчетовПоУмолчанию);
        Если Объект.графикРаботы.Получить(дтИндПериода).Выбран()=1  тогда
            Баланс = Объект.ГрафикРаботы.Получить(дтИндПериода).МесБалансРабВр.Получить(дтИндПериода);
        иначе  
            Баланс = Константа.КалендарьПоУмолчанию.Часов(НачМесяца(дтИндПериода), дтИндПериода);
        КонецЕсли;
        Отр=глОтработанноеВремяЗаПериод(Объект,НачМесяца(дтИндПериода),КонМесяца(дтИндПериода));
        ОтрЧасов=Отр.ПолучитьЗначение(2);
        ИндексСумма=ИндексСумма*ОтрЧасов/Баланс;
        Величина = Округление(ИндексСумма * Документ.ИндексПЦен / 100, Константа.ОкруглениеРасчетовПоУмолчанию);
        //Величина=Округление(Величина*ОтрЧасов/Баланс, Константа.ОкруглениеРасчетовПоУмолчанию);
    Иначе
        Если СтрокаДока>0  Тогда
            Документ.ПолучитьСтрокуПоНомеру(СтрокаДока);
            Величина = Документ.Сумма;
        Иначе
            Сообщить("Невозможно рассчитать "+ПредставлениеВР(ВидРасч)+" для сотрудника "+ФИО(Объект.Наименование)+" по документу ""Ввод премии/доплаты списком"" № "+СокрЛП(Документ.НомерДок)+" от "+Документ.ДатаДок +" - отсутствует привязка к строке документа", "!");
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    КонецЕсли;                
    Результат = Величина;
КонецПроцедуры
1 NikVars
 
03.03.16
16:34
(0) Денег скока на кону?!
2 Standart
 
04.03.16
10:33
NikVars.   Копейки, 25% от бюджета прожиточного минимума (1.500.000 бел. руб).