В процессе работы с конфигурацией 1С:Зарплата и Управление Персоналом 3.1 программисты и опытные пользователи часто сталкиваются с ситуациями, когда итоговая сумма в документе Начисление зарплаты и взносов не совпадает с ручными расчетами бухгалтера. Особенно это касается начислений, зависящих от времени: оплаты по часовому тарифу, доплат за совмещение или работы в праздничные дни. Рассмотрим подробно, где искать программный код расчета, как система определяет стоимость часа и почему возникают расхождения в количестве отработанных часов.
Если перед нами стоит задача «продебажить» расчет конкретного начисления, мы не найдем линейный код в модуле документа. В ЗУП 3.1 реализован универсальный механизм расчета. Разберем основные точки входа для разработчика:
МенеджерРасчетаЗарплаты расчет происходит через функцию Выполнить(ТекстФормулы). Система подставляет значения показателей в текст формулы и вычисляет результат.ТарифнаяСтавкаЧасовая или ВремяВЧасах, не вычисляются в одной строке кода. Они предварительно собираются во временные таблицы запроса из различных регистров (например, РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников).Проанализируем ситуацию: если формула выглядит как ТарифнаяСтавкаЧасовая * ВремяВЧасах, и результат неверный, проблема может быть либо в значении самой ставки, либо в определении количества времени. Рассмотрим каждый случай подробнее.
Часто бухгалтер утверждает, что ставка должна быть одной, а программа подставляет другую. Это происходит из-за алгоритма пересчета месячного оклада в стоимость часа (ЧТС). Проверим настройки программы:
Перейдем в раздел Настройка — Расчет зарплаты и найдем пункт Порядок пересчета тарифной ставки сотрудника в стоимость часа. Рассмотрим три варианта, которые предлагает система:
Если мы видим, что программа считает по норме 168 часов (как в примере из обсуждения), хотя в текущем месяце норма другая, значит, в настройках выбран либо среднемесячный показатель, либо норма по другому графику. Выясним причину через «Подробности расчета» в самом документе начисления (правой кнопкой мыши по строке — Показать подробности расчета).
Ситуация, когда в Табеле учета рабочего времени стоит 162 часа, а программа рассчитывает оплату за 168 часов, является классической для ЗУП. Рассмотрим основные причины такого поведения:
Индивидуального графика или основного Графика работы. Если табель введен некорректно или не проведен, система обратится к плановым данным.Для глубокого анализа кадровых данных и показателей сотрудников можно использовать методы программного интерфейса кадрового учета. Рассмотрим пример формирования структуры данных, которая используется в типовых отчетах для получения информации о сотрудниках (оклады, подразделения, должности):
// Пример получения кадровых данных через механизмы ЗУП
ДополнительныеПоля = КадровыйУчет.ПоляПредставленийКадровыхДанныхСотрудников();
СоответствиеПолей = Новый Структура;
СоответствиеПолей.Вставить("Представления_КадровыеДанныеСотрудников", ДополнительныеПоля);
// Инициализация схемы компоновки данных отчета
СхемаСКД = Отчеты.ОтчетыПоСотрудникам.ПолучитьМакет("ОтчетыПоСотрудникамРасширенный");
Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаСКД));
// Заполнение параметров периода
Настройки = Компоновщик.Настройки;
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ТекущаяДата());
// Формирование и вывод данных
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(КомпоновщикМакета.Выполнить(СхемаСКД, Настройки));
Этот код позволяет получить срез данных на определенную дату, включая ТарифнуюСтавку и ГрафикРаботы. Именно через подобные механизмы Зарплатный Движок собирает данные перед началом расчета формул.
Если расхождения возникают в документе Совмещение должностей, нужно обратить внимание на способ расчета доплаты:
ВремяВЧасах в формуле совмещения всегда берется исходя из фактически отработанного времени по основному месту работы сотрудника.Если расчет не совпадает, пройдем по шагам:
Начисление зарплаты проверим колонки Норма и Отработано. Если они отличаются от ожидаемых, ищем введенные документы отклонений (командировки, неявки) или индивидуальные графики.Таким образом, для решения проблемы не обязательно «ломать глаза» о километровые запросы в МенеджерРасчетаЗарплаты. В 90% случаев причина кроется в настройках показателей, методике пересчета тарифной ставки или некорректном заполнении производственного календаря и графиков работы.