Как исправить расхождение расчетного ФОТ и оклада при суммированном учете рабочего времени в 1С:ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

В процессе расчета заработной платы и ведения штатного расписания в программе 1С:Зарплата и управление персоналом 3.1 пользователи часто сталкиваются с неприятной особенностью: плановый Фонд оплаты труда (ФОТ) для сотрудников на суммированном учете рассчитывается некорректно. Например, при реальном окладе в 20 000 рублей программа записывает в ФОТ сумму 19 800 рублей. В результате в штатном расписании отображаются неверные цифры, а совокупная тарифная ставка (СТС), используемая для расчета переработок и ночных часов, рассчитывается с ошибками.

В этой статье мы подробно разберем, почему возникает данная проблема, рассмотрим стандартные аналитические инструменты системы для ее обхода и приведем пошаговое техническое решение для разработчиков, которые хотят доработать этот механизм через расширение конфигурации.

Выясняем причину: почему «плывет» ФОТ при суммированном учете

Для начала проанализируем внутренний механизм работы 1С:ЗУП 3.1. Когда программа рассчитывает плановый ФОТ, она моделирует идеальную ситуацию: сотрудник должен отработать полный месяц без отклонений (отпусков, больничных и т. д.).

Если для начисления оклада при суммированном учете используется формула вида:

Оклад * 12 / НормаДнейЗаГод * ВремяВДнях

то при расчете ФОТ система пытается подставить плановые значения показателей:

Из-за математических округлений среднемесячных показателей графиков и их несовпадения с точной годовой нормой конкретного года расчетный ФОТ практически никогда не совпадает с реальным окладом. Программа выдает условные 19 800 рублей вместо положенных 20 000 рублей.

Многие ошибочно полагают, что ФОТ выполняет исключительно информационную роль в штатном расписании. Однако это не так. ФОТ напрямую влияет на расчет совокупной тарифной ставки (СТС), из которой впоследствии вычисляется стоимость часа для оплаты праздничных дней, ночных смен, совмещений и переработок при суммированном учете.

---

Решение №1. Корректировка настроек без программирования

Прежде чем открывать конфигуратор и писать программный код, рассмотрим штатные возможности 1С:ЗУП 3.1, которые позволяют решить эту проблему быстро и безопасно.

Способ А. Отключение автоматического расчета ФОТ для конкретного начисления

Если для вашего вида начисления автоматический расчет дает сбои, вы можете перевести расчет вклада в ФОТ в ручной режим:

  1. Перейдем в раздел Настройка — Начисления и откроем карточку нужного начисления (например, «Оклад по часам при суммированном учете»).
  2. На вкладке Основное найдем признак автоматического расчета ФОТ.
  3. Снимем флажок ФОТ рассчитывается автоматически.
  4. Сохраним настройки начисления.

После этого при назначении данного начисления в кадровых документах («Прием на работу», «Кадровый перевод») поле «Вклад в ФОТ» станет доступно для ручного редактирования. Пользователь сможет нажать на значок зеленого карандаша и вручную указать ровно 20 000 рублей. Данное значение запишется в регистры и будет корректно использоваться при расчете стоимости часа.

Способ Б. Оптимизация формулы расчета

Вместо использования сложных годовых конструкций в формулах начисления эффективнее применять встроенный предопределенный показатель СреднемесячноеКоличествоЧасов (или дней). Он спроектирован разработчиками 1С специально для того, чтобы при расчете планового ФОТ итоговое значение выходило ровно на сумму оклада, исключая влияние календарных флуктуаций текущего года.

Способ В. Настройка совокупной тарифной ставки

Помним, что состав показателей, определяющих совокупную тарифную ставку, гибко настраивается в пользовательском режиме. Проверим эти настройки:

  1. Перейдем в меню Настройка — Расчет зарплаты.
  2. Найдем блок Показатели, определяющие состав совокупной тарифной ставки.
  3. Убедимся, что в список выбранных показателей входит именно ТарифнаяСтавкаМесячная (Оклад), а не расчетные показатели ФОТ, если это допустимо в вашей учетной политике.

---

Решение №2. Техническая доработка расчета ФОТ через расширение

Если по требованиям заказчика ручной ввод ФОТ недопустим, а формулы расчета менять запрещено, нам потребуется реализовать доработку механизма в расширении конфигурации.

Проанализируем архитектурную особенность ЗУП 3.1: ФОТ хранится в базе данных, а не просто рассчитывается при выводе на форму. Данные записываются в периодические регистры сведений:

Попытка изменить код только на клиенте (например, в форме документа принудительно пересчитывать строку СтрокаНачисления.Размер) приведет к тому, что при проведении документа в регистры все равно запишется ошибочное значение (19 800 рублей). В итоге отчеты по штатному расписанию и расчет стоимости часа останутся неверными.

Посмотрим, где выполняется расчет планового ФОТ на сервере. Вся бизнес-логика сосредоточена в общем модуле ПлановыеНачисленияСотрудников. Нам необходимо перехватить расчет вклада в ФОТ непосредственно перед записью данных.

Разберем по шагам создание доработки в расширении:

  1. Создадим новое расширение конфигурации и добавим в него общий модуль ПлановыеНачисленияСотрудников.
  2. Применим аннотацию &После к процедуре, отвечающей за расчет планового ФОТ по таблице начислений. Обычно это процедура РассчитатьПлановыйФОТ или логика внутри функций сбора сводных данных плановых начислений.
  3. Напишем алгоритм сравнения расчетного ФОТ с показателем оклада.

Рассмотрим пример реализации программного кода в расширении:


&После("РассчитатьВкладВФОТ")
Процедура Расш1_РассчитатьВкладВФОТ(СтрокаНачисления, ПоказателиРегистрации)
    
    // Проверим, что это наше целевое начисление (например, по коду или предопределенному имени)
    Если СтрокаНачисления.Начисление.Код = "ОКЛ_СУММ" Тогда
        
        РазмерОклада = 0;
        // Получим актуальный размер тарифной ставки (оклада) из показателей строки
        Если СтрокаНачисления.Свойство("Размер", РазмерОклада) Тогда
            
            // Если расчетный вклад в ФОТ оказался меньше установленного оклада
            Если СтрокаНачисления.ВкладВФОТ < РазмерОклада Тогда
                // Принудительно приравниваем плановый ФОТ к размеру оклада
                СтрокаНачисления.ВкладВФОТ = РазмерОклада;
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЕсли;

КонецПроцедуры

При таком подходе принудительно скорректированное значение запишется в регистры сведений при проведении любых кадровых документов (Прием на работу, Кадровый перевод, Изменение оплаты труда). Автоматически обновятся и данные на форме документов, так как стандартный клиентский код вызова ЗарплатаКадрыРасширенныйКлиентСервер.ИтогиПоФОТ суммирует уже скорректированные сервером показатели колонок.

Используя предложенные варианты решения, мы гарантируем полное соответствие планового ФОТ реальным окладам сотрудников, корректность отчетов штатного расписания и точность последующих расчетов совокупной тарифной ставки при расчете заработной платы.

← На главную