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

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

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

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

Причина проблемы: Особенности механизма расчетной базы

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

Способ №1: Создание технического начисления (универсальный метод)

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

Шаг 1. Настройка технического начисления

  1. Перейдем в раздел Настройка — Начисления и создадим новое начисление. Назовем его, например, «Технический ввод часов для премии».
  2. На вкладке Основное выберем назначение начисления: Доход в натуральной форме. Это критически важно, так как такое начисление не будет увеличивать сумму к выплате сотруднику, а лишь зафиксирует данные для учета.
  3. В поле Начисление выполняется укажем: Ежемесячно.
  4. Установим переключатель Результат рассчитывается и введем формулу: Результат = ВремяВЧасах Здесь ВремяВЧасах — это предопределенный показатель, который программа заполнит автоматически на основании табеля или графика работы сотрудника.

Шаг 2. Настройка налогов и отчетов

Поскольку это начисление является техническим, на вкладке Налоги, взносы, бухучет необходимо указать, что оно не является объектом налогообложения НДФЛ и не облагается страховыми взносами. Также в поле Статистическая отчетность следует указать, что оно не учитывается в выплатах фонда заработной платы. Чтобы эта строка не смущала сотрудников, можно снять флаг Выводить в расчетный листок (доступно в расширенных настройках некоторых версий) или просто дать понятное название.

Шаг 3. Настройка основной премии

Теперь создадим саму премию, которая будет выплачиваться в текущем месяце за прошлый.

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

Теперь при расчете зарплаты за текущий месяц программа посмотрит, какая «сумма» получилась у технического начисления в прошлом месяце. А так как «сумма» там равна количеству часов, мы получим нужный результат.

Способ №2: Использование шаблонов ввода исходных данных

Рассмотрим ситуацию, когда расчетчику удобнее один раз в месяц загрузить или ввести количество часов для премии вручную, не привязываясь к автоматическому учету времени (например, если учитываются только специфические часы работы).

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

Способ №3: Программная доработка (Расширение)

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

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

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

Анализ рисков и рекомендации

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

Рекомендуем придерживаться следующих правил:

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

← На главную