Как исправить ошибку «Деление на 0» при увольнении сотрудника в 1С:ЗУП 3.1

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

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

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

Почему возникает ошибка деления на ноль?

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

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

---

Пошаговая методика диагностики и устранения ошибки

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

Шаг 1. Проверка графика работы сотрудника

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

  1. Заполнение производственного календаря. Убедимся, что производственный календарь на текущий год заполнен и актуализирован. Без этого ни один график работы не сможет корректно рассчитать норму времени.
  2. Заполнение самого графика работы. Откроем график работы сотрудника и проверим, заполнены ли дни и часы в месяце увольнения. Если график не заполнен на текущий период, норма времени для сотрудника будет равна нулю.
  3. Графики неполного рабочего времени. Это одна из самых частых скрытых причин. Если сотрудник работает на неполную ставку, в настройках его графика обязательно должно быть указано, как именно рассчитывать норму. Рассмотрим этот механизм подробнее.

Если в настройках графика установлена галочка «Неполное рабочее время», но при этом в поле «Считать норму по другому графику» не выбран основной график полного рабочего времени (или выбран пустой, незаполненный график), система не сможет определить делитель. Показатель НормаДнейПоГрафикуПолногоРабочегоВремени превратится в ноль, и программа выдаст ошибку деления на 0 при попытке рассчитать оклад или надбавки.

Шаг 2. Проверка индивидуальных графиков и табелей

В практике учета бывают ситуации, когда основные графики заполнены верно, но расчет все равно сбоит. Проанализируем документы, которые имеют приоритет над основным графиком работы:

Шаг 3. Локализация проблемного начисления (метод исключения)

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

Рассмотрим, как быстро найти «виновное» начисление:

  1. Откроем документ увольнения сотрудника.
  2. Перейдем на вкладку «Начисления».
  3. Попробуем временно удалить из табличной части по очереди дополнительные начисления (надбавки, доплаты, премии), оставляя только чистый оклад, и каждый раз нажимать кнопку перерасчета.
  4. Как только расчет пройдет успешно без выдачи ошибки деления на 0, мы сразу поймем, какое именно начисление содержало некорректную формулу.

Шаг 4. Анализ и исправление формулы начисления

После того как проблемное начисление найдено (например, это может быть надбавка за стаж или доплата за особые условия труда), перейдем в меню «Настройки» — «Начисления», найдем этот вид расчета и изучим его формулу.

Часто пользователи случайно изменяют типовые формулы или создают свои собственные, путая показатели. Например, вместо показателя НормаДней ошибочно используют НормаДнейПоГрафикуПолногоРабочегоВремени для сотрудника, у которого нет привязки к полному графику. В результате показатель возвращает ноль, вызывая ошибку.

Для исправления ситуации вернем формулу начисления к типовому виду или заменим ошибочный показатель нормы времени на корректный.

---

Как сделать формулы безопасными: защита от деления на ноль

Чтобы полностью обезопасить расчетную базу от подобных ошибок в будущем, профессиональные разработчики и аналитики рекомендуют использовать в формулах 1С специальные защитные конструкции. Рассмотрим два эффективных метода.

Метод 1. Использование функции «Макс»

Функция Макс(Значение1, Значение2) возвращает наибольшее из двух указанных чисел. Мы можем использовать ее в знаменателе формулы. Если норма времени будет определена системой как ноль, функция принудительно подставит единицу, расчет завершится успешно, а расчетчик сможет спокойно увидеть логическую ошибку в итоговой сумме без вылета программы.

Сравним обычную формулу и безопасную:

Обычная формула, подверженная ошибке:

Результат = Оклад * ВремяВДнях / НормаДней

Безопасный вариант с функцией Макс:

Результат = Оклад * ВремяВДнях / Макс(НормаДней, 1)

В данном случае, если НормаДней окажется равной 0, система разделит значение на 1. Ошибка деления на ноль не возникнет.

Метод 2. Использование условия «Выбор»

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

Для этого в редакторе формул 1С используется конструкция вопросительного знака:

Результат = ?(НормаДней = 0, 0, Оклад * ВремяВДнях / НормаДней)

Разберем, как работает эта конструкция:

---

Влияние версии платформы и релизов конфигурации

Стоит отметить, что в старых релизах программы (например, в линейке 3.1.8) платформа выдавала исключительно техническое системное сообщение: «Ошибка деления на 0». Это сильно затрудняло поиск проблемы рядовыми пользователями.

В современных версиях конфигурации «1С:Зарплата и управление персоналом» (начиная с релизов 3.1.10 и выше) разработчики добавили внутренние проверки. Теперь при возникновении подобных ситуаций программа чаще всего выдает более информативное и понятное сообщение, например: «Для начисления "Надбавка за стаж" не определен показатель нормы времени...». Если вы до сих пор работаете на устаревшем релизе, настоятельно рекомендуем выполнить обновление конфигурации до актуальной версии.

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

← На главную