Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

помогите изменить формулу расчета среднего заработка для отпускных в ЗиК

андрей5
читатель
офлайн
Дата регистрации: 03.12.2008
Сообщений: 10
Пост №1
 
03.12.2008 09:50

помогите пожалуста!!! изменить формулу расчета среднего заработка для отпускных в ЗиК, что и где поменять,<br>Именения в формуле в связи с законодательством. <br>формула раньше К=(29,4 дн.*M)+(Д1*1,4+Д2*1,4+...).<br>формула нужна сейчас К=(29,4 дн.*M)+(29,4/Кнд1*Котр1+29,4/Кнд2*Котр2...).<br>релиз Зик 2.70.281 Правда его нельзя обновить нестандартный,РСЗдО заменить только программно.

Svetlana_E
читатель
офлайн
Дата регистрации: 30.08.2006
Сообщений: 2645
Пост №2
 
03.12.2008 10:38

Но ведь можно сравнить конфигурации и просто взять, то что нужно <br>Это ведь не просто формула, а целая процедура.

андрей5
читатель
офлайн
Дата регистрации: 03.12.2008
Сообщений: 10
Пост №3
 
03.12.2008 11:21

А нельзя как нибуть узнать в какой процедуре все это расчитывается, пробовал найти неполучилось(документ расчет среднего зароботка отпускных/средний заработок/кнопка заполнить/функция ЗаполнитьТабличнуюЧасть()/ а далее уходит кудато в глобальный модуль), пожалуйста подскажите новичку, запарился

poldarsa
читатель
офлайн
Дата регистрации: 08.02.2007
Сообщений: 604
Пост №4
 
03.12.2008 11:30

Копай в глобальном модуле в этой функции глСуммаСреднегоЗаработкаОтпуска

андрей5
читатель
офлайн
Дата регистрации: 03.12.2008
Сообщений: 10
Пост №5
 
03.12.2008 13:21

А что за "ТаблицаДанныхОСреднем"?, как я понял из неё берутся все данные, но уже расчитанные или нет?

андрей5
читатель
офлайн
Дата регистрации: 03.12.2008
Сообщений: 10
Пост №6
 
03.12.2008 14:16

может быть кто нибудь сталкивался с такой проблемой, или разместите пожалуйста код функции "Функция глСуммаСреднегоЗаработкаОтпуска"(...)главный модуль из релиза ЗИК вышедшего после января 2008 года.

Алексей
читатель
офлайн
Дата регистрации: 25.01.2008
Сообщений: 61
Пост №7
 
03.12.2008 16:33

"релиз 285, последний<br>//******************************************************************************<br>// глСуммаСреднегоЗаработка(Сотрудник,НачалоСобытия,ТаблицаДанныхОСреднем) <br>//<br>// Параметры:<br>// СписокПараметров - список значений содержащий данные необходимые для расчета суммы среднего заработка<br>//<br>// Возвращаемое значение:<br>// Число - размер заработка<br>//<br>// Описание:<br>//<br>Функция глСуммаСреднегоЗаработка(Сотрудник,НачалоСобытия,ТаблицаДанныхОСреднемПарам,РасчетныйПериод) Экспорт<br> <br> Перем ТаблицаДанныхОСреднем;                                     <br> <br> ТаблицаДанныхОСреднемПарам.Выгрузить(ТаблицаДанныхОСреднем);<br><br> // определим под какой из порядков попала оплата:<br> ПорядокРасчетаСреднегоЗаработка = глПолучитьПорядокРасчетаСреднегоЗаработка(НачалоСобытия);<br> <br> СуммаСреднегоЗаработка = 0;<br> Если ТаблицаДанныхОСреднем.КоличествоСтрок() > 0 Тогда<br> СписокМесяцев = СоздатьОбъект("СписокЗначений");<br> ВсегоРазмерЗаработка = 0;<br> ВсегоДнейОтработано = 0;<br> ВсегоФактОтработано = 0;<br> РазмерГодовойПремии = 0;<br> РазмерПрочихПремий = 0;<br> РазмерГодовойПремииПропорцион = 0;<br> РазмерПрочихПремийПропорцион = 0;<br> ТаблицаДанныхОСреднем.Свернуть("ВидСтроки,Месяц","РазмерРаспределения,ДнейОтработано,ОтработаноФактически");<br> ТаблицаДанныхОСреднем.ВыбратьСтроки();<br> Пока ТаблицаДанныхОСреднем.ПолучитьСтроку() = 1 Цикл<br> ВидСтроки = ТаблицаДанныхОСреднем.ВидСтроки;<br> Если (ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.Заработок) или (ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.НадбавкаЗаКвалификационныйРазряд)<br> или (ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ЗаработокНеИндексируемый) Тогда<br> ВсегоРазмерЗаработка = ВсегоРазмерЗаработка + ТаблицаДанныхОСреднем.РазмерРаспределения;<br> Если ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.Заработок Тогда<br> ВсегоДнейОтработано = ВсегоДнейОтработано + ТаблицаДанныхОСреднем.ДнейОтработано;<br> ВсегоФактОтработано = ВсегоФактОтработано + ТаблицаДанныхОСреднем.ОтработаноФактически;<br> ДатаМесяца = глДатаПоСтроке(ТаблицаДанныхОСреднем.Месяц);<br> Если СписокМесяцев.НайтиЗначение(ДатаМесяца) = 0 Тогда<br> СписокМесяцев.ДобавитьЗначение(ДатаМесяца);<br> КонецЕсли;<br> КонецЕсли;<br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияГодовая Тогда // начислено по итогам работы за 12 месяцев<br> РазмерГодовойПремии = РазмерГодовойПремии + ТаблицаДанныхОСреднем.РазмерРаспределения<br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияЕдиновременная Тогда // премии по итогам работы за несколько месяцев<br> КоличествоМесяцевПремии = СокрЛП(СтрЗаменить(НРег(ТаблицаДанныхОСреднем.Месяц),"за",""""));<br> КоличествоМесяцевПремии = Макс(Число(КоличествоМесяцевПремии),1);<br> РазмерПрочихПремий = РазмерПрочихПремий + ?(КоличествоМесяцевПремии > РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения / КоличествоМесяцевПремии * РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения)<br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияГодоваяПропорциональная Тогда<br> РазмерГодовойПремииПропорцион = РазмерГодовойПремииПропорцион + ТаблицаДанныхОСреднем.РазмерРаспределения <br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияЕдиновременнаяПропорциональная Тогда // премии по итогам работы за несколько месяцев<br> КоличествоМесяцевПремии = СокрЛП(СтрЗаменить(НРег(ТаблицаДанныхОСреднем.Месяц),"за",""""));<br> КоличествоМесяцевПремии = Макс(Число(КоличествоМесяцевПремии),1);<br> РазмерПрочихПремийПропорцион = РазмерПрочихПремийПропорцион + ?(КоличествоМесяцевПремии > РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения / КоличествоМесяцевПремии * РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения)<br> КонецЕсли;<br> КонецЦикла;<br> <br> Если ВсегоДнейОтработано > 0 тогда<br> МесяцевРасчетногоПериода = СписокМесяцев.РазмерСписка();<br> Режим = ?(глГрафикСуммированногоУчета(Сотрудник,НачалоСобытия) = 0,"Дней","Часов");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Итоговые данные о заработке:", 0, 1);<br> глСообщениеТрассировки(глСообщенияТрассировки, "в расчетный период включено " + МесяцевРасчетногоПериода + " " + глФормаМножественногоЧисла("месяц","месяца","месяцев",МесяцевРасчетногоПериода), 0, 1);<br> глСообщениеТрассировки(глСообщенияТрассировки, "за расчетный период отработано по графику " + ВсегоДнейОтработано + " " + НРег(Режим), 0, 0);<br> глСообщениеТрассировки(глСообщенияТрассировки, "за расчетный период отработано фактически " + ВсегоФактОтработано + " " + НРег(Режим), 0, 0);<br> глСообщениеТрассировки(глСообщенияТрассировки, "за расчетный период отработано " + ВсегоДнейОтработано + " " + НРег(Режим), 0, 0);<br> глСообщениеТрассировки(глСообщенияТрассировки, "основной заработок составил _П01", 0, 0, ВсегоРазмерЗаработка, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "премии по итогам года составили _П01", 0, 0, РазмерГодовойПремии , "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "премии пропорциональные по итогам года составили _П01", 0, 0, РазмерГодовойПремииПропорцион, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "сумма месячных частей прочих премий составила _П01", 0, 0, РазмерПрочихПремий , "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "сумма месячных частей прочих пропорциональных премий составила _П01", 0,-1, РазмерПрочихПремийПропорцион, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Норма отработанного времени (" + НРег(Режим) + ") составила:", 0, 0);<br> Если РазмерПрочихПремий + РазмерГодовойПремии + РазмерГодовойПремииПропорцион + РазмерПрочихПремийПропорцион = 0 Тогда<br> ПриведеннаяСуммаПремий = 0<br> Иначе<br> ВсегоНормаДней = 0;<br> СписокМесяцев.Сортировать();<br> Для Сч = 1 По МесяцевРасчетногоПериода Цикл<br> ДатаМесяца = СписокМесяцев.ПолучитьЗначение(Сч);<br> НормаДнейЧасов = глНормаДнейЧасовЗаПериод(Сотрудник,НачМесяца(ДатаМесяца),КонМесяца(ДатаМесяца),Режим);<br> ВсегоНормаДней = ВсегоНормаДней + НормаДнейЧасов; <br> глСообщениеТрассировки(глСообщенияТрассировки, "за _П01: "+НормаДнейЧасов, 0, ?(Сч = 1,1,?(Сч = МесяцевРасчетногоПериода,-1,0)), ДатаМесяца, "ДММММГГГГ");<br> КонецЦикла;<br> Если МесяцевРасчетногоПериода = 1 Тогда<br> глСообщениеТрассировки(глСообщенияТрассировки, """", 0, -1);<br> КонецЕсли;<br> Если ВсегоНормаДней = 0 Тогда<br> Если глРежимТрассировки = 1 Тогда<br> глСообщениеТрассировки(глСообщенияТрассировки, "Заполните рабочий календарь сотрудника за месяцы, предшествующие событию!", 1, 1);<br> Иначе<br> глДобавитьСообщение(глОбработчикСообщений, "Заполните рабочий календарь сотрудника за месяцы, предшествующие событию!", Сотрудник, , );<br> КонецЕсли;<br> ПриведеннаяСуммаПремий = 0;<br> Иначе<br> ДоляОтработанногоВремени = Мин(ВсегоДнейОтработано / ВсегоНормаДней,1);<br> // если старый порядок, то пропорциональные премии все равно приводим к отработанному времени<br> ПриведеннаяСуммаПремий = ДоляОтработанногоВремени * (РазмерПрочихПремий + ?(ПорядокРасчетаСреднегоЗаработка > 0,0,РазмерПрочихПремийПропорцион) <br> + РасчетныйПериод * (РазмерГодовойПремии + ?(ПорядокРасчетаСреднегоЗаработка > 0,0,РазмерГодовойПремииПропорцион)) / 12) ;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Доля отработанного времени за расчетный период составила: _П01", 0, 0, ДоляОтработанногоВремени, "Ч25.20");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма премий, приведенных к отработанному времени составила: _П01", 0, 0, ПриведеннаяСуммаПремий, "Ч15.2");<br> КонецЕсли;<br> Если ПорядокРасчетаСреднегоЗаработка > 0 Тогда // добавим пропорциональные премии как есть (у них уже учтены отработанные дни)<br> ПропорцПремии = РазмерПрочихПремийПропорцион + РасчетныйПериод * РазмерГодовойПремииПропорцион / 12 ;<br> ПриведеннаяСуммаПремий = ПриведеннаяСуммаПремий + ПропорцПремии;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма учитываемых за расчетный период пропорциональных премий составила: _П01", 0, 0, ПропорцПремии, "Ч15.2");<br> КонецЕсли;<br> КонецЕсли;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Общая сумма учитываемых за расчетный период премий составила: _П01", 0, -1, ПриведеннаяСуммаПремий, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Делимое для получения среднедневного заработка: _П01", 0, 0, ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий, "Ч15.2");<br> Если (ВсегоФактОтработано > 0) и (ПорядокРасчетаСреднегоЗаработка > 0) Тогда<br> СуммаСреднегоЗаработка = (ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий) / ВсегоФактОтработано;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма заработка приводится к фактически отработанным дням(часам): _П01", 0, 0, ВсегоФактОтработано, "Ч15.2");<br> ИначеЕсли ВсегоДнейОтработано > 0 тогда<br> СуммаСреднегоЗаработка = (ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий) / ВсегоДнейОтработано; <br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма заработка приводится к количеству дней(часов) по графику: _П01", 0, 0, ВсегоДнейОтработано, "Ч15.2");<br> Иначе<br> СуммаСреднегоЗаработка = 0;<br> КонецЕсли;                        <br> Иначе<br> глСообщениеТрассировки(глСообщенияТрассировки, "За расчетный период не отработано ни одного дня!", 0, 0);<br> КонецЕсли;<br> КонецЕсли;<br> <br> Возврат СуммаСреднегоЗаработка;<br>КонецФункции // глСуммаСреднегоЗаработка<br><br>//******************************************************************************<br>// глСуммаСреднегоЗаработкаОтпуска(Сотрудник,НачалоСобытия,ТипРасчетаОтпуска,ТипРасчетаДополнительногоОтпуска,ТаблицаДанныхОСреднем) <br>//<br>// Параметры:<br>// <br>//<br>// Возвращаемое значение:<br>// Список значений содержащий суммы среднего заработка (их будет две в случае дополнительного отпуска)<br>//<br>// Описание:<br>//<br>Функция глСуммаСреднегоЗаработкаОтпуска(Сотрудник,НачалоСобытия,ТипРасчетаОтпуска,ТипРасчетаДополнительногоОтпуска,ТаблицаДанныхОСреднемПарам,РасчетныйПериод,ИспользоватьСреднеЧасовойЗаработок=0) Экспорт<br> <br> Перем ТаблицаДанныхОСреднем;<br><br> ТаблицаДанныхОСреднемПарам.Выгрузить(ТаблицаДанныхОСреднем);<br> <br> // определим под какой из порядков попал отпуск:<br> ПорядокРасчетаСреднегоЗаработка = глПолучитьПорядокРасчетаСреднегоЗаработка(НачалоСобытия);<br> <br> СуммаСреднегоЗаработка = 0;<br> СуммаСреднегоЗаработкаДополнительного = 0;<br> Если ТаблицаДанныхОСреднем.КоличествоСтрок() > 0 Тогда<br> СписокМесяцев = СоздатьОбъект("СписокЗначений");<br> ВсегоРазмерЗаработка = 0;<br> ВсегоДнейОтработано = 0;<br> ВсегоФактОтработано = 0;<br> ВсегоДнейОтпуска = 0;<br> ВсегоДнейДополнительного = 0;<br> ВсегоДнейПоШестидневке = 0;<br> ВсегоКалендарныхДней = 0;<br> РазмерГодовойПремии = 0;<br> РазмерПрочихПремий = 0;<br> РазмерГодовойПремииПропорцион = 0;<br> РазмерПрочихПремийПропорцион = 0;<br> ТаблицаДанныхОСреднем.Свернуть("ВидСтроки,Месяц","РазмерРаспределения,ДнейОтработано,ОтработаноФактически,ДнейОтработаноПоШестидневке,ДнейОтработаноКалендарных");<br> ТаблицаДанныхОСреднем.ВыбратьСтроки();<br> Пока ТаблицаДанныхОСреднем.ПолучитьСтроку() = 1 Цикл<br> ВидСтроки = ТаблицаДанныхОСреднем.ВидСтроки;<br> Если (ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.Заработок) или (ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.НадбавкаЗаКвалификационныйРазряд)<br> или (ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ЗаработокНеИндексируемый) Тогда<br> ВсегоРазмерЗаработка = ВсегоРазмерЗаработка + ТаблицаДанныхОСреднем.РазмерРаспределения;<br> Если ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.Заработок Тогда<br> ВсегоДнейОтработано = ВсегоДнейОтработано + ТаблицаДанныхОСреднем.ДнейОтработано;<br> ВсегоФактОтработано = ВсегоФактОтработано + ТаблицаДанныхОСреднем.ОтработаноФактически;<br> ВсегоДнейПоШестидневке = ВсегоДнейПоШестидневке + ТаблицаДанныхОСреднем.ДнейОтработаноПоШестидневке;<br> ВсегоКалендарныхДней = ВсегоКалендарныхДней + ТаблицаДанныхОСреднем.ДнейОтработаноКалендарных;<br> ВсегоДнейОтпуска = ВсегоДнейОтпуска + ?(ТипРасчетаОтпуска = Перечисление.ТипРасчетаОтпуска.ПоШестидневке,ТаблицаДанныхОСреднем.ДнейОтработаноПоШестидневке,ТаблицаДанныхОСреднем.ДнейОтработаноКалендарных);<br> ВсегоДнейДополнительного = ВсегоДнейДополнительного + ?(ТипРасчетаДополнительногоОтпуска = Перечисление.ТипРасчетаОтпуска.ПоШестидневке,ТаблицаДанныхОСреднем.ДнейОтработаноПоШестидневке,ТаблицаДанныхОСреднем.ДнейОтработаноКалендарных);<br> ДатаМесяца = глДатаПоСтроке(ТаблицаДанныхОСреднем.Месяц);<br> Если СписокМесяцев.НайтиЗначение(ДатаМесяца) = 0 Тогда<br> СписокМесяцев.ДобавитьЗначение(ДатаМесяца);<br> КонецЕсли;<br> КонецЕсли;<br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияГодовая Тогда // начислено по итогам работы за 12 месяцев<br> РазмерГодовойПремии = РазмерГодовойПремии + ТаблицаДанныхОСреднем.РазмерРаспределения <br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияЕдиновременная Тогда // премии по итогам работы за несколько месяцев<br> КоличествоМесяцевПремии = СокрЛП(СтрЗаменить(НРег(ТаблицаДанныхОСреднем.Месяц),"за",""""));<br> КоличествоМесяцевПремии = Макс(Число(КоличествоМесяцевПремии),1);<br> РазмерПрочихПремий = РазмерПрочихПремий + ?(КоличествоМесяцевПремии > РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения / КоличествоМесяцевПремии * РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения)<br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияГодоваяПропорциональная Тогда<br> РазмерГодовойПремииПропорцион = РазмерГодовойПремииПропорцион + ТаблицаДанныхОСреднем.РазмерРаспределения <br> ИначеЕсли ВидСтроки = Перечисление.ВидСтрокиСреднегоЗаработка.ПремияЕдиновременнаяПропорциональная Тогда // премии по итогам работы за несколько месяцев<br> КоличествоМесяцевПремии = СокрЛП(СтрЗаменить(НРег(ТаблицаДанныхОСреднем.Месяц),"за",""""));<br> КоличествоМесяцевПремии = Макс(Число(КоличествоМесяцевПремии),1);<br> РазмерПрочихПремийПропорцион = РазмерПрочихПремийПропорцион + ?(КоличествоМесяцевПремии > РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения / КоличествоМесяцевПремии * РасчетныйПериод,ТаблицаДанныхОСреднем.РазмерРаспределения)<br> КонецЕсли;<br> КонецЦикла;<br> <br> Если (ВсегоДнейОтработано > 0) или (ВсегоДнейОтпуска > 0) или (ВсегоДнейДополнительного > 0) тогда<br> МесяцевРасчетногоПериода = СписокМесяцев.РазмерСписка();<br> СуммированноеВремя = глГрафикСуммированногоУчета(Сотрудник,НачалоСобытия);<br> СуммированноеВремя = ?( ИспользоватьСреднеЧасовойЗаработок =1,СуммированноеВремя,0);<br> Режим = ?(СуммированноеВремя = 0,"Дней","Часов");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Итоговые данные о заработке:", 0, 1);<br> глСообщениеТрассировки(глСообщенияТрассировки, "в расчетный период включено " + МесяцевРасчетногоПериода + " " + глФормаМножественногоЧисла("месяц","месяца","месяцев",МесяцевРасчетногоПериода), 0, 1);<br> глСообщениеТрассировки(глСообщенияТрассировки, "за расчетный период отработано по графику " + ВсегоДнейОтработано + " " + НРег(Режим), 0, 0);<br> глСообщениеТрассировки(глСообщенияТрассировки, "за расчетный период отработано фактически " + ВсегоФактОтработано + " " + НРег(Режим), 0, 0);<br> Если СуммированноеВремя = 0 Тогда<br> глСообщениеТрассировки(глСообщенияТрассировки, "по календарю шестидневной недели на отработанное время приходится " + ВсегоДнейПоШестидневке + " " + НРег(Режим), 0, 0);<br> глСообщениеТрассировки(глСообщенияТрассировки, "календарных "+НРег(Режим)+" на отработанное время приходится " + ВсегоКалендарныхДней, 0, 0);<br> КонецЕсли;<br> глСообщениеТрассировки(глСообщенияТрассировки, "основной заработок составил _П01", 0, 0, ВсегоРазмерЗаработка, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "премии по итогам года составили _П01", 0, 0, РазмерГодовойПремии , "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "премии пропорциональные по итогам года составили _П01", 0, 0, РазмерГодовойПремииПропорцион, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "сумма месячных частей прочих премий составила _П01", 0, 0, РазмерПрочихПремий , "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "сумма месячных частей прочих пропорциональных премий составила _П01", 0, -1, РазмерПрочихПремийПропорцион, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Норма отработанного времени (" + НРег(Режим) + ") составила:", 0, 0);<br> <br> Если РазмерПрочихПремий + РазмерГодовойПремии + РазмерГодовойПремииПропорцион + РазмерПрочихПремийПропорцион = 0 Тогда<br> ПриведеннаяСуммаПремий = 0<br> Иначе<br> ВсегоНормаДней = 0;<br> Для Сч = 1 По МесяцевРасчетногоПериода Цикл<br> ДатаМесяца = СписокМесяцев.ПолучитьЗначение(Сч);<br> НормаДнейЧасов = глНормаДнейЧасовЗаПериод(Сотрудник,НачМесяца(ДатаМесяца),КонМесяца(ДатаМесяца),Режим);<br> ВсегоНормаДней = ВсегоНормаДней + НормаДнейЧасов; <br> глСообщениеТрассировки(глСообщенияТрассировки, "за _П01: "+НормаДнейЧасов, 0, ?(Сч = 1,1,?(Сч = МесяцевРасчетногоПериода,-1,0)), ДатаМесяца, "ДММММГГГГ");<br> КонецЦикла;<br> Если МесяцевРасчетногоПериода = 1 Тогда<br> глСообщениеТрассировки(глСообщенияТрассировки, """", 0, -1);<br> КонецЕсли;<br> Если ВсегоНормаДней = 0 Тогда<br> Если глРежимТрассировки = 1 Тогда<br> глСообщениеТрассировки(глСообщенияТрассировки, "Заполните рабочий календарь сотрудника за месяцы, предшествующие отпуску!", 1, 1);<br> Иначе<br> глДобавитьСообщение(глОбработчикСообщений, "Заполните рабочий календарь сотрудника за месяцы, предшествующие отпуску!", Сотрудник, , );<br> КонецЕсли;<br> ПриведеннаяСуммаПремий = 0;<br> Иначе                                           <br> ДоляОтработанногоВремени = Мин(ВсегоДнейОтработано / ВсегоНормаДней,1); <br> // если старый порядок, то пропорциональные премии все равно приводим к отработанному времени<br> ПриведеннаяСуммаПремий = ДоляОтработанногоВремени * (РазмерПрочихПремий+?(ПорядокРасчетаСреднегоЗаработка > 0,0,РазмерПрочихПремийПропорцион) + <br> РасчетныйПериод * (РазмерГодовойПремии + ?(ПорядокРасчетаСреднегоЗаработка > 0,0,РазмерГодовойПремииПропорцион))/ 12) ;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Доля отработанного времени за расчетный период составила: _П01", 0, 0, ДоляОтработанногоВремени, "Ч25.20");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма премий, приведенных к отработанному времени составила: _П01", 0, 0, ПриведеннаяСуммаПремий, "Ч15.2");<br> КонецЕсли;<br> Если ПорядокРасчетаСреднегоЗаработка > 0 Тогда // добавим пропорциональные премии как есть (у них уже учтены отработанные дни)<br> ПропорцПремии = РазмерПрочихПремийПропорцион + РасчетныйПериод * РазмерГодовойПремииПропорцион / 12 ;<br> ПриведеннаяСуммаПремий = ПриведеннаяСуммаПремий + ПропорцПремии;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма учитываемых за расчетный период пропорциональных премий составила: _П01", 0, 0, ПропорцПремии, "Ч15.2");<br> КонецЕсли;<br> КонецЕсли;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Общая сумма учитываемых за расчетный период премий составила: _П01", 0, -1, ПриведеннаяСуммаПремий, "Ч15.2");<br> глСообщениеТрассировки(глСообщенияТрассировки, "Делимое для получения среднедневного заработка: _П01", 0, 0, ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий, "Ч15.2");<br> <br> Если СуммированноеВремя = 0 Тогда <br> Если ВсегоДнейОтпуска > 0 тогда<br> СуммаСреднегоЗаработка = (ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий) / ВсегоДнейОтпуска;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма заработка приводится к количеству дней: _П01", 0, 0, ВсегоДнейОтпуска, "Ч15.2");<br> Иначе<br> СуммаСреднегоЗаработка = 0;<br> КонецЕсли;<br> Если ВсегоДнейДополнительного > 0 тогда<br> СуммаСреднегоЗаработкаДополнительного = (ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий) / ВсегоДнейДополнительного;<br> КонецЕсли;                        <br> Иначе<br> Если (ВсегоФактОтработано > 0) и (ПорядокРасчетаСреднегоЗаработка > 0) Тогда<br> СуммаСреднегоЗаработка = (ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий) / ВсегоФактОтработано;<br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма заработка приводится к фактически отработанным дням: _П01", 0, 0, ВсегоФактОтработано, "Ч15.2");<br> ИначеЕсли ВсегоДнейОтработано > 0 тогда<br> СуммаСреднегоЗаработка = (ВсегоРазмерЗаработка + ПриведеннаяСуммаПремий) / ВсегоДнейОтработано; <br> глСообщениеТрассировки(глСообщенияТрассировки, "Сумма заработка приводится к количеству дней по графику: _П01", 0, 0, ВсегоДнейОтработано, "Ч15.2");<br> Иначе<br> СуммаСреднегоЗаработка = 0;<br> КонецЕсли;                        <br> СуммаСреднегоЗаработкаДополнительного = СуммаСреднегоЗаработка;<br> КонецЕсли;<br> <br> Иначе<br> глСообщениеТрассировки(глСообщенияТрассировки, "За расчетный период не отработано ни одного дня!", 0, 0);<br> КонецЕсли;<br> КонецЕсли;<br> <br> СписокСумм = СоздатьОбъект("СписокЗначений");<br> СписокСумм.ДобавитьЗначение(СуммаСреднегоЗаработка, "СуммаСреднегоЗаработка");<br> СписокСумм.ДобавитьЗначение(СуммаСреднегоЗаработкаДополнительного, "СуммаСреднегоЗаработкаДополнительного");<br> Возврат СписокСумм;<br>КонецФункции // глСуммаСреднегоЗаработкаОтпуска<br><br>//******************************************************************************<br>...<br>//******************************************************************************<br><br>//******************************************************************************<br>// ПолучитьКоличествоДнейОтпускаПосле060108()<br>//<br>// Параметры:                                                <br>//<br>// Возвращаемое значение:<br>// Количество дней отпуска<br>//<br>// Описание:<br>// В функцию всегда передаются даты одного месяца<br>// МассивДней[] содержит субботы и воскресенья, помеченные 1 как входящие в отрезок, чтобы их не учитывать как пропуски<br>Функция ПолучитьКоличествоДнейОтпускаПосле060108(МассивДней[], ДатаНачала, ДатаОкончания, КалендарьОтпуска, ГрафикРаботы,НачалоРП)<br> <br> День = 0;<br> ДнейДляОтп = 0;<br> КалендарныхДнейОтработано = 0;<br> КалендарныхДнейВМесяце = ДатаОкончания - ДатаНачала +1;<br> РасчетПоШестидневке = ?(КалендарьОтпуска = Календари.Шестидневка,1,0);<br><br> ИндНачала = НомерДняПериода(НачалоРП,ДатаНачала);<br> ИндОкончания = НомерДняПериода(НачалоРП,ДатаОкончания);<br> инд = ИндНачала - 1;<br> Пока инд < ИндОкончания Цикл<br> инд = инд + 1;<br> День = МассивДней[инд]; <br> Если День = "Х" тогда<br> Продолжить;<br> КонецЕсли;<br> <br> Если РасчетПоШестидневке = 0 Тогда<br> //считаем календариные дни приходящиеся на период работы, затем посчитаем дни отпуска, <br> КалендарныхДнейОтработано = КалендарныхДнейОтработано + День;<br> Иначе                         <br> //для шестидневки надо получить дни по календарю, это и будут дни отпуска<br> ДатаДня = ДатаНачала + (инд - ИндНачала); <br> ДатаНачалаОтрезка = ДатаДня;<br> ЕстьОтрезок = 0;<br> Пока (День <> 0) и (инд + 1 <= ИндОкончания) Цикл<br> ЕстьОтрезок = 1;<br> инд = инд + 1;<br> День = МассивДней[инд];<br> ДатаДня = ДатаНачала + (инд - ИндНачала);<br> КонецЦикла; <br> Если (День <> 0) и (инд + 1 > ИндОкончания) Тогда<br> ЕстьОтрезок = 1;<br> КонецЕсли;<br> ДатаОкончанияОтрезка = ?(День <> 0, ДатаДня, ДатаДня-1);<br> Если ЕстьОтрезок = 1 тогда<br> НадоПересчитать = ?((ДатаНачалаОтрезка = ДатаНачала) и (ДатаОкончанияОтрезка = ДатаОкончания),0,1);<br> Если НадоПересчитать = 1 тогда<br> ДнейДляОтп = ДнейДляОтп + КалендарьОтпуска.Дней(ДатаНачалаОтрезка, ДатаОкончанияОтрезка);<br> Иначе<br> ДнейДляОтп = КалендарьОтпуска.Дней(ДатаНачалаОтрезка, ДатаОкончанияОтрезка);<br> КонецЕсли;       <br> КонецЕсли;<br> КонецЕсли;<br> <br> КонецЦикла;<br> <br> Если РасчетПоШестидневке = 0 Тогда<br> //для расчета по календарным дням<br> Если КалендарныхДнейОтработано = КалендарныхДнейВМесяце Тогда<br> ДнейДляОтп = 29.4;<br> ИначеЕсли КалендарныхДнейОтработано >0 Тогда<br> ДнейДляОтп = Окр(29.4 / КалендарныхДнейВМесяце * КалендарныхДнейОтработано,2);<br> КонецЕсли; <br> КонецЕсли; <br> <br> Возврат ДнейДляОтп;<br> <br>КонецФункции // ПолучитьКоличествоДнейОтпускаПосле060108<br><br>//******************************************************************************"

андрей5
читатель
офлайн
Дата регистрации: 03.12.2008
Сообщений: 10
Пост №8
 
03.12.2008 16:51

большое спасибо, надеюсь получится

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Учет, налогообложение, автоматизация
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация