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