Имя: Пароль:
1C
1С v8
ЗУП или ЗБУ Доплата за ночные и праздничные от расчетной базы
,
0 savimar
 
15.09.11
13:27
Нужно сделать такой вид расчета, чтобы ночные и праздничные часы считались не только от тарифной ставки, но вместе в вредностью и ещё другими в/р. Сейчас стоит  Расчетная база / Отработано времени в часах * Время в часах * 0.35, где Отработано времени глючит, когда отработан неполный месяц (здесь, понятно, отработано меньше) и при перерасчетах-исправлениях(задваивает). По идее должен быть вместо него НормаВремениВЧасах, но расчет з/п пишет, что в этом случае деление на 0 (Введен сводный график и даже силком расчетчиц не заставишь делать по дням периода, пока не глюканул).
1 savimar
 
15.09.11
19:08
Ап
2 Упанишады
 
15.09.11
23:58
В свое время сталкивался с задачей как сделать, чтобы при учете ночных и праздничных учитывалась вредность. Другого способа не нашел, кроме того, чтобы внести изменения в конфу. Изменения небольшие.
3 savimar
 
16.09.11
07:16
А куда вносить изменения в конфу? В расчет часовой ставки?
4 Упанишады
 
16.09.11
09:11
В документ "НачислениеЗарплатыРаботникамОрганизаций.МодульОбъекта"

       // Сохраним размер основного начисления для расчета размера оплаты ночных и вечерних часов
       // (основное начисление в выборке должно идти раньше других видов расчета)
       Если Начисления.ОсновноеНачисление и Начисления.ВидРасчета <> Неопределено Тогда
           ТекущаяЧасоваяСтавкаОсновногоНачисления = Начисления.ЧасоваяТарифнаяСтавка;
       КонецЕсли;
       
       //Мои изменения учет ВУТ
       Если (Начисления.ВидРасчета <> Неопределено)И(Начисления.ВидРасчета.Код="00006") Тогда
           ТекущаяЧасоваяСтавкаОсновногоНачисления = ТекущаяЧасоваяСтавкаОсновногоНачисления*(100+Начисления.Показатель1)*0.01;
       КонецЕсли;
       
       
       // Найдем такой же вид расчета среди незакрытых строк с целью завершения его действия
       Строки = Новый Массив;
5 Упанишады
 
16.09.11
09:12
В документ "НачислениеЗарплатыРаботникамОрганизаций.МодульОбъекта"

           НоваяСтрока.Показатель1 = (Начисления.ЧасоваяТарифнаяСтавка * ПроцентДоплатыЗаНочныеЧасы) / 100;
           
           //Мои изменения учет ВУТ
           НоваяСтрока.Показатель1 = (Начисления.ЧасоваяТарифнаяСтавка * ПроцентДоплатыЗаНочныеЧасы * яПроцедуры.КоэффициентВУТ(Начисления.Сотрудник, Начисления.Период)) / 100;
           
           НоваяСтрока.Основное = Ложь;
6 Упанишады
 
16.09.11
09:15
1.При этом код начисления ВУТ ="00006"
2.Мои изменения - это несколько строк после комментария "//Мои изменения учет ВУТ" до следующей пустой строки. Предыдущие и последующие строки из типовой ЗУП я привожу для того, чтобы можно было найти, куда это вставить.
7 Упанишады
 
16.09.11
09:18
В пользовательском общем модуле "МоиПроцедуры" или наподобие

Функция КоэффициентВУТ(Сотрудник,Дата)Экспорт
   Запрос = Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
                |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник1,
                |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Организация,
                |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение.Код,
                |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1,
                |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения,
                |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1Завершения
                |ИЗ
                |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&Дата, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
                |ГДЕ
                |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Код = &КодВУТ
                |    И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник = &Сотрудник";        
   Запрос.УстановитьПараметр("Дата",Дата);
   Запрос.УстановитьПараметр("КодВУТ","00006");                  
   Запрос.УстановитьПараметр("Сотрудник",Сотрудник);                  
   Результат=Запрос.Выполнить();                  
   Выборка=Результат.Выбрать();
   Процент=0;
   Если Выборка.Следующий() Тогда
       Процент = Выборка.Показатель1;
       Если Выборка.ПериодЗавершения > Дата(1,1,1) и Выборка.ПериодЗавершения < Дата Тогда
           Процент = Выборка.Показатель1Завершения;
       КонецЕсли;
   КонецЕсли;
   Возврат (100+Процент)*0.01;
КонецФункции
8 Упанишады
 
16.09.11
09:22
В документ "ОплатаПраздничныхИВыходныхДнейОрганизации", форма документа, процедура "ВыполнитьАвторасчетРеквизитовСтрокиНачисления" добавить строку:

+Code
   Если РассчитатьТариф Тогда
       // Рассчитаем часовую тарифную ставку работника
       ЧасовойТариф = ПроцедурыУправленияПерсоналом.ЧасоваяТарифнаяСтавкаРаботникаОрг(ДанныеСтроки.Сотрудник, ДатаАктуальности, НачалоМесяца(ПериодРегистрации), мВалютаРегламентированногоУчета);
       
       //Добавленная строка
       ЧасовойТариф=ЧасовойТариф*яПроцедуры.КоэффициентВУТ(ДанныеСтроки.Сотрудник,ДанныеСтроки.ДатаВыхода);        
       
       ДанныеСтроки.Размер = ЧасовойТариф;
   КонецЕсли;
9 Упанишады
 
16.09.11
09:23
В документе "ОплатаСверхурочныхЧасов" такие же изменения, как в (8)
10 savimar
 
16.09.11
12:37
Спасибо!!!
2 + 2 = 3.9999999999999999999999999999999...