В версии ЗУП 3.1.7.61 был изменен алгоритм расчета остатка отпуска за работу во вредных условиях труда, если этот отпуск предоставляется за фактически отработанное время.
Теперь расчет выполняется по календарным годам, что сильно отличается от расчета основного отпуска. Для кадровой службы, которая привыкла вести основной и дополнительный отпуск по вредности параллельно, это настоящая катастрофа. В итоге после долгих споров был разработан данный вариант перерасчета заработанных прав на отпуск по вредности.
Главной особенностью алгоритма является то, что он не соответствует п. 10 Инструкции, утв. Постановлением Госкомтруда СССР, ВЦСПС от 21.11.1975 N 273/П-20! По сути это возврат к расчету по календарным дням, приходящимся на периоды, отработанные во вредных условиях. В ходе расчета за каждый рабочий день сотрудника начисляется 1/365 часть от дней отпуска, положенного сотрудника в этот период.
Из расчета на первом этапе исключаются виды времени, прерывающие право на отпуск в обычном порядке, в том числе и виды времени, свыше 14 дней:
Функция ВидыВремениПрерывающиеПравоНаОтпуск() Экспорт
ПрерывающиеВидыВремени = Новый Массив;
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.Прогулы);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ПростойПоВинеРаботника);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеявкиПоНевыясненнымПричинам);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ОтпускПоУходуЗаРебенком);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоЗаконодательству);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоРазрешениюРаботодателя);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйДополнительныйОтпуск);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ОтпускНаОбучениеНеоплачиваемый);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоРеквизиту("БуквенныйКод", "ДО1"));
Возврат ПрерывающиеВидыВремени;
КонецФункции
Функция ВидыВремениПрерывающиеПравоНаОтпускСвыше_14_Дней() Экспорт
ПрерывающиеВидыВремени = Новый Массив;
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоЗаконодательству);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоРазрешениюРаботодателя);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоРеквизиту("БуквенныйКод", "ДО1"));
Возврат ПрерывающиеВидыВремени;
КонецФункции
На втором этапе исключаются не рабочие виды времени именно для отпуска по вредности:
Функция ВидыВремениПрерывающиеПравоНаОтпускПоВредности() Экспорт
ПрерывающиеВидыВремени = Новый Массив;
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ВынужденныйПрогул);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ПростойПоВинеРаботодателя);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.Простой);
//ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ОсновнойОтпуск);
//ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ДополнительныйОтпуск);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ОтпускНаОбучение);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ОтпускПоБеременностиИРодам);
//ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени. ??? ); // ОтпускНаСанаторноКурортноеЛечение
//ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени. ??? ); // ОтсутствиеССохранениемОплаты
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ГосударственныеОбязанности);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.Болезнь);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.БолезньБезОплаты);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоРеквизиту("БуквенныйКод", "ДР"));
Возврат ПрерывающиеВидыВремени;
КонецФункции
Функция ВидыВремениПрерывающиеПравоНаОтпускПоВредностиДо_14_Дней() Экспорт
ПрерывающиеВидыВремени = Новый Массив;
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоЗаконодательству);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоРазрешениюРаботодателя);
ПрерывающиеВидыВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоРеквизиту("БуквенныйКод", "ДО1"));
Возврат ПрерывающиеВидыВремени;
КонецФункции
В основном не рабочие дни для вредности составляют дни временной нетрудоспособности и дни без оплаты. На нашем предприятии приняли решение, что если они составляют менее 1 дня отпуска по вредности – они не влияют на расчет отпуска и отпуск предоставляются в полном объеме.
Фиксация заработанных дней отпуска в регистр происходит в те же даты, что и основной отпуск.
После расчета последней контрольной даты за рабочий год, если рабочий год закрылся до текущей даты расчета, происходит округление заработанных дней отпуска.
Также для расчета требуется обязательное наличие документов табеля учета рабочего времени, т.к. данные об отработанных днях берутся из регистра «Данные табельного учета рабочего времени сотрудников».
В целом надо быть готовым к тому, что расчет дней отпуска может сильно отличаться от текущего, и от того, что ждут кадровики.
В качестве компромисса мы добавили в конфигурацию регистр сведений «Корректировка заработанных прав на отпуска», в которые внесли ручные корректировки заработанных дней отпуска предыдущих периодов. Правда для этого пришлось заставить отдел кадров перепроверить всех сотрудников с отпусками по вредности. Рабочие периоды с даты внедрения этого алгоритма мы больше не корректируем.
В расширении этого регистра нет, так как он необязательно может потребоваться. Структура регистра выглядит так:
Обращение к этому регистру в коде закоментировано.
Проведено тестирование в конфигурации Зарплата и управление персоналом, редакция 3.1 (3.1.10.78 - 3.1.13.219)