Компенсация различных видов отпусков в 1С:ЗУП 2.5





Возможность замены денежной компенсацией отпусков, отражение в 1С:ЗУП 2.5 компенсации нескольких видов отпуска. Резерв отпусков.

Компенсация различных видов отпусков в 1С:ЗУП 2.5

Создание данной статьи было навеяно этой темой на форуме:

http://forum.infostart.ru/forum34/topic57791/message1078858/#message1078858

Начнём сначала, немного теории:

ТК РФ Статья 126. Замена ежегодного оплачиваемого отпуска денежной компенсацией.

 «Часть ежегодного оплачиваемого отпуска, превышающая 28 календарных дней, по письменному заявлению работника может быть заменена денежной компенсацией.

При суммировании ежегодных оплачиваемых отпусков или перенесении ежегодного оплачиваемого отпуска на следующий рабочий год денежной компенсацией могут быть заменены часть каждого ежегодного оплачиваемого отпуска, превышающая 28 календарных дней, или любое количество дней из этой части.

Не допускается замена денежной компенсацией ежегодного основного оплачиваемого отпуска и ежегодных дополнительных оплачиваемых отпусков беременным женщинам и работникам в возрасте до восемнадцати лет, а также ежегодного дополнительного оплачиваемого отпуска работникам, занятым на работах с вредными и (или) опасными условиями труда, за работу в соответствующих условиях (за исключением выплаты денежной компенсации за неиспользованный отпуск при увольнении, а также случаев, установленных настоящим Кодексом).

(в ред. Федерального закона от 28.12.2013 N 421-ФЗ)»

Как бы вроде все понятно с этим, — есть основной отпуск 28 к.д. и могут всякие-разные дополнительные. Компенсировать из них можно всё, что не запрещено законом, однако, в программе предусмотрен только один предопределённый вид расчёта «Компенсация отпуска по календарным дням». Механизм его применения в документе «Начисление отпуска» витиеват и запутан, поэтому если вы решили «допилить» Ваш ЗУП под использование компенсации разных видов отпусков именно через создание дополнительных видов расчёта – не рекомендовал бы этого делать. Уж слишком много придётся корректировать по модулям, поскольку во многих местах имеются прямые ссылки на предопределённый вид расчёта, и соответственно, что бы реализовать доп. виды расчёта придётся большое число объектов снимать с поддержки. Как видно на скриншоте — выбрать в документе «Начисление отпуска сотрудникам организации» какой-то вид расчёта для компенсации нельзя (скриншот из конфигуратора):

 рис. 1. 

Как же тогда сделать компенсацию отпуска, например за ненормированность? (работу в РКС/ классность/ невероятные условия работы/ лежание на диване/ красивые глаза {нужное подчеркнуть}) Да-да, отпусков у Вас в организации может быть масса и по каждому из них можно считать резерв и т.д. Так вот, для решения этого вопроса есть, по сути, два пути – простой и сложный.

Простой способ

Может привести к ошибкам, если организация большая, и работает более одного расчётчика, (ну и человеческий фактор опять же) вот в чем он заключается:

 В предопределённом виде расчёта «Компенсация отпуска по календарным дням» на закладке «Использование» устанавливается вид отпуска, который будет этим видом расчёта компенсироваться.(см. рис 2).

рис.2.

Т.е. Суть первого способа простыми словами, с примерами:

В организации существует 3 вида дополнительного отпуска:

  1. За работу в Районах Крайнего Севера 24 кд.
  2. За ненормированность 3 к.д.
  3. За вредность 7 к.д.
  4. (не забываем, что есть ещё основной — 28 к.д.)

Согласно ТК РФ можно компенсировать 1 и 2.

Действия:

  1. Открываем Вид расчёта «Компенсация отпуска по календарным дням», меняем тип компенсируемого отпуска на №1(РКС). Записываем вид расчёта.
  2.  Создаём документ «Начисление отпуска сотрудникам организации»  рассчитываем, проводим.
  3. Проверяем, например, в справке по отпуску:

 рис.3.

Можно видеть, что компенсирован именно тот отпуск, который мы установили в виде расчёта «Компенсация отпуска по календарным дням». Для другого вида отпуска соответственно снова меняем вид расчёта и создаём дополнительный документ «Начисление отпуска сотрудникам организации», рассчитываем, проводим.

ОЦЕНКА

ПЛЮСЫ способа: Не требуется вмешательства в конфигурацию

МИНУСЫ способа:

  1. Основная опасность этого метода в том, что пользователь может забыть поменять в виде расчёта вид компенсируемого отпуска и тогда все компенсации будут списываться туда, куда поставили в последний раз…
  2. Отсутствие юзабилити. Т.е. даже если пользователь не забудет – каждый раз лазить в журнал видов расчёта, менять тип отпуска, записывать и т.д. понятно, что неудобно. Учитывая, что вид расчёта «компенсация» из документа, напрямую, никак не вызывается.(т.е. нет там кнопочки типа «Лупа»)
  3. Необходимость следить, что бы другой расчётчик в этот момент не переправил тип отпуска к компенсации в виде расчёта.

Сложный способ

Этот способ сопряжён с определённым «допиливанием» конфигурации. Если для вас изменение конфигурации поставщика неприемлемо – пользуйтесь простым способом.

Ну а для тех, кто не боится залезть в конфу — кратко опишу, как я решил этот вопрос:

Как я указал выше – впиливать компенсации через разные виды расчёта весьма сложно и приведет к тому что обновляться после этого будет очень и очень тяжело. Поэтому решаем вопрос путем автоматизации описанного Простого способа.

  1. Нужно разграничить доступ к исправлению вида расчёта пользователями, что бы исключить одновременное исправление несколькими пользователями
  2. Предоставить пользователю возможность выбирать – какой отпуск компенсировать.

Для реализации п.1 я создал в конфигурации регистр сведений который обозвал «ЗаблокированныеОбъекты» в итоге получилось так, что объект туда записывается только один – тот самый вид расчёта «компенсация отпуска по календарным дням» — структура получилась такая:

Измерения:

  • «ВидРасчета», тип- «ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций»

Ресурсы:

  • «Заблокирован», тип булево
  • «АвторБлокировки», тип СправочникСсылка.Пользователи

Непериодический, независимый.

Создан реквизит в котором пользователь указывает какой тип отпуска компенсировать:

рис. 4.

Как только выбор произведён (срабатывает обработчик «ПриИзменении») считывается регистр сведений, где хранится информация о том, заблокирован ли объект и кто его заблокировал.

Например:

Вид расчёта свободен. В этом случае в регистр записывается блокировка вида:

ВидРасчетаСсылка

Расчетчик1

Истина

Блокировка действует до момента закрытия документа расчетчиком1. Таким образом, не важно, что сделал пользователь – просто закрыл документ не сохраняя, или провёл и закрыл — блокировка снимается.

В случае когда расчетчик1 работает с документом, а расчетчик2 пытается провести компенсацию – ему будет выдано сообщение о том что расчетчик1 занял вид расчёта «компенсация…» и необходимо подождать.

В общем-то вот так, не особо хитро, мне удалось решить вопрос компенсации разных видов отпусков в ЗУП 2.5

 P.S. Использование подобной схемы позволяет корректно отражать компенсируемые отпуска в справках по отпуску, а так же учитывать в резерве отпусков.

Спасибо за внимание! Вопросы и конструктивная критика приветствуется.

 

10 Comments

  1. qwinter

    Меня иногда поражает, насколько люди любят искать сложные пути. Неужели создание внешней обработки табличной части «Начисления», которой после расчета компенсации будет подменен вид расчета настолько сложен?

    Reply
  2. qwinter

    Заполнение ТЧ

    Reply
  3. greznik

    (1) qwinter, даже не знаю что и сказать кроме того что «где же вы были раньше?» =)

    Спасибо. Век живи век учись.

    Reply
  4. greznik

    (2) qwinter, Обратил внимание, что при использовании вашей обработки сбрасывается сумма на первой странице «Условия». На начисление это не влияет, но у пользователя может вызвать панику.

    Reply
  5. qwinter

    (4) если это настолько критично, то можно поправить немного форму документа, в процедуре: ОбновитьИнформационнуюНадписьРазмерНачислено

    Вместо:

    Если КомпенсацияОтпуска Тогда
    Если ПорядокРасчетаКомпенсацииОтпуска = Перечисления.ПорядокРасчетаОтпуска.ПоКалендарнымДням Тогда
    НачисленияДокумента.Вставить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаКалендарныеДниБезУвольнения,»»)
    Иначе
    НачисленияДокумента.Вставить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаШестидневкаБезУвольнения,»»)
    КонецЕсли;
    КонецЕсли;

    будет:

    Если КомпенсацияОтпуска Тогда
    Если ПорядокРасчетаКомпенсацииОтпуска = Перечисления.ПорядокРасчетаОтпуска.ПоКалендарнымДням Тогда
    НачисленияДокумента.Вставить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаКалендарныеДниБезУвольнения,»»)
    Иначе
    НачисленияДокумента.Вставить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаШестидневкаБезУвольнения,»»)
    КонецЕсли;
    НачисленияДокумента.Вставить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.НайтиПоКоду(«Код ваших видов расчета»),»»)
    КонецЕсли;
    Reply
  6. greznik

    (5) qwinter, просто обработка ТЧ хороша тем, что можно не снимать объект с поддержки, а что бы обновить значение все таки придется снять. Но предлагаемый вами вариант весьма удобен.

    Спасибо за конструктивность =)

    Reply
  7. mikhailovaew

    (2) кстати да, можно заменять вид расчета обработкой. Мне при решении этой задачи пришла в голову идея закомментировать пару строк, где запрещается менять вид расчета в табличной части, чтобы расчетчики ПОСЛЕ автоматического расчета компенсации могли поменять начисление. Но Ваш способ, безусловно, безопаснее.

    Reply
  8. mikhailovaew

    Автор, Ваш способ (подмена вида отпуска в начислении) мне не нравится совсем. Как быть с групповым перепроведением, да с любым перепроведением? Расчетчик одного подразделения провел отпуск. Расчетчик другого подразделения изменил начисление, о чем первый расчетчик не в курсе. Расчетчик №1 открывает свой документ, жмет кнопку ОК — и результат проведения уже совсем другой!

    Reply
  9. quNas

    Вопрос продолжение темы: Как отражается в Т-2 компенсация отпуска?

    Reply
  10. CSiER

    (9) quNas, Здравствуйте. В типовом варианте компенсация не отображается — нужны незначительные доработки.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *