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

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

Каждый бухгалтер по расчету заработной платы рано или поздно сталкивается с ситуацией, когда при расчете среднего заработка для отпуска программа 1С:ЗУП 3.1 некорректно заполняет количество отработанных календарных дней. Особенно часто это происходит в ситуациях, когда сотрудник отсутствовал практически весь месяц (например, находился на больничном), но программа упорно ставит за этот месяц полные 31 (или 30) календарный день. В результате средний заработок занижается, а расчет отпускных становится неверным.

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

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

Для того чтобы эффективно решать технические проблемы в 1С, необходимо понимать внутреннее устройство программы. Давайте проанализируем, где именно хранятся данные, которые впоследствии попадают в документ расчета отпуска или командировки.

Расчет среднего заработка в 1С:ЗУП 3.1 опирается на два ключевых регистра накопления:

  1. Данные о начислениях для расчета среднего заработка (общий) — этот регистр аккумулирует информацию обо всех начисленных суммах, которые входят в расчетную базу.
  2. Данные о времени для расчета среднего (общий) — именно этот регистр отвечает за количество фактически отработанных рабочих дней и отработанных календарных дней.

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

Почему возникает ошибка с «полным месяцем» (31 день)?

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

Этот сбой происходит из-за нарушения последовательности проведения документов и несовпадения периодов начисления:

  1. Сотрудник заболел в июле, но фактически принес больничный лист только в августе.
  2. В конце июля бухгалтер рассчитывает и проводит документ Начисление зарплаты и взносов за июль. На этот момент программа еще «не знает» о болезни сотрудника, так как документ Больничный лист еще не зарегистрирован в системе.
  3. Не найдя зарегистрированных отклонений на период болезни, документ начисления зарплаты за июль записывает в регистр Данные о времени для расчета среднего (общий) полные 31 календарный день, несмотря на то, что рабочих дней и начислений у сотрудника по факту ноль.
  4. В августе вводится и проводится документ Больничный лист, в котором месяц начисления указан как «Август», но период болезни — «Июль». При проведении этого больничного данные в регистре среднего заработка за июль автоматически не корректируются. Программа ожидает, что бухгалтер пересчитает июльский документ начисления зарплаты, но период уже закрыт, и делать перерасчет нежелательно.

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


// Упрощенная логика формирования движений в регистре времени:
Если ДокументНачисленияЗарплаты.Проводится() Тогда
    КалендарныеДни = ПолучитьКалендарныеДниМесяца();
    ИсключаемыеДни = ПолучитьЗарегистрированныеОтклоненияЗаМесяц();
    // Если больничный проведен позже начисления зарплаты, 
    // ИсключаемыеДни на момент расчета будут равны 0!
    ОтработаноКалендарныхДней = КалендарныеДни - ИсключаемыеДни; 
    ЗаписатьВРегистрСреднегоЗаработка(ОтработаноКалендарныхДней);
КонецЕсли;

---

Три способа решения проблемы в 1С:ЗУП 3.1

Рассмотрим подробнее, какими методами можно исправить неверное количество календарных дней в программе.

Способ 1. Восстановление последовательности и регистрация отсутствия (Лучшая практика)

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

Разберем этот процесс по шагам:

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

Способ 2. Использование сервисного механизма обновления среднего заработка (Без перепроведения документов)

Что делать, если период давно закрыт, отчетность сдана, и перепроводить или пересчитывать документы Начисление зарплаты и взносов за прошлые месяцы категорически нельзя? В 1С:ЗУП 3.1 для таких случаев предусмотрен специальный встроенный инструмент, о котором знают далеко не все расчетчики.

Проанализируем порядок действий с этим инструментом:

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

Этот сервисный инструмент в фоновом режиме анализирует все фактически введенные на текущий момент документы отклонений (включая больничные, проведенные «опоздавшими» месяцами) и автоматически корректирует записи в регистре накопления Данные о времени для расчета среднего (общий). При этом сами документы начисления зарплаты прошлых периодов не перепроводятся, проводки не меняются, а средний заработок в новых документах отпуска начинает рассчитываться абсолютно корректно!

Способ 3. Ручная корректировка расчета среднего заработка

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

Сделаем это по шагам:

  1. Откройте проблемный документ Отпуск.
  2. На вкладке Основное найдите поле Средний заработок и нажмите на расположенную рядом кнопку с изображением зеленого карандаша («Ввод данных для расчета среднего заработка»).
  3. В открывшейся форме найдите строку с проблемным месяцем.
  4. В колонке Отработано дней (календ.) вручную отредактируйте значение на правильное.
  5. Нажмите кнопку ОК. Документ пересчитает сумму отпускных исходя из введенных вами ручных данных.

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

---

Важный законодательный нюанс: почему календарных дней должно быть 1, а не 0?

Давайте разберем частую методологическую ошибку, которую допускают начинающие бухгалтеры. Очень часто при разборе подобных кейсов расчетчики удивляются: «Сотрудник болел весь месяц, почему программа после исправления документов ставит 1 календарный день вместо 0?»

Обратимся к нормативной базе. Согласно Положению № 922 «Об особенностях порядка исчисления средней заработной платы», из расчетного периода для отпускных исключаются только те периоды, когда работник освобождался от работы с полным или частичным сохранением заработной платы или получал пособие по временной нетрудоспособности (т.е. дни самого больничного листа).

Проанализируем конкретный календарный пример (июль 2018 года):

Программа абсолютно правильно рассчитывает формулу для этого неполного месяца. Количество календарных дней для расчета отпуска составит:

29,3 / 31 * 1 день = 0,95 дня.

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

← На главную