Компенсация различных видов отпусков в 1С:ЗУП 2.5
Создание данной статьи было навеяно этой темой на форуме:
http://forum.infostart.ru/forum34/topic57791/message1078858/#message1078858
Начнём сначала, немного теории:
ТК РФ Статья 126. Замена ежегодного оплачиваемого отпуска денежной компенсацией.
"Часть ежегодного оплачиваемого отпуска, превышающая 28 календарных дней, по письменному заявлению работника может быть заменена денежной компенсацией.
При суммировании ежегодных оплачиваемых отпусков или перенесении ежегодного оплачиваемого отпуска на следующий рабочий год денежной компенсацией могут быть заменены часть каждого ежегодного оплачиваемого отпуска, превышающая 28 календарных дней, или любое количество дней из этой части.
Не допускается замена денежной компенсацией ежегодного основного оплачиваемого отпуска и ежегодных дополнительных оплачиваемых отпусков беременным женщинам и работникам в возрасте до восемнадцати лет, а также ежегодного дополнительного оплачиваемого отпуска работникам, занятым на работах с вредными и (или) опасными условиями труда, за работу в соответствующих условиях (за исключением выплаты денежной компенсации за неиспользованный отпуск при увольнении, а также случаев, установленных настоящим Кодексом).
(в ред. Федерального закона от 28.12.2013 N 421-ФЗ)"
Как бы вроде все понятно с этим, - есть основной отпуск 28 к.д. и могут всякие-разные дополнительные. Компенсировать из них можно всё, что не запрещено законом, однако, в программе предусмотрен только один предопределённый вид расчёта «Компенсация отпуска по календарным дням». Механизм его применения в документе «Начисление отпуска» витиеват и запутан, поэтому если вы решили «допилить» Ваш ЗУП под использование компенсации разных видов отпусков именно через создание дополнительных видов расчёта – не рекомендовал бы этого делать. Уж слишком много придётся корректировать по модулям, поскольку во многих местах имеются прямые ссылки на предопределённый вид расчёта, и соответственно, что бы реализовать доп. виды расчёта придётся большое число объектов снимать с поддержки. Как видно на скриншоте - выбрать в документе «Начисление отпуска сотрудникам организации» какой-то вид расчёта для компенсации нельзя (скриншот из конфигуратора):
Как же тогда сделать компенсацию отпуска, например за ненормированность? (работу в РКС/ классность/ невероятные условия работы/ лежание на диване/ красивые глаза {нужное подчеркнуть}) Да-да, отпусков у Вас в организации может быть масса и по каждому из них можно считать резерв и т.д. Так вот, для решения этого вопроса есть, по сути, два пути – простой и сложный.
Простой способ
Может привести к ошибкам, если организация большая, и работает более одного расчётчика, (ну и человеческий фактор опять же) вот в чем он заключается:
В предопределённом виде расчёта «Компенсация отпуска по календарным дням» на закладке «Использование» устанавливается вид отпуска, который будет этим видом расчёта компенсироваться.(см. рис 2).
Т.е. Суть первого способа простыми словами, с примерами:
В организации существует 3 вида дополнительного отпуска:
- За работу в Районах Крайнего Севера 24 кд.
- За ненормированность 3 к.д.
- За вредность 7 к.д.
- (не забываем, что есть ещё основной - 28 к.д.)
Согласно ТК РФ можно компенсировать 1 и 2.
Действия:
- Открываем Вид расчёта «Компенсация отпуска по календарным дням», меняем тип компенсируемого отпуска на №1(РКС). Записываем вид расчёта.
- Создаём документ «Начисление отпуска сотрудникам организации» рассчитываем, проводим.
- Проверяем, например, в справке по отпуску:
Можно видеть, что компенсирован именно тот отпуск, который мы установили в виде расчёта «Компенсация отпуска по календарным дням». Для другого вида отпуска соответственно снова меняем вид расчёта и создаём дополнительный документ «Начисление отпуска сотрудникам организации», рассчитываем, проводим.
ОЦЕНКА
ПЛЮСЫ способа: Не требуется вмешательства в конфигурацию
МИНУСЫ способа:
- Основная опасность этого метода в том, что пользователь может забыть поменять в виде расчёта вид компенсируемого отпуска и тогда все компенсации будут списываться туда, куда поставили в последний раз…
- Отсутствие юзабилити. Т.е. даже если пользователь не забудет – каждый раз лазить в журнал видов расчёта, менять тип отпуска, записывать и т.д. понятно, что неудобно. Учитывая, что вид расчёта «компенсация» из документа, напрямую, никак не вызывается.(т.е. нет там кнопочки типа «Лупа»)
- Необходимость следить, что бы другой расчётчик в этот момент не переправил тип отпуска к компенсации в виде расчёта.
Сложный способ
Этот способ сопряжён с определённым «допиливанием» конфигурации. Если для вас изменение конфигурации поставщика неприемлемо – пользуйтесь простым способом.
Ну а для тех, кто не боится залезть в конфу - кратко опишу, как я решил этот вопрос:
Как я указал выше – впиливать компенсации через разные виды расчёта весьма сложно и приведет к тому что обновляться после этого будет очень и очень тяжело. Поэтому решаем вопрос путем автоматизации описанного Простого способа.
- Нужно разграничить доступ к исправлению вида расчёта пользователями, что бы исключить одновременное исправление несколькими пользователями
- Предоставить пользователю возможность выбирать – какой отпуск компенсировать.
Для реализации п.1 я создал в конфигурации регистр сведений который обозвал «ЗаблокированныеОбъекты» в итоге получилось так, что объект туда записывается только один – тот самый вид расчёта «компенсация отпуска по календарным дням» - структура получилась такая:
Измерения:
- «ВидРасчета», тип- «ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций»
Ресурсы:
- «Заблокирован», тип булево
- «АвторБлокировки», тип СправочникСсылка.Пользователи
Непериодический, независимый.
Создан реквизит в котором пользователь указывает какой тип отпуска компенсировать:
Как только выбор произведён (срабатывает обработчик «ПриИзменении») считывается регистр сведений, где хранится информация о том, заблокирован ли объект и кто его заблокировал.
Например:
Вид расчёта свободен. В этом случае в регистр записывается блокировка вида:
ВидРасчетаСсылка |
Расчетчик1 |
Истина |
Блокировка действует до момента закрытия документа расчетчиком1. Таким образом, не важно, что сделал пользователь – просто закрыл документ не сохраняя, или провёл и закрыл - блокировка снимается.
В случае когда расчетчик1 работает с документом, а расчетчик2 пытается провести компенсацию – ему будет выдано сообщение о том что расчетчик1 занял вид расчёта «компенсация…» и необходимо подождать.
В общем-то вот так, не особо хитро, мне удалось решить вопрос компенсации разных видов отпусков в ЗУП 2.5
P.S. Использование подобной схемы позволяет корректно отражать компенсируемые отпуска в справках по отпуску, а так же учитывать в резерве отпусков.
Спасибо за внимание! Вопросы и конструктивная критика приветствуется.