При расчете документа «Начисление зарплаты и взносов» за апрель (или май) 2020 года многие пользователи программы 1С:Зарплата и управление персоналом 3.1 столкнулись с критической ошибкой: «Деление на 0». Эта проблема парализует работу бухгалтерии, так как расчет по сотруднику просто не выполняется. Проанализируем ситуацию и разберем по шагам, почему возникает эта ошибка и как ее правильно устранить.
Для начала проанализируем типовую формулу начисления Оплата по окладу, которая обычно выглядит следующим образом:
Оклад * ДоляНеполногоРабочегоВремени * ВремяВДнях / НормаДней
Математически деление на ноль происходит в том случае, если показатель НормаДней равен нулю. В обычных условиях норма дней всегда положительна, однако апрель 2020 года стал исключительным из-за Указов Президента о нерабочих днях с сохранением заработной платы. В обновлении программы 1С был введен новый вид времени — «ОН» (Оплачиваемые нерабочие дни). Если программа настроена таким образом, что эти дни не должны учитываться в норме рабочего времени, то для графиков типа «Пятидневка» вся норма за апрель обнуляется, так как рабочих дней (с кодом «Явка») в этом месяце фактически не остается. В результате знаменатель формулы становится равен нулю.
Самый правильный и методически верный способ решения проблемы — включение специализированной настройки, которую разработчики 1С добавили специально для корректного отражения «путинских» выходных. Рассмотрим, как это сделать:
После установки этой настройки время с кодом «ОН» начнет включаться в показатели НормаДней и ВремяВДнях. Таким образом, знаменатель перестанет быть нулевым, и расчет пройдет успешно. Не забудьте после изменения настройки пересчитать документ начисления зарплаты.
Если настройка включена, но ошибка сохраняется, нам необходимо проверить «фундамент» кадрового учета — графики. Разберем алгоритм проверки:
Рассмотрим ситуацию, когда общие графики настроены верно, но по конкретным сотрудникам все равно возникает «Деление на 0». Выясним, нет ли в системе документа «Индивидуальный график».
Этот документ имеет приоритет над общим графиком. Если он был создан в начале месяца (до обновления программы или до настройки календарей), в нем могли зафиксироваться пустые значения или только выходные дни («В»). Проанализируем список документов за апрель 2020 года. Если такой документ найден, его необходимо либо перезаполнить, чтобы в нем отразилось время «ОН» или «Я», либо просто отменить проведение (удалить), чтобы расчет опирался на основной график работы.
В некоторых случаях, когда необходимо быстро рассчитать зарплату и нет времени разбираться в хитросплетениях графиков, можно прибегнуть к изменению самой формулы начисления. Рассмотрим, как обезопасить формулу от деления на ноль с помощью условия.
В настройках начисления «Оплата по окладу» изменим формулу на следующую:
?(НормаДней = 0, 0, Оклад * ДоляНеполногоРабочегоВремени * ВремяВДнях / НормаДней)
Разберем, как работает эта конструкция:
?() проверяет условие.НормаДней действительно равна 0, программа просто присвоит результату значение 0, не пытаясь выполнить деление.Важное предупреждение: Использование этого способа является «костылем». Если вы просто обнулите результат при нулевой норме, бухгалтер получит нулевую сумму начисления и не поймет, почему сотрудник остался без зарплаты. Кроме того, это может негативно повлиять на расчет среднего заработка для будущих отпусков и командировок.
Проанализируем ситуацию в долгосрочной перспективе. Просто убрать ошибку «Деление на 0» — это лишь половина задачи. Правильное использование механизма «Оплачиваемых нерабочих дней» (через настройку из Способа 1) гарантирует, что эти дни и суммы будут корректно учтены в будущем.
Согласно законодательству, периоды «ОН» и начисленные за них суммы должны исключаться из расчета среднего заработка. Если вы решите проблему простым проставлением «Явок» (как будто сотрудники работали), вы завысите отработанное время, что приведет к занижению среднего заработка при расчете будущих отпускных. Поэтому настоятельно рекомендуем использовать штатный механизм учета нерабочих дней, предоставляемый платформой 1С:Предприятие 8.3.
Таким образом, для решения проблемы последовательно проверяем: