Каждый бухгалтер по расчету заработной платы рано или поздно сталкивается с ситуацией, когда при расчете среднего заработка для отпуска программа 1С:ЗУП 3.1 некорректно заполняет количество отработанных календарных дней. Особенно часто это происходит в ситуациях, когда сотрудник отсутствовал практически весь месяц (например, находился на больничном), но программа упорно ставит за этот месяц полные 31 (или 30) календарный день. В результате средний заработок занижается, а расчет отпускных становится неверным.
В этой статье мы подробно разберем, почему возникает подобная ошибка, как устроена архитектура учета времени для среднего заработка в 1С:ЗУП 3.1, и рассмотрим три надежных способа исправления ситуации в зависимости от того, закрыт ли расчетный период.
Для того чтобы эффективно решать технические проблемы в 1С, необходимо понимать внутреннее устройство программы. Давайте проанализируем, где именно хранятся данные, которые впоследствии попадают в документ расчета отпуска или командировки.
Расчет среднего заработка в 1С:ЗУП 3.1 опирается на два ключевых регистра накопления:
Данные о начислениях для расчета среднего заработка (общий) — этот регистр аккумулирует информацию обо всех начисленных суммах, которые входят в расчетную базу.Данные о времени для расчета среднего (общий) — именно этот регистр отвечает за количество фактически отработанных рабочих дней и отработанных календарных дней.Основным документом, который производит расчет и делает итоговые движения по этим регистрам в конце каждого месяца, является документ Начисление зарплаты и взносов. При проведении этого документа программа выполняет сложный анализ всех зарегистрированных в текущем месяце отклонений (таких как больничные листы, отпуска, отпуска без сохранения оплаты, командировки). 1С вычитает эти исключаемые периоды из общего количества календарных дней месяца, а оставшийся остаток записывает в регистр времени в качестве отработанных календарных дней.
Выясним главную причину сбоя на практическом примере. Представим ситуацию: сотрудник болел с 2 по 31 июля. Июль начислен, зарплата сотрудника равна нулю, в табеле проставлены дни болезни. Однако при расчете отпуска в декабре за июль программа все равно показывает 31 календарный день.
Этот сбой происходит из-за нарушения последовательности проведения документов и несовпадения периодов начисления:
Начисление зарплаты и взносов за июль. На этот момент программа еще «не знает» о болезни сотрудника, так как документ Больничный лист еще не зарегистрирован в системе.Данные о времени для расчета среднего (общий) полные 31 календарный день, несмотря на то, что рабочих дней и начислений у сотрудника по факту ноль.Больничный лист, в котором месяц начисления указан как «Август», но период болезни — «Июль». При проведении этого больничного данные в регистре среднего заработка за июль автоматически не корректируются. Программа ожидает, что бухгалтер пересчитает июльский документ начисления зарплаты, но период уже закрыт, и делать перерасчет нежелательно.В результате при расчете будущего отпуска программа продолжает видеть старую запись в регистре времени за июль, где значатся полные 31 календарный день.
// Упрощенная логика формирования движений в регистре времени:
Если ДокументНачисленияЗарплаты.Проводится() Тогда
КалендарныеДни = ПолучитьКалендарныеДниМесяца();
ИсключаемыеДни = ПолучитьЗарегистрированныеОтклоненияЗаМесяц();
// Если больничный проведен позже начисления зарплаты,
// ИсключаемыеДни на момент расчета будут равны 0!
ОтработаноКалендарныхДней = КалендарныеДни - ИсключаемыеДни;
ЗаписатьВРегистрСреднегоЗаработка(ОтработаноКалендарныхДней);
КонецЕсли;
---
Рассмотрим подробнее, какими методами можно исправить неверное количество календарных дней в программе.
Если расчетный период (в нашем примере — июль) еще не закрыт окончательно и сдача отчетности позволяет вносить изменения, необходимо строго соблюдать последовательность ввода кадровых и расчетных документов.
Разберем этот процесс по шагам:
Отсутствие (болезнь, прогул, неявка). В поле «Месяц» укажите текущий месяц (июль). Укажите даты отсутствия и выберите причину «Болезнь (больничный еще не закрыт)» или «Отсутствие по невыясненной причине». Проведите документ.Начисление зарплаты и взносов за июль программа увидит это зарегистрированное кадровое вытеснение. При проведении начисления зарплаты из общего числа календарных дней июля будут вычтены дни неявки, и в регистр времени запишется корректное количество дней.Больничный лист, введите его в систему. Программа автоматически определит наложение периодов отсутствия и болезни, предупредит вас об этом и корректно «вытеснит» ранее зарегистрированную временную неявку оплачиваемым больничным листом без искажения регистров времени.Что делать, если период давно закрыт, отчетность сдана, и перепроводить или пересчитывать документы Начисление зарплаты и взносов за прошлые месяцы категорически нельзя? В 1С:ЗУП 3.1 для таких случаев предусмотрен специальный встроенный инструмент, о котором знают далеко не все расчетчики.
Проанализируем порядок действий с этим инструментом:
Этот сервисный инструмент в фоновом режиме анализирует все фактически введенные на текущий момент документы отклонений (включая больничные, проведенные «опоздавшими» месяцами) и автоматически корректирует записи в регистре накопления Данные о времени для расчета среднего (общий). При этом сами документы начисления зарплаты прошлых периодов не перепроводятся, проводки не меняются, а средний заработок в новых документах отпуска начинает рассчитываться абсолютно корректно!
Если вам нужно рассчитать отпуск срочно «здесь и сейчас», а времени на анализ последовательности проведения документов или запуск групповых обработок нет, вы можете внести изменения точечно в самом расчете отпуска.
Сделаем это по шагам:
Отпуск.Важное предупреждение: этот способ является временной мерой. Ручная корректировка сработает только в данном конкретном документе. Если в дальнейшем этому же сотруднику потребуется рассчитать командировку или другой отпуск, ошибка с календарными днями в этом месяце повторится, поэтому настоятельно рекомендуется использовать Способ 2 для окончательного исправления данных в базе.
---
Давайте разберем частую методологическую ошибку, которую допускают начинающие бухгалтеры. Очень часто при разборе подобных кейсов расчетчики удивляются: «Сотрудник болел весь месяц, почему программа после исправления документов ставит 1 календарный день вместо 0?»
Обратимся к нормативной базе. Согласно Положению № 922 «Об особенностях порядка исчисления средней заработной платы», из расчетного периода для отпускных исключаются только те периоды, когда работник освобождался от работы с полным или частичным сохранением заработной платы или получал пособие по временной нетрудоспособности (т.е. дни самого больничного листа).
Проанализируем конкретный календарный пример (июль 2018 года):
Программа абсолютно правильно рассчитывает формулу для этого неполного месяца. Количество календарных дней для расчета отпуска составит:
29,3 / 31 * 1 день = 0,95 дня.
Если бы программа установила 0 календарных дней за июль, это привело бы к искусственному завышению среднего заработка сотрудника, что является грубым нарушением порядка ведения учета и влечет за собой штрафные санкции при проверках трудовой инспекции.