Как реализовать доплату по больничному листу до оклада с ограничением 14 дней в год в 1С:ЗУП 3.1

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

В типовой конфигурации «1С:Зарплата и управление персоналом 3.1» предусмотрен механизм доплаты до среднего заработка на период болезни. Однако на практике часто встречается задача реализации доплаты именно до фактического оклада (или совокупности оклада и постоянных надбавок), причем с жестким ограничением — например, оплачивается не более 14 календарных или рабочих дней в году. Давайте детально разберем, как реализовать этот функционал, проанализируем возможные архитектурные решения и выберем наиболее стабильный вариант.

Постановка задачи и основные сложности

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

  1. База расчета: Нам нужно сравнивать стоимость рабочего дня по окладу (с учетом всех плановых начислений) и сумму фактически начисленного пособия за этот же день.
  2. Рабочие vs Календарные дни: Пособие по временной нетрудоспособности выплачивается за календарные дни, а оклад начисляется за рабочие. Доплата должна нивелировать разницу только в рабочее время сотрудника.
  3. Лимит 14 дней: Необходимо хранить историю накопленных дней доплаты в разрезе календарного года и проверять остаток при каждом новом расчете.
  4. Пересчеты: Если исходный больничный лист исправляется или сторнируется, сумма доплаты должна автоматически актуализироваться.

Вариант 1. Использование формулы и пользовательских показателей

Этот вариант считается наиболее «штатным», так как он минимизирует вмешательство в типовой код документа БольничныйЛист. Мы создадим новое начисление, которое будет рассчитываться автоматически.

Рассмотрим по шагам создание такого начисления:

1. Создадим два показателя расчета зарплаты:

2. Настроим формулу начисления:


Макс(0, (Оклад + КвалификационнаяНадбавка) / НормаДней * ВремяВРабочихДнях - СуммаПособияЗаРабочиеДни) * (ДнейДоплаты <= ОстатокДнейДоплатыДоОклада ? 1 : 0)

Проанализируем проблему: Главный минус этого метода заключается в том, что РасчетнаяБаза в 1С:ЗУП обычно собирает суммы за календарный период. Если мы просто вычтем сумму всего больничного из оклада за рабочие дни, результат будет некорректным (сотрудник может «проиграть» в деньгах из-за выходных). Нам необходимо программно определять, какая часть пособия пришлась именно на рабочие дни по графику сотрудника.

Вариант 2. Доработка документа «Больничный лист» через расширение

Этот способ позволяет сделать расчет максимально прозрачным для бухгалтера. Мы вклиниваемся в процесс расчета документа в тот момент, когда типовое пособие уже рассчитано, но НДФЛ еще не определен.

Рассмотрим алгоритм работы обработчика:

  1. Проанализируем таблицу Начисления документа после выполнения типового расчета.
  2. Для каждого периода (строки) определим количество рабочих дней по графику сотрудника.
  3. Вычислим «стоимость» этих рабочих дней по плановым начислениям сотрудника на дату начала события.
  4. Проверим остаток лимита (14 дней). Для этого создадим вспомогательный Регистр накопления (например, ИспользованныеДниДоплатыПоБЛ).
  5. Добавим новую строку в таблицу начислений с видом расчета «Доплата до оклада».

Пример фрагмента кода для расчета суммы доплаты за конкретный период:


// Вычисляем стоимость одного дня по ФОТ
СтоимостьДня = (Оклад + Надбавки) / НормаДнейМесяца;

// Считаем рабочие дни в периоде болезни
ДниКДоплате = ОпределитьРабочиеДниПоГрафику(ДатаНачалаБЛ, ДатаОкончанияБЛ, ГрафикСотрудника);

// Проверяем лимит 14 дней из регистра
ОстатокЛимита = ПолучитьОстатокДнейИзРегистра(Сотрудник, ТекущийГод);
ДниКРасчету = Мин(ДниКДоплате, ОстатокЛимита);

// Сумма доплаты
Результат = (СтоимостьДня * ДниКРасчету) - (СуммаПособияЗаПериод / КалендарныеДни * ДниКРасчету);

Важно помнить, что при использовании Мин(ДниКДоплате, ОстатокЛимита) мы гарантируем соблюдение законодательных или локальных норм предприятия.

Вариант 3. Использование документа «Данные для расчета зарплаты»

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

  1. Сканирует все документы БольничныйЛист за период.
  2. Рассчитывает сумму доплаты с учетом лимита 14 дней.
  3. Создает или заполняет документ ДанныеДляРасчетаЗарплаты, куда записывает готовые суммы в разрезе сотрудников.

В самом начислении «Доплата до оклада» при этом будет простейшая формула: СуммаДоплатыПоБЛ (где СуммаДоплатыПоБЛ — это показатель, вводимый только что созданным документом).

Плюсы этого метода:

Тонкости расчета стоимости рабочего дня

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

  1. По норме производственного календаря: Сумма оклада делится на количество дней в месяце по общегосударственному календарю.
  2. По графику сотрудника: Оклад делится на количество рабочих дней в конкретном месяце по индивидуальному графику.
  3. Среднегодовое значение: Оклад делится на среднее количество дней в месяце за год.

Рекомендуем использовать функцию РасчетЗарплатыОбщий.СтоимостьЧасаДня, чтобы получить результат, идентичный типовому расчету Оклад.

Учет переходящих больничных и праздников

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

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

Итоги и рекомендации

Мы рассмотрели три архитектурных подхода. Подведем итог:

При реализации обязательно учитывайте Районный коэффициент и Северную надбавку. Обычно доплата до оклада должна включать эти показатели, если сам оклад в компании фиксируется «чистым». В формуле это будет выглядеть как добавление коэффициентов к базе расчета: (Оклад * РайонныйКоэффициент).

← На главную