Автоматизация квартальных премий в программе 1С:Зарплата и управление персоналом 8 часто выходит за рамки стандартных настроек «процент от базы». Иногда расчетчикам требуется формула, учитывающая не только фактически отработанное время, но и разницу между целевым значением и уже выплаченными суммами за предыдущие месяцы. Рассмотрим задачу настройки начисления со следующей формулой:
КвПремия = (Х * 3 / КолЧасовВКвартале * ФактическиОтработанныеЧасыВКвартале) - (Оклады_И_Премии_За_3_Месяца)
Где Х — произвольный параметр, а вычитаемая часть — это сумма всех начислений сотрудника за текущий квартал. Разберем по шагам, как реализовать этот алгоритм максимально эффективно.
Прежде чем приступать к настройке в 1С, проанализируем компоненты формулы. Вместо того чтобы создавать шесть отдельных показателей для окладов и премий за каждый месяц (Оклад1, Оклад2, Премия1 и т.д.), воспользуемся механизмом Расчетной базы. Он позволяет автоматически собрать суммы по нужным видам начислений за определенный период.
Таким образом, наша рабочая формула в ЗУП примет вид:
(ПараметрХ * 3 / НормаЧасовЗаКвартал * ВремяВЧасах) - РасчетнаяБаза
Для реализации формулы нам потребуются пользовательские показатели. Перейдем в раздел Настройка — Показатели расчета зарплаты и создадим их:
НормаВремениВЧасах, который умеет собирать данные за период расчетной базы.Создадим новое начисление в разделе Настройка — Начисления:
Квартальная премия.По отдельному документу (выбираем документ Премия).Результат рассчитывается и вводим нашу формулу.Предыдущий квартал.Базовые начисления подберите все виды окладов и ежемесячных премий, которые должны вычитаться согласно ТЗ.ВремяВЧасах), на этой же вкладке проверьте, чтобы показатели времени собирались за период базы.Параметр Х удобнее всего вводить не вручную в каждом документе, а через Шаблон ввода исходных данных. Рассмотрим, как это сделать:
Параметр Х.Х, а в документе Премия нажать кнопку «Заполнить», и расчет произойдет автоматически.Проанализируем ситуацию, озвученную в обсуждении: что считать «фактически отработанными часами»? По умолчанию ЗУП в показатель ВремяВЧасах включает только рабочее время (Явки, Ночные). Если бухгалтерия требует включать командировки или другие периоды, оплаченные по среднему, необходимо:
Пример логики для внешней обработки (фрагмент кода для программиста):
// Получение отработанных часов за квартал (пример алгоритма)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеТабеля.Сотрудник,
| СУММА(ДанныеТабеля.Часы) КАК ЧасыКвартал
|ИЗ
| РегистрНакопления.ДанныеОперативногоУчетаРабочегоВремениСотрудников КАК ДанныеТабеля
|ГДЕ
| ДанныеТабеля.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
|СГРУППИРОВАТЬ ПО
| ДанныеТабеля.Сотрудник";
Выясним причину возможных сложностей при начислении премии в последнем месяце квартала (например, расчет за март в марте). Если вы создаете документ Премия до того, как проведен документ Начисление зарплаты и взносов за март, РасчетнаяБаза за март будет пустой или неполной.
Рекомендуемый порядок действий:
Дата выплаты в обоих документах совпадает. Это критично для корректного формирования отчетности 6-НДФЛ с 2023 года.Реализация сложной формулы в ЗУП 3.1 возможна без изменения конфигурации. Основным инструментом здесь выступает РасчетнаяБаза с правильно настроенным периодом и списком начислений. Для автоматизации ввода переменных параметров (таких как коэффициент Х) лучше всего использовать штатные шаблоны ввода данных, а для специфических требований по расчету часов — внешние обработки заполнения табличных частей.