Как в 1С:ЗУП настроить премию, чтобы она начислялась только за полностью отработанный месяц?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет
← На главную

В работе кадровых служб и расчетных отделов часто возникает задача: настроить ежемесячную премию таким образом, чтобы она выплачивалась только тем сотрудникам, которые полностью отработали расчетный месяц. В частности, это касается ситуации, когда сотрудник увольняется не в последний день месяца. Рассмотрим несколько подходов к решению этой задачи в 1С:Зарплата и Управление Персоналом, от простых настроек до доработки конфигурации, а также проанализируем важные юридические аспекты.

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

Решение 1: Настройка формулы начисления

Самый очевидный способ ограничить начисление — изменить его формулу. Идея состоит в том, чтобы добавить в формулу условие, которое будет проверять, равно ли количество отработанных дней норме дней за месяц. Если условие выполняется, премия рассчитывается, если нет — результат равен нулю.

Для этого воспользуемся встроенным в 1С условным оператором ?(Условие, Выражение1, Выражение2).

  1. Откроем настройки нужного нам вида начисления (ежемесячной премии).
  2. Перейдем на вкладку "Основное" и нажмем на ссылку "Редактировать формулу".
  3. Внесем изменения в формулу расчета.

Простой вариант формулы может выглядеть так:

?(ВремяВДнях = НормаДней, РасчетнаяБаза, 0)

Разберем эту формулу по частям:

Важный нюанс: Такой подход имеет существенный недостаток. Премия не будет начислена любому сотруднику, который отработал неполный месяц, например, из-за больничного или отпуска, а не только уволенному. Если задача состоит в том, чтобы лишить премии только увольняющихся в середине месяца, а для остальных считать ее пропорционально, этот способ не подойдет. Он применим только в том случае, если политика компании действительно подразумевает выплату премии исключительно за 100% отработку нормы времени для всех без исключения.

Решение 2: Ручная корректировка через показатели

Этот способ более гибкий и позволяет принимать решение по каждому сотруднику индивидуально. Он основан на введении в формулу специального показателя, который можно изменять вручную перед расчетом зарплаты.

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

Разберем по шагам:

  1. Убедимся, что в формуле нашего начисления используется показатель, который можно вводить для сотрудника документом (например, "Данные для расчета зарплаты" или специализированный документ для ввода показателей). Пусть наша формула выглядит так: РасчетнаяБаза * ПроцентЕжемесячнойПремии / 100.
  2. Когда сотрудник увольняется не в последний день месяца, ответственный сотрудник (расчетчик или кадровик) перед формированием документа "Начисление зарплаты и взносов" должен создать документ "Данные для расчета зарплаты".
  3. В этом документе для увольняемого сотрудника нужно указать показатель ПроцентЕжемесячнойПремии и установить ему значение 0. Этот документ должен быть датирован месяцем увольнения.
  4. После этого при финальном расчете зарплаты (в документе "Увольнение" или "Начисление зарплаты") формула для этого сотрудника даст нулевой результат, так как база будет умножена на ноль.

Преимущества:

Недостатки:

Решение 3: Доработка конфигурации (для программистов)

Это наиболее надежный, но и самый сложный способ, требующий привлечения программиста 1С. Идея заключается в том, чтобы при проведении документа "Увольнение" программно изменить дату окончания планового начисления премии.

Если сотрудник увольняется не в последний день месяца, нужно сделать так, чтобы плановое начисление его премии прекратилось не датой увольнения, а последним днем предыдущего месяца. В этом случае в текущем месяце премия ему просто не будет предложена к расчету.

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

Алгоритм для программиста:

  1. Создать расширение для конфигурации ЗУП.
  2. Заимствовать в расширение документ "Увольнение".
  3. Создать обработчик подписки на событие ОбработкаПроведения для документа "Увольнение" с порядком выполнения "Перед".
  4. В коде подписки проанализировать дату увольнения. Если она не является концом месяца, необходимо найти в движениях документа запись о прекращении планового начисления нашей премии.
  5. Изменить в этой записи дату окончания на конец предыдущего месяца.

Примерный участок кода, на который стоит обратить внимание в модуле менеджера документа Увольнение, — это вызов процедуры прекращения плановых начислений:


// Прекращаем плановые начисления
РасчетЗарплатыРасширенный.ПрекратитьВсеПлановыеНачисленияПоТаблицеСотрудников(
    Движения, ДанныеДляПроведения.ДанныеДляРегистрацииПрекращенияПлановыхНачислений);

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

Преимущества:

Недостатки:

Заключение

Выбор способа зависит от ваших ресурсов и внутренних процессов. Метод с настройкой формулы прост, но подходит не для всех ситуаций. Ручная корректировка — хороший компромисс, если у вас немного увольнений и ответственные сотрудники. Доработка конфигурации — самый надежный, но и самый затратный путь. Независимо от выбранного технического решения, ключевым фактором является юридическая чистота: наличие четких и недвусмысленных формулировок в ваших локальных нормативных актах.

← На главную