При настройке сложных периодических начислений в 1С:Зарплата и управление персоналом 3.1 (ЗУП) специалисты часто сталкиваются с требованиями коллективного договора, которые трудно ложатся на типовой функционал. Одной из таких задач является начисление квартальной премии за выслугу лет по формуле, учитывающей годовую норму времени и фактически отработанные часы за квартал, особенно когда у сотрудника меняется оклад внутри этого квартала.
Рассмотрим ситуацию: бухгалтерии требуется расчет вида Оклад * ПроцентНадбавки / ГодоваяНормаЧасов * ОтработанныеЧасыЗаКвартал. Основная сложность здесь заключается в том, что если использовать в формуле стандартный показатель Оклад, программа возьмет его значение на дату расчета (конец квартала), проигнорировав изменения в начале или середине периода. Проанализируем способы решения этой задачи.
Первое и самое важное правило при настройке подобных премий: никогда не используйте показатель Оклад напрямую, если расчет производится за период более месяца. Для корректного учета всех изменений тарифной ставки необходимо использовать механизм Расчетной базы. Разберем по шагам, как это настроить:
Премия. Укажем, что начисление выполняется По отдельному документу (документ Премия) или В перечисленных месяцах.Оклад будем использовать РасчетнаяБаза. Примерная формула будет выглядеть так:
РасчетнаяБаза * ПроцентНадбавки / ГодоваяНормаЧасов * (ВремяВЧасах / ВремяВЧасах)
РасчетнаяБаза уже содержит в себе сумму начисленного оклада за все месяцы квартала. Если оклад менялся, база соберет фактические суммы по каждому периоду действия оклада.Предыдущий квартал (или Несколько предыдущих месяцев, указав 3 месяца). В список базовых начислений обязательно добавим Оплата по окладу, Оплата по окладу (по часам) и другие основные начисления сотрудника.Проанализируем результат: если оклад составлял 25 000 руб. и не менялся, РасчетнаяБаза за квартал составит 75 000 руб. Если мы делим эту сумму на 3, мы получаем тот самый «средний» оклад, который требует бухгалтерия. Формула принимает вид: (РасчетнаяБаза / 3) * Процент / ГодоваяНорма * ОтработаноЧасов.
Если бухгалтерия требует максимально точного соответствия формуле и типовые средства расчета базы не дают нужного результата в копейках, можно применить метод «транзитного» начисления. Рассмотрим этот алгоритм:
Премия за выслугу (ежемесячная).Начисление зарплаты и взносов, фиксируя сумму «выслуги» за текущий месяц, но оно не будет увеличивать сумму к выплате и не будет облагаться налогами на данном этапе (если это просто расчетная величина).Оклад * ПроцентНадбавки * ВремяВЧасах / ГодоваяНормаЧасов. Здесь ГодоваяНормаЧасов — это созданный вами постоянный показатель для организации.Квартальная премия за выслугу.РасчетнаяБаза.Премию за выслугу (ежемесячную).При таком подходе программа каждый месяц будет вычислять долю премии, а в конце квартала просто просуммирует эти доли. Это исключает любые ошибки, связанные с изменением окладов или графиков работы в середине периода.
Чтобы не «засорять» расчетный листок справочными начислениями в натуральной форме, в ЗУП 3.1 рекомендуется использовать механизм накапливаемых показателей. Выясним, как это работает:
ОтработаноЧасовДляВыслуги (раздел Настройка — Показатели расчета зарплаты).Для сотрудника, Во всех месяцах после введения значения (постоянный показатель) или, что лучше для данной задачи, Накапливается по результатам ввода нескольких документов в течение месяца.Данные для расчета зарплаты.При реализации любого из выбранных методов обратите внимание на следующие моменты:
1. Показатель Годовой нормы часов:
В ЗУП нет предопределенного показателя «Норма часов за год». Вам необходимо создать его вручную как показатель Для организации. Значение (например, 1970 часов) вводится один раз в год документом Данные для расчета зарплаты. Это позволит использовать его в любых формулах:
Результат = Оклад * Процент / ГодоваяНормаЧасов * ВремяВЧасах
2. Округление:
Часто разница в 1–2 рубля возникает из-за того, что ЗУП округляет только конечный результат выражения. Если в старых программах (например, 1С 7.7) бухгалтеры привыкли округлять промежуточную часовую ставку, в 8.3 нужно использовать функцию Окр() внутри формулы:
Результат = Окр(Оклад / ГодоваяНормаЧасов, 2) * ВремяВЧасах * Процент
3. Учет отсутствий:
Если по колдоговору из расчета должны исключаться только неуважительные причины (прогулы, Б/С), убедитесь, что на вкладке Учет времени начисления правильно настроены виды времени. Если использовать показатель ВремяВЧасах, система автоматически вычтет все периоды, когда сотрудник отсутствовал (больничные, отпуска). Если их вычитать нельзя — придется использовать фиксированную норму в делителе или настраивать приоритеты начислений.
Проанализировав все способы, можно сделать вывод: наиболее стабильным и прозрачным решением для ЗУП 3.1 является использование Расчетной базы за предыдущий квартал. Это типовой механизм, который корректно отрабатывает кадровые изменения (переводы, изменения оплаты) и позволяет избежать написания сложного программного кода в расширениях.