Почему в 1С при расчете отпуска неверно определяются отработанные календарные дни

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

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

Анализ механизма расчета календарных дней

Для начала вспомним, как программа определяет количество календарных дней для среднего заработка. Согласно законодательству, если месяц отработан полностью, берется коэффициент 29.3. Если же месяц отработан не полностью, расчет производится по формуле: 29.3 / Количество календарных дней месяца * Количество отработанных календарных дней.

Проблема, описанная в ситуации, заключается в том, что в регистр Данные о времени для расчета среднего (общий) попадают неверные значения. Вместо фактически отработанных дней (например, 4 дня) программа записывает полный календарный месяц (31 день). Рассмотрим подробнее, где именно может происходить сбой.

Проверка регистра данных о времени

Основным источником информации для расчета среднего заработка в ЗУП 3.1 является регистр накопления Данные о времени для расчета среднего (общий). Данные в этот регистр записываются в момент проведения документа Начисление зарплаты и взносов.

Проанализируем ситуацию через Функции для технического специалиста (или через просмотр движений документа начисления):

  1. Откроем документ Начисление зарплаты и взносов за проблемный месяц.
  2. Перейдем в движения документа (кнопка Дт/Кт или через меню Еще - Показать движения документа).
  3. Найдем вкладку регистра Данные о времени для расчета среднего (общий).
  4. Проверим колонки Календарные дни и Отработано (дней).

Если в этом регистре зафиксировано 31 день при наличии проведенного больничного, значит, механизм "вытеснения" или распределения времени сработал некорректно.

Настройка приоритетов начислений (вытеснение)

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

  1. Зайдем в раздел Настройка - Начисления.
  2. Найдем основное начисление сотрудника (например, Оплата по окладу).
  3. Перейдем на закладку Приоритет.
  4. В правой колонке Начисления, приоритет которых выше обязательно должны быть указаны все виды отсутствий: Больничный, Отпуск основной, Отпуск без сохранения оплаты, Командировка и другие.

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

Использование сервисной обработки обновления данных

Если настройки приоритетов верны, но данные в регистре за прошлые периоды (например, за 2019 год) все равно неверны, перепроведение документов может не помочь, особенно если в базе накопилось много изменений. В этом случае воспользуемся специальным инструментом:

  1. Перейдем в раздел Зарплата - Сервис - Обновить данные для расчета среднего заработка.
  2. Укажем период (весь 2019 год).
  3. Выберем конкретную организацию или сотрудника (если проблема локальна).
  4. Нажмем Выполнить.

Эта обработка принудительно пересчитывает записи в регистре Данные о времени для расчета среднего (общий) на основании фактически зарегистрированных документов отсутствия и графиков работы, не требуя ручного перепроведения каждого документа Начисление зарплаты.

Проверка графиков работы и табелей

Иногда корень проблемы кроется в самом графике работы. Посмотрим на настройки графика за 2019 год:

Исправление данных через документ "Ввод данных для расчета среднего заработка"

В ситуациях, когда база данных имеет технические повреждения или данные за прошлые годы были перенесены из других программ (например, из ЗУП 2.5) с ошибками, стандартные способы могут не сработать. Для таких случаев в 1С предусмотрен механизм ручной корректировки.

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

  1. Перейдем в Функции для технического специалиста (или Все функции).
  2. Найдем документ Ввод данных для расчета среднего заработка.
  3. Создадим новый документ, выберем сотрудника.
  4. На закладке Отработано времени мы можем вручную указать правильное количество календарных и рабочих дней за любой месяц 2019 года.

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

Техническое обслуживание базы данных

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

  1. Чистка кэша: Удалите базу из списка и добавьте ее заново или очистите папку %AppData%\1C\1Cv8. Часто некорректное отображение данных в формах связано именно с устаревшим кэшем метаданных.
  2. Тестирование и исправление: Запустите конфигуратор, выберите Администрирование - Тестирование и исправление. Обязательно выберите пункты Реиндексация таблиц и Пересчет итогов.
  3. Утилита chdbfl.exe: Для файловых баз полезно прогнать файл 1Cv8.1CD через стандартную утилиту проверки физической целостности, которая находится в папке bin платформы.

Резюме

Для исправления ошибки с отработанными календарными днями мы рекомендуем придерживаться следующего алгоритма:

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

← На главную