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