Расчет дополнительного отпуска при увольнении из организации
Документ "УвольнениеИзОрганизации" (регламентированный) учет в ЗУП не позволяет без доработки конфигурации рассчитать остаток дополнительного отпуска.
Типовой механизм учитывает только основной ежегодный отпуск.
- Описание
- Подробнее
Описание
Для того, чтобы остаток дополнительного отпуска рассчитывался, необходимо внести изменения в общий модуль: ОстаткиОтпусков, привожу код с имзменениями:
Функция ОстатокОтпускаСотрудникаНаДату(Сотрудник, ДатаОстатков = ‘00010101’, ЭтоРасчетПриУвольнении = Ложь, ПорядокРасчетаОсновногоОтпуска = Неопределено) Экспорт
Если Не ЗначениеЗаполнено(Сотрудник) Тогда
Возврат 0;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДатаОстатков) Тогда
ДатаОстатков = НачалоДня(ТекущаяДатаСеанса());
КонецЕсли;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ТаблицаДанныхДоп = ОписаниеТаблицыДанных();
Строка = ТаблицаДанныхДоп.Добавить();
Строка.Сотрудник = Сотрудник;
Строка.ДатаОстатков = НачалоДня(ДатаОстатков);
Строка.ЭтоРасчетПриУвольнении = ЭтоРасчетПриУвольнении;
Если ЭтоРасчетПриУвольнении Тогда
Если ПорядокРасчетаОсновногоОтпуска = Перечисления.ПорядокРасчетаОтпуска.ПоШестидневке Тогда
Строка.ОтборПоВидуЕжегодногоОтпуска = ОбщегоНазначенияЗК.ПолучитьЗначениеРеквизита(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпШестидневка, «ВидЕжегодногоОтпуска»);
Иначе
Строка.ОтборПоВидуЕжегодногоОтпуска = ОбщегоНазначенияЗК.ПолучитьЗначениеРеквизита(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду(«00099»), «ВидЕжегодногоОтпуска»);
КонецЕсли;
КонецЕсли;
РезультатДоп = ОстаткиОтпусков(ТаблицаДанныхДоп)[0];
ОстатокДопОтпуска=РезультатДоп.ОстатокНаДату;
//______________________________________________________________________________
ТаблицаДанных = ОписаниеТаблицыДанных();
Строка = ТаблицаДанных.Добавить();
Строка.Сотрудник = Сотрудник;
Строка.ДатаОстатков = НачалоДня(ДатаОстатков);
Строка.ЭтоРасчетПриУвольнении = ЭтоРасчетПриУвольнении;
Если ЭтоРасчетПриУвольнении Тогда
Если ПорядокРасчетаОсновногоОтпуска = Перечисления.ПорядокРасчетаОтпуска.ПоШестидневке Тогда
Строка.ОтборПоВидуЕжегодногоОтпуска = ОбщегоНазначенияЗК.ПолучитьЗначениеРеквизита(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпШестидневка, «ВидЕжегодногоОтпуска»);
Иначе
Строка.ОтборПоВидуЕжегодногоОтпуска = ОбщегоНазначенияЗК.ПолучитьЗначениеРеквизита(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпКалендарныеДни, «ВидЕжегодногоОтпуска»);
КонецЕсли;
КонецЕсли;
Результат = ОстаткиОтпусков(ТаблицаДанных)[0];
ОстаткиВРазрезеРабочихЛетИВидовОтпусков = Новый Массив;
Для Каждого РабочийГод Из Результат.ДанныеРасчета Цикл
Если РабочийГод.ДоступноДляСписанияВЭтомГоду = 0 Тогда
Продолжить;
КонецЕсли;
ОстаткиВРазрезеРабочихЛетИВидовОтпусков.Добавить(Новый Структура(«ВидЕжегодногоОтпуска, ОсталосьДней, РабочийГодС, РабочийГодПо, ПоследнийРабочийГод»,
РабочийГод.ВидЕжегодногоОтпуска, РабочийГод.ДоступноДляСписанияВЭтомГоду, РабочийГод.ДатаНачала, РабочийГод.ДатаОкончания, РабочийГод.ПоследнийРабочийГод));
КонецЦикла;
//++++++++++++++++++++++++++++++++++++++++++Расчитаем Доп отпуск+Основной+++++++++++++++++
Возврат Новый Структура(«ОстатокНаДату, РабочийГодС, РабочийГодПо, Примечание, ОстаткиВРазрезеВидовОтпусков, ОстаткиВРазрезеРабочихЛетИВидовОтпусков»,
Результат.ОстатокНаДату+ОстатокДопОтпуска, Результат.РабочийГодС, Результат.РабочийГодПо, Результат.Примечание, Результат.ОстатокНаДатуПоВидамЕжегодныхОтпусков, ОстаткиВРазрезеРабочихЛетИВидовОтпусков);
//________________________________________________________________________________________________
КонецФункции

