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

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

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

Рассмотрим ситуацию: бухгалтерии требуется расчет вида Оклад * ПроцентНадбавки / ГодоваяНормаЧасов * ОтработанныеЧасыЗаКвартал. Основная сложность здесь заключается в том, что если использовать в формуле стандартный показатель Оклад, программа возьмет его значение на дату расчета (конец квартала), проигнорировав изменения в начале или середине периода. Проанализируем способы решения этой задачи.

Метод 1. Использование Расчетной базы для учета изменений оклада

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

  1. Создадим новое начисление (раздел Настройка — Начисления).
  2. На вкладке Основное установим назначение начисления — Премия. Укажем, что начисление выполняется По отдельному документу (документ Премия) или В перечисленных месяцах.
  3. Перейдем к редактированию формулы. Вместо Оклад будем использовать РасчетнаяБаза. Примерная формула будет выглядеть так:

    РасчетнаяБаза * ПроцентНадбавки / ГодоваяНормаЧасов * (ВремяВЧасах / ВремяВЧасах)

    Примечание: В данной конструкции РасчетнаяБаза уже содержит в себе сумму начисленного оклада за все месяцы квартала. Если оклад менялся, база соберет фактические суммы по каждому периоду действия оклада.
  4. На вкладке Расчет базы выберем период — Предыдущий квартал (или Несколько предыдущих месяцев, указав 3 месяца). В список базовых начислений обязательно добавим Оплата по окладу, Оплата по окладу (по часам) и другие основные начисления сотрудника.

Проанализируем результат: если оклад составлял 25 000 руб. и не менялся, РасчетнаяБаза за квартал составит 75 000 руб. Если мы делим эту сумму на 3, мы получаем тот самый «средний» оклад, который требует бухгалтерия. Формула принимает вид: (РасчетнаяБаза / 3) * Процент / ГодоваяНорма * ОтработаноЧасов.

Метод 2. Создание вспомогательного ежемесячного начисления

Если бухгалтерия требует максимально точного соответствия формуле и типовые средства расчета базы не дают нужного результата в копейках, можно применить метод «транзитного» начисления. Рассмотрим этот алгоритм:

  1. Создаем начисление Премия за выслугу (ежемесячная).
  2. Устанавливаем для него признак дохода в натуральной форме. Это критически важно: начисление будет рассчитываться ежемесячно в документе Начисление зарплаты и взносов, фиксируя сумму «выслуги» за текущий месяц, но оно не будет увеличивать сумму к выплате и не будет облагаться налогами на данном этапе (если это просто расчетная величина).
  3. Формула для ежемесячного начисления: Оклад * ПроцентНадбавки * ВремяВЧасах / ГодоваяНормаЧасов. Здесь ГодоваяНормаЧасов — это созданный вами постоянный показатель для организации.
  4. Создаем основное (квартальное) начисление Квартальная премия за выслугу.
  5. В его формуле указываем просто: РасчетнаяБаза.
  6. На вкладке Расчет базы выбираем только одно базовое начисление — нашу «натуральную» Премию за выслугу (ежемесячную).

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

Метод 3. Накапливаемые показатели (наиболее технологичный путь)

Чтобы не «засорять» расчетный листок справочными начислениями в натуральной форме, в ЗУП 3.1 рекомендуется использовать механизм накапливаемых показателей. Выясним, как это работает:

  1. Создадим показатель ОтработаноЧасовДляВыслуги (раздел Настройка — Показатели расчета зарплаты).
  2. Настроим его так: Для сотрудника, Во всех месяцах после введения значения (постоянный показатель) или, что лучше для данной задачи, Накапливается по результатам ввода нескольких документов в течение месяца.
  3. В формуле квартальной премии используем этот накопленный показатель.
  4. Данные о времени будем вводить документом Данные для расчета зарплаты.

Важные технические нюансы и функции

При реализации любого из выбранных методов обратите внимание на следующие моменты:

1. Показатель Годовой нормы часов:
В ЗУП нет предопределенного показателя «Норма часов за год». Вам необходимо создать его вручную как показатель Для организации. Значение (например, 1970 часов) вводится один раз в год документом Данные для расчета зарплаты. Это позволит использовать его в любых формулах:

Результат = Оклад * Процент / ГодоваяНормаЧасов * ВремяВЧасах

2. Округление:
Часто разница в 1–2 рубля возникает из-за того, что ЗУП округляет только конечный результат выражения. Если в старых программах (например, 1С 7.7) бухгалтеры привыкли округлять промежуточную часовую ставку, в 8.3 нужно использовать функцию Окр() внутри формулы:

Результат = Окр(Оклад / ГодоваяНормаЧасов, 2) * ВремяВЧасах * Процент

3. Учет отсутствий:
Если по колдоговору из расчета должны исключаться только неуважительные причины (прогулы, Б/С), убедитесь, что на вкладке Учет времени начисления правильно настроены виды времени. Если использовать показатель ВремяВЧасах, система автоматически вычтет все периоды, когда сотрудник отсутствовал (больничные, отпуска). Если их вычитать нельзя — придется использовать фиксированную норму в делителе или настраивать приоритеты начислений.

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

← На главную