Почему не совпадают отработанные дни при расчете среднего заработка в 1С:ERP и ЗУП 3.1

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

Ситуация, когда при расчете отпускных или больничных количество отработанных дней в форме расчета среднего заработка не совпадает с данными табеля или начисления зарплаты, является одной из самых распространенных и при этом запутанных проблем в 1С:ERP и 1С:Зарплата и управление персоналом 3.1. Мы часто сталкиваемся с тем, что программа «рисует» полную норму дней (например, 20 дней пятидневки), хотя сотрудник отработал только часть месяца. Проанализируем причины этой магической арифметики и разберем по шагам, как найти и устранить корень проблемы.

Шаг 1. Проверка первичного источника данных — регистров накопления

Для начала нам необходимо выяснить, что именно «видит» программа в своих внутренних таблицах. В 1С:ERP данные для расчета среднего заработка хранятся не в документах начисления, а в специализированных регистрах. Рассмотрим основной из них — регистр накопления Данные о времени для расчета среднего (общий). Именно из него система тянет цифры в документ «Отпуск».

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

  1. Откроем регистр Данные о времени для расчета среднего (общий) (через функции технического специалиста или через ссылку в документе).
  2. Установим фильтр по нужному сотруднику и проблемному периоду (например, ноябрь).
  3. Сравним колонки отработанного времени. Если в регистре зафиксировано 20 дней вместо фактических 12, значит, записи в регистр попали некорректно в момент проведения документов начисления.

Также не забудем проверить регистр сведений Данные о расчете среднего заработка (корректировка). Иногда туда попадают ручные правки, которые перекрывают автоматический расчет. Если по сотруднику есть записи в этом регистре, их стоит проанализировать и, возможно, очистить.

Шаг 2. Анализ настроек видов начислений (вкладка Учет времени)

Выясним причину, почему данные в регистр попали неверно. Основным виновником чаще всего выступает настройка конкретного вида начисления. Рассмотрим механизм работы 1С: когда мы начисляем сотруднику какую-либо выплату, программа должна решить: регистрировать ли это время как рабочее для среднего заработка или нет.

Проанализируем настройки каждого начисления, которое было у сотрудника в проблемном месяце:

Важный нюанс: Если у сотрудника одновременно начислены «Оклад» и, например, «Премия расчетная», и у обоих видов начислений стоит настройка «За работу в пределах нормы времени», система может суммировать дни по обоим начислениям, что приведет к задвоению отработанного времени в расчете среднего.

Шаг 3. Иерархия видов использования рабочего времени

Теперь разберем, как связаны конкретные буквенные коды в табеле с системным понятием «Рабочее время». Посмотрим на справочник Виды использования рабочего времени. В 1С существует предопределенный элемент Рабочее время, который служит агрегатором для всех видов «явки».

Проанализируем ситуацию через универсальный отчет по справочнику Виды использования рабочего времени. Нам нужно проверить:

  1. Для каждого вида времени (Явка, Ночные, Работа в выходные) должно быть указано Основное время — Рабочее время.
  2. Если вы создавали свои виды времени, убедитесь, что они корректно входят в группу рабочего времени. Если связь нарушена, программа может игнорировать эти дни при заполнении регистров для среднего заработка.

Шаг 4. Поиск скрытых начислений через Универсальный отчет

Когда начислений много, трудно вручную определить, какое именно «портит» картину. Рассмотрим способ автоматизации поиска. Мы можем настроить универсальный отчет по регистру накопления Начисления удержания по сотрудникам в связке с настройками видов начислений.

Настроим отчет таким образом, чтобы увидеть:

Если в списке окажется более одного начисления с признаком «За работу в пределах нормы» за один и тот же период, мы нашли источник расхождения.

Шаг 5. Методы исправления данных

Если мы нашли ошибку в настройках или просто данные в регистре «зависли», воспользуемся следующими инструментами:

  1. Обновление данных для среднего заработка: Перейдем в раздел Зарплата — Сервис — Обновить данные для расчета среднего заработка. Выберем нужный месяц и организацию. Это заставит систему пересчитать записи в регистрах на основании актуальных настроек начислений.
  2. Пересчет документа «Начисление зарплаты»: Если обновление сервисом не помогло, попробуем перезаполнить и перепровести документ начисления за проблемный месяц. Иногда это необходимо для корректного вытеснения периодов.
  3. Технологический анализ: В крайних случаях, если расчет все равно не идет, стоит выполнить Тестирование и исправление (ТИИ) базы данных и очистку кша, так как возможны «фантомные» записи в таблицах итогов.

Пример анализа через запрос

Для программистов будет полезно проверить данные напрямую. Рассмотрим пример структуры запроса к регистру, который поможет быстро выявить аномалии:


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

Этот запрос покажет, какими документами (Регистраторами) были сделаны записи. Если вы видите там документы, которые уже помечены на удаление или не должны влиять на время (например, премии), это прямой сигнал к перепроведению начислений.

Резюмируем: Проблема расхождения дней всегда кроется в несоответствии между тем, что мы начислили, и тем, как эти начисления настроены в части учета времени. Тщательная проверка вкладки Учет времени в основных начислениях и регламентное обновление данных для среднего заработка решают эту проблему в 99% случаев.

← На главную