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

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

Каждый бухгалтер или расчетчик заработной платы в программах 1С:Зарплата и управление персоналом или 1С:Зарплата и кадры государственного учреждения (редакция 3.1) хотя бы раз сталкивался с ситуацией, когда при проведении документа «Начисление зарплаты и взносов» программа выдает критическую ошибку: «Деление на 0». Эта ошибка полностью блокирует расчет и не позволяет провести документ.

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

В чем экономический и математический смысл ошибки?

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

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

Или при расчете по часам:

Результат = Оклад * ВремяВЧасах / НормаЧасов

Математическое правило запрещает деление на ноль. Если в формуле показатель нормы времени (НормаДней или НормаЧасов) по какой-то причине равен нулю, движок платформы 1С прерывает расчет и выдает сообщение об ошибке. Наша задача — выяснить, почему показатель нормы времени для конкретного сотрудника оказался пустым.

---

Шаг 1. Проверяем и заполняем Производственный календарь

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

Давайте разберем по шагам, как это исправить:

  1. Перейдем в раздел Настройка, далее найдем пункт Производственные календари.
  2. Откроем основной производственный календарь (по умолчанию он называется «Российская Федерация» или региональный, если в вашей области действуют особые праздничные дни).
  3. Проверим текущий год расчета. Если дни не размечены цветом, нажмем кнопку Заполнить по умолчанию.
  4. Обязательно нажмем кнопку Записать и закрыть.

---

Шаг 2. Заполнение и перепроведение графика работы сотрудника

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

Проанализируем ситуацию совместно:

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

---

Шаг 3. Анализ индивидуальных графиков и документа «Табель»

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

Рассмотрим два таких документа:

---

Шаг 4. Устранение дублирования показателей и ошибок в пользовательских формулах

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

Выясним причину этой проблемы:

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

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

Рассмотрим пример модернизации формулы. Предположим, у вас есть формула:

Результат = ФиксированнаяСумма * ВремяВЧасах / НормаЧасов

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

Результат = ФиксированнаяСумма * ВремяВЧасах / Макс(НормаЧасов, 1)

Или можно применить логическое условие выбора:


Результат = Выбор Когда НормаЧасов = 0 Тогда 0 Иначе (ФиксированнаяСумма * ВремяВЧасах / НормаЧасов) Конец

Внедрение таких конструкций застрахует ваши расчеты от внезапных остановок из-за незаполненных кадровых сведений.

---

Шаг 5. Ошибки автоматического перерасчета прошлых периодов (декретницы)

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

Проанализируем, почему так происходит:

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

Решение проблемы:

  1. Перейдите в раздел Зарплата — Сервис — Перерасчеты.
  2. Посмотрите, зарегистрированы ли там автоматические перерасчеты по «проблемным» сотрудникам.
  3. Если эти перерасчеты неактуальны или ошибочны, выделите строки и нажмите кнопку Отменить (или удалите их из списка). После этого попробуйте провести начисление зарплаты снова.

---

Шаг 6. Сбой кэша платформы 1С

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

Выполним техническую очистку системы:

  1. Закройте программу 1С.
  2. Удалите базу из списка запуска в окне 1С:Предприятия и добавьте ее заново (это самый простой способ полностью очистить временный кэш метаданных для этой базы).
  3. Если база файловая, запустите ее в режиме Конфигуратор.
  4. Перейдите в меню Администрирование — Тестирование и исправление.
  5. Установите галочки напротив пунктов Реиндексация таблиц информационной базы и Пересчет итогов, после чего нажмите Выполнить.

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

← На главную