Как составить отчет о численности сотрудников и начислениях в 1С:ЗУП 3.1?

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

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

Выбор источников данных

Для решения задачи нам потребуются два ключевых регистра:

  1. РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников — здесь хранятся данные, которые формируются документами табельного учета. Этот регистр позволяет анализировать фактически отработанное время и виды использования времени (отпуска, больничные и т.д.).
  2. РегистрРасчета.Начисления — основной регистр для получения данных о начисленной заработной плате.

Важное примечание: при расчете численности рекомендуется ориентироваться на Физическое лицо, а не на Сотрудник, так как один человек может занимать несколько ставок (совместительство), что приведет к дублированию данных при подсчете количества уникальных работников.

Этап 1: Подготовка данных в запросе

Разберем создание пакетного запроса. На первом этапе мы получим данные по табелю, а на втором — суммы начислений. Затем соединим их в итоговой выборке.


ВЫБРАТЬ
    ДанныеТабельногоУчета.ПериодМесяц КАК Период,
    ДанныеТабельногоУчета.Сотрудник КАК Сотрудник,
    1 КАК КолВоСотр,
    СУММА(ВЫБОР
        КОГДА ДанныеТабельногоУчета.ВидУчетаВремени = &ВидВремениОтпуск
        ТОГДА ДанныеТабельногоУчета.ДниОборот
        ИНАЧЕ 0
    КОНЕЦ) КАК ДниОтпуска
ПОМЕСТИТЬ ВТ_Табель
ИЗ
    РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников.Обороты(&НачДата, &КонДата, Авто, ) КАК ДанныеТабельногоУчета
СГРУППИРОВАТЬ ПО
    ДанныеТабельногоУчета.ПериодМесяц,
    ДанныеТабельногоУчета.Сотрудник;

ВЫБРАТЬ
    Начисления.Сотрудник КАК Сотрудник,
    СУММА(Начисления.Результат) КАК Результат
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
    РегистрРасчета.Начисления КАК Начисления
ГДЕ
    Начисления.ПериодРегистрации МЕЖДУ &НачДата И &КонДата
СГРУППИРОВАТЬ ПО
    Начисления.Сотрудник;

Этап 2: Объединение и настройка СКД

После получения временных таблиц ВТ_Табель и ВТ_Начисления, мы выполняем левое соединение по сотруднику. Использование системы компоновки данных (СКД) является наиболее правильным подходом, так как она автоматически берет на себя управление группировками и итогами.

В настройках СКД выполните следующие действия:

Анализ проблем и поиск причин расхождений

Если вы наблюдаете расхождения в данных, проанализируйте следующие факторы:

1. Фильтрация по периоду регистрации: В РегистреРасчета.Начисления поле ПериодРегистрации всегда соответствует первому дню месяца. Если вы используете параметр ПериодРегистрации в условиях запроса, убедитесь, что передаете дату вида 01.01.2022, а не конец месяца.

2. Суммирование начислений: У одного сотрудника за месяц может быть несколько записей в регистре (оклад, премия, больничный). Не пытайтесь брать только одну запись — всегда используйте СУММА(Результат) в группировке по сотруднику, чтобы получить корректный общий доход.

3. Поиск \"удаленных\" сотрудников: Если под удаленными понимаются уволенные работники, добавьте условие проверки даты увольнения в справочнике Сотрудники. Если же это пометка в наименовании, используйте конструкцию ПОДОБНО \"%удал.%\".

Помните, что лучший способ проверки — это сравнение полученных данных с типовым отчетом Свод начислений и удержаний. Если ваш запрос дает те же показатели, что и типовой отчет, значит логика выборки настроена верно.

← На главную