В типовой конфигурации «1С:Зарплата и управление персоналом 3.1» часто возникает задача: рассчитать премию в текущем месяце, исходя из показателей эффективности или фактически отработанного времени за предыдущий месяц. Основная сложность заключается в том, что стандартный показатель ВремяВЧасах или ВремяВДнях в формуле начисления всегда обращается к данным текущего периода регистрации. Прямого предопределенного показателя вроде «ВремяПрошлогоМесяца» в программе не предусмотрено.
Разберем детально, как обойти это ограничение, используя штатные механизмы программы, и рассмотрим альтернативные варианты автоматизации этого процесса.
Прежде чем перейти к настройкам, проанализируем, почему нельзя просто указать в формуле премии расчетную базу за прошлый месяц и ожидать, что программа сама «поймет» количество часов. Механизм РасчетнаяБаза в 1С:ЗУП предназначен для сбора стоимостных показателей (сумм) начислений, входящих в базу. Он не умеет извлекать количественные показатели (часы, дни, объемы продукции) из других видов расчета. Поэтому наша основная задача — «превратить» часы прошлого месяца в некую сумму, которую основная премия сможет «увидеть» через свою расчетную базу.
Этот метод является наиболее надежным и не требует привлечения программиста для написания расширений. Мы создадим вспомогательное начисление, которое будет фиксировать отработанное время в цифровом виде.
Шаг 1. Настройка технического начисления
Доход в натуральной форме. Это критически важно, так как такое начисление не будет увеличивать сумму к выплате сотруднику, а лишь зафиксирует данные для учета.Ежемесячно.
Результат = ВремяВЧасах
Здесь ВремяВЧасах — это предопределенный показатель, который программа заполнит автоматически на основании табеля или графика работы сотрудника.
Шаг 2. Настройка налогов и отчетов
Поскольку это начисление является техническим, на вкладке Налоги, взносы, бухучет необходимо указать, что оно не является объектом налогообложения НДФЛ и не облагается страховыми взносами. Также в поле Статистическая отчетность следует указать, что оно не учитывается в выплатах фонда заработной платы. Чтобы эта строка не смущала сотрудников, можно снять флаг Выводить в расчетный листок (доступно в расширенных настройках некоторых версий) или просто дать понятное название.
Шаг 3. Настройка основной премии
Теперь создадим саму премию, которая будет выплачиваться в текущем месяце за прошлый.
РасчетнаяБаза. Например, если премия — это некая фиксированная ставка за каждый отработанный час прошлого месяца:
Результат = РасчетнаяБаза * СтавкаПремииЗаЧас
Где СтавкаПремииЗаЧас — созданный вами показатель (вводится вручную в документе или для сотрудника).
Предыдущий месяц.Теперь при расчете зарплаты за текущий месяц программа посмотрит, какая «сумма» получилась у технического начисления в прошлом месяце. А так как «сумма» там равна количеству часов, мы получим нужный результат.
Рассмотрим ситуацию, когда расчетчику удобнее один раз в месяц загрузить или ввести количество часов для премии вручную, не привязываясь к автоматическому учету времени (например, если учитываются только специфические часы работы).
ОтработаноЧасовДляПремии (Настройка — Показатели расчета зарплаты). Укажем, что он используется Только в месяце, в котором вводится значение.
Результат = ОтработаноЧасовДляПремии
Проанализируем ситуацию, когда компания не хочет создавать «лишние» начисления. В этом случае программист может создать расширение конфигурации. Рассмотрим алгоритм реализации:
ВремяПрошлогоМесяца.РасчетЗарплатыРасширенный выполняется запрос к регистру накопления ДанныеОтработанногоВремени.ДобавитьМесяц(ПериодРегистрации, -1) и подставляет полученное число часов в показатель в момент расчета документа Начисление зарплаты и взносов.Важный нюанс: При использовании программного метода нужно учитывать, что если за прошлый период будут введены корректировки (например, больничный «задним числом»), показатель может потребовать пересчета текущего месяца.
Выясним причину, по которой иногда расчеты могут «поплыть» при использовании первого способа. Если в текущем месяце вы делаете пересчет прошлого месяца (исправляете первичный документ начисления зарплаты), то «Техническое начисление» также может пересчитаться. Поскольку оно входит в базу премии текущего месяца, программа предложит пересчитать и премию.
Рекомендуем придерживаться следующих правил:
z_ТехническоеВремяДляПремии (не удалять).Таким образом, мы выяснили, что наиболее эффективным и доступным методом решения задачи в 1С:ЗУП 3.1 является связка Натуральный доход + Расчетная база за прошлый месяц. Это позволяет автоматизировать расчет без ручных манипуляций в Excel и сохраняет прозрачность учета для проверяющих органов.