В практике настройки расчетов заработной платы в «1С:Зарплата и кадры государственного учреждения» (ЗКГУ) или «1С:Зарплата и управление персоналом» (ЗУП) часто возникает задача начислить премию, базой для которой является не фактически начисленная зарплата, а полный плановый фонд оплаты труда (ФОТ). Ситуация усложняется, когда сотрудники работают неполный месяц (больничные, отпуска, прием в середине месяца).
Рассмотрим типичную проблему, с которой сталкиваются расчетчики и программисты 1С: попытка «математически восстановить» полный оклад из фактических начислений с помощью формулы вида РасчетнаяБаза / ОтработаноВремя * НормаВремени, и разберем, почему этот подход часто приводит к ошибкам и как сделать правильно.
Давайте проанализируем ситуацию, описанную в обсуждении. Пользователь пытается настроить начисление премии следующим образом:
Логика пользователя понятна: «Если я разделю зарплату на дни, я получу стоимость дня, а умножив на норму, получу полный оклад». Однако при реализации в 1С возникают две проблемы:
ОтработаноДней, НормаДней) в документе начисления премии могут возвращать одинаковые значения (полную норму), даже если сотрудник болел. Это происходит потому, что контекст расчета премии может не видеть отклонений, если они не вытесняют данный вид расчета или если документ введен раньше табеля.Давайте разберем математику процесса, как это было предложено в решении задачи. Взглянем на формулу расчета оклада:
ОкладПоФакту = ПолныйОклад * (Отработано / Норма)
Теперь подставим это в формулу, которую пытается создать пользователь для премии:
Премия = (ОкладПоФакту / Отработано) * Норма
Раскроем скобки:
Премия = (ПолныйОклад * Отработано / Норма) / Отработано * Норма
В итоге показатели времени сокращаются, и мы приходим к простому равенству: Премия = ПолныйОклад. Мы видим, что нет никакого смысла брать фактическую расчетную базу, делить её и умножать обратно. Нам нужно просто взять значение полного оклада (или ФОТ).
Самый надежный и правильный способ решения данной задачи в конфигурациях 1С (ЗУП 3.1, ЗКГУ 3.1) — отказаться от использования показателя РасчетнаяБаза для этой цели. Вместо того чтобы пытаться пересчитать фактические начисления обратно к норме, нужно сразу использовать плановые показатели.
В программе существует предопределенный показатель ФОТ (или совокупность оклада и надбавок). Он хранит плановую сумму заработка сотрудника за полный месяц, независимо от того, сколько дней он реально отработал.
Как настроить формулу:
ФОТ * ПроцентПремии / 100
Или, если у вас нет общего показателя ФОТ, но есть конкретные начисления (Оклад, Надбавка за стаж), формула может выглядеть так:
(Оклад + НадбавкаЗаСтаж + НадбавкаЗаВредность) * ПроцентПремии / 100
Преимущества этого метода:
Разберем технический момент, который смутил автора вопроса: почему при наличии неявок (15 дней факта против 17 нормы) в формулу попадали значения 17 и 17?
В 1С механизмы получения времени работают контекстно. Если вы используете показатели ОтработаноДней и НормаДней в формуле начисления, программа пытается определить их значение на момент расчета документа.
Возможные причины ошибки:
ОтработаноДней будет равен норме.В редких случаях бухгалтерии действительно нужно взять сумму прошлых начислений и «дотянуть» её до нормы (например, при расчете годовой премии, где база собирается за 12 месяцев, а сотрудник болел, но премию нужно начислить как за полностью отработанный год). Хотя использование ФОТ все равно предпочтительнее, давайте посмотрим, как это реализовать технически правильно.
Чтобы формула с участием времени работала корректно, необходимо:
ВремяВДнях могут не подойти. В настройках расчета базы (вкладка «Расчет базы») нужно проверить переключатель «Период расчета базы».Факт / Норма не вручную в формуле, а через настройки базы. Но для обратной задачи (восстановления суммы) это работает плохо.Поэтому вернемся к выводу, к которому пришли участники обсуждения: ручной пересчет через время — это путь к ошибкам.
Если ваша задача — начислить премию от полного оклада (полного ФОТ), даже если сотрудник отработал неполное время:
РасчетнаяБаза, ОтработаноДней и НормаДней.ФОТ или прямую сумму оклада (Оклад).ФОТ * Процент / 100.Это гарантирует, что сотрудник получит премию, рассчитанную от его ставки по штатному расписанию, без искажений из-за больничных, отгулов или ошибок округления.