При настройке сложных систем оплаты труда в программе 1С:Зарплата и управление персоналом 3.1 (ЗУП) пользователи часто сталкиваются с ограничением стандартного механизма накопления показателей. Проблема заключается в математической логике: штатный механизм системы суммирует значения самих показателей за месяц и только потом подставляет эти суммы в итоговую формулу. Однако во многих случаях (особенно при сдельщине или расчете премий) требуется иная логика: рассчитать формулу для каждой записи отдельно и сложить именно полученные результаты.
Рассмотрим на примере, почему стандартное накопление не всегда подходит. Допустим, формула расчета: Показатель1 / Показатель2 * Показатель3. Если в течение месяца введено три записи:
Сумма результатов: 2 900. Но ЗУП при обычном накоплении показателей посчитает так: (10000+5000+8000) / (50+25+80) * (8+4+5), что даст совершенно иной результат. Разберем по шагам, как настроить систему для получения корректной суммы в 2 900 руб.
Проанализируем ситуацию: чтобы получить сумму результатов, нам нужно где-то хранить эти промежуточные итоги (1 600, 800, 500). Самым надежным способом в 1С:ЗУП 3.1 является создание «технического» начисления.
Шаг 1. Создание показателей. Сначала создадим три показателя (например, Тех_База, Тех_Норма, Тех_Коэффициент). В настройках каждого показателя укажем: «Используется только в месяце, в котором введено значение (разовое использование)».
Шаг 2. Настройка технического начисления. Создадим новый вид начисления (назовем его «Технический расчет базы»). Настроим его следующим образом:
Тех_База / Тех_Норма * Тех_Коэффициент.Шаг 3. Итоговое начисление. Создадим основное начисление (например, «Итоговая сдельная оплата»). В формуле укажем просто РасчетнаяБаза. На вкладке «Расчет базы» выберем наше «Техническое расчетное начисление».
Теперь при вводе документов Разовое начисление в течение месяца программа будет рассчитывать суммы 1 600, 800 и 500 отдельно. В конце месяца документ Начисление зарплаты и взносов соберет их в общую базу и выдаст искомые 2 900.
Рассмотрим ситуацию, когда ввод Разовых начислений кажется слишком громоздким. Выясним, можно ли использовать механизм сдельных работ. Это особенно актуально, если расчет зависит от объема выполненных работ.
В ЗУП 3.1 можно настроить Шаблон ввода исходных данных (раздел Настройка — Шаблоны ввода исходных данных). В шаблоне мы можем разрешить ввод нескольких документов в месяц. Однако здесь сохраняется та же проблема: если мы настроим формулу внутри начисления через показатели, система их суммирует перед расчетом.
Чтобы этого избежать, можно использовать справочник «Виды работ». Если для каждого случая мы будем заносить отдельный вид работы с уже рассчитанной стоимостью (или объемом), то документ Данные для расчета зарплаты позволит зафиксировать именно сумму. Это «штатный» путь для сдельной оплаты труда.
Если логика распределения показателей слишком сложная (как указано в Сообщении 19 форума, когда данные зависят от внутренних групп сотрудников, не зафиксированных в штатном расписании), ручной ввод становится невозможным. Проанализируем решение через доработку.
Вы можете использовать механизм «Заполнение показателей» в документе Данные для расчета зарплаты. Для этого пишется внешняя обработка, которая:
П1 / П2 * П3 для каждой строки данных.ИтоговыйОбъемРабот).В этом случае формула в начислении будет предельно простой: ИтоговыйОбъемРабот. Весь «накопительный» расчет берет на себя программный код обработки, а ЗУП получает уже готовое число.
При использовании метода с расчетной базой (Метод 1) обратите внимание на следующие моменты:
Подведем итог: стандартное «накопление показателей» в ЗУП 3.1 работает только на сложение самих аргументов формулы. Если вам нужна сумма результатов, используйте либо промежуточные документы (Разовое начисление), формирующие РасчетнуюБазу, либо внешние инструменты автоматизации для предварительного расчета итогового показателя.