Другое · 10 мин
Ошибка «деление на 0» в 1С ЗУП: как найти причину и исправить
Почему в 1С ЗУП возникает ошибка «деление на 0» при расчёте зарплаты и отчётности. Пошаговое исправление: настройки, кадровые данные, формулы, обновления.
Ошибка «Деление на значение 0» в 1С ЗУП чаще всего появляется при расчёте зарплаты, среднего заработка, отпускных или при формировании отчётов. Программа пытается разделить сумму начислений на норму времени, количество дней или другое значение, которое оказалось равным нулю. Это не сбой платформы, а следствие неполных или некорректных данных в базе.
Типичные источники проблемы: у сотрудника нет графика работы, не заполнен показатель в формуле начисления, нулевой расчётный период для среднего заработка, некорректно настроен вид расчёта после доработки конфигурации. Реже ошибку вызывают баги конкретного релиза, которые устраняются обновлением.
Исправить ошибку можно самостоятельно: нужно определить, в каком документе и при какой операции она возникает, найти нулевое значение и заполнить недостающие данные. Ниже разобраны основные сценарии и порядок действий для каждого.
Где именно возникает ошибка: определяем источник
Первый шаг — локализовать проблему. Ошибка деления на ноль почти всегда привязана к конкретному документу, сотруднику или виду расчёта. Если сбой происходит при расчёте зарплаты, откройте документ «Начисление зарплаты и взносов» и рассчитывайте сотрудников по одному: так вы быстро найдёте того, на ком расчёт падает.
Если ошибка возникает при формировании отчёта (например, расчётного листка или справки о среднем заработке), проверьте, за какой период строится отчёт и есть ли в этом периоде хотя бы одно начисление или отработанный день у сотрудника. Полностью пустой период — частая причина деления на ноль в отчётах.
Обратите внимание на полный текст сообщения об ошибке. В нём часто указан модуль и строка кода, например «ОбщийМодуль.РасчетЗарплаты.Модуль». Это подсказка для программиста: по номеру строки в конфигураторе можно точно определить, какое значение оказалось нулевым.
График работы, норма времени, показатели начисления конкретного сотрудника
Заработок и отработанные дни за расчётный период среднего заработка
Наличие начислений и движений по сотруднику за выбранный интервал
Информацию об исправлениях в следующих версиях конфигурации
Сотрудник без графика работы или с нулевой нормой времени
Самая распространённая причина: у сотрудника в приёме на работу или кадровом переводе не указан график работы. Тогда при расчёте оклада по норме времени программа пытается разделить оклад на норму дней, а норма равна нулю — и возникает ошибка.
Откройте карточку сотрудника, перейдите по ссылке к кадровым документам и проверьте, какой график указан в последнем приёме или переводе. Если поле пустое, отредактируйте документ: выберите действующий график из справочника «Графики работы сотрудников» и перепроведите документ.
Вторая ситуация — график назначен, но сам график не заполнен на нужный месяц. Откройте справочник графиков, найдите используемый график и проверьте, заполнен ли он на период расчёта. Если календарь графика пуст, заполните его по шаблону (пятидневка, сменный и т.д.) и пересчитайте зарплату.
- 1Определите сотрудника, на котором падает расчёт, рассчитывая документ построчно
- 2Откройте приём на работу или кадровый перевод и проверьте поле «График работы»
- 3Если график не указан — выберите его и перепроведите документ
- 4Откройте сам график и убедитесь, что он заполнен на расчётный месяц
- 5Пересчитайте документ начисления зарплаты и убедитесь, что ошибка исчезла
Нулевой расчётный период при расчёте среднего заработка
Отпускные, командировочные, компенсации при увольнении и больничные рассчитываются от среднего заработка. Если за расчётный период (обычно 12 предшествующих месяцев) у сотрудника нет ни одного начисления или отработанного дня, программа делит на ноль.
Такое бывает с новыми сотрудниками, принятыми в текущем месяце, с работниками после длительного отпуска без сохранения зарплаты или после отпуска по уходу за ребёнком. Также причина может быть в том, что расчётный период сдвинут вручную на интервал без данных.
Откройте документ (например, «Отпуск»), нажмите кнопку с подсказкой по среднему заработку и посмотрите таблицу расчётного периода. Если все строки пустые, проверьте: дату приёма сотрудника, наличие проведённых начислений за прошлые месяцы, корректность периода. Для нового сотрудника средний заработок должен считаться от фактически отработанных дней или от оклада — при правильно заполненных кадровых данных программа сделает это автоматически.
Ошибки в формулах начислений и незаполненные показатели
Если в формуле вида расчёта используется деление на показатель (например, «Оклад / НормаДней * ВремяВДнях» или деление на пользовательский показатель), а показатель равен нулю или не задан, расчёт завершится ошибкой. Это часто проявляется после добавления нового начисления или изменения формулы.
Откройте раздел «Настройка — Начисления», найдите проблемный вид расчёта и изучите формулу. Определите, какие показатели участвуют в делении. Затем проверьте, введены ли значения этих показателей для сотрудника: документами «Данные для расчёта зарплаты», в кадровых документах или как постоянные показатели.
Если показатель вводится ежемесячно и в текущем месяце его забыли заполнить, введите значение и пересчитайте документ. Если показатель не нужен для части сотрудников, имеет смысл доработать формулу, добавив проверку на ноль через условие, либо настроить назначение начисления только тем, у кого показатель задан.
Ошибка после обновления или доработки конфигурации
Если ошибка появилась сразу после обновления релиза и раньше расчёт проходил нормально, возможны два варианта: в новой версии изменилась логика расчёта и старые данные ей не соответствуют, либо это ошибка самого релиза. Проверьте описание изменений версии и список исправленных ошибок в следующих обновлениях.
Для доработанной конфигурации ошибка деления на ноль нередко находится в собственном коде: внешних обработках, доработанных модулях, дополнительных отчётах. Признак — упоминание в тексте ошибки нестандартного модуля или внешней обработки. В этом случае исправление должен выполнять программист: добавить проверку делителя перед операцией деления.
Пример безопасной конструкции в коде: перед делением проверять, что делитель не равен нулю, и при нулевом значении возвращать 0 или пропускать расчёт с понятным сообщением пользователю. Это исключает падение расчёта целого документа из-за одной строки.
Если НормаДней <> 0 Тогда
Результат = Оклад / НормаДней * ОтработаноДней;
Иначе
Результат = 0;
КонецЕсли;Проверка результата и профилактика
После исправления пересчитайте проблемный документ полностью и сверьте итоги: суммы по сотруднику должны соответствовать ожидаемым, а не просто «посчитаться без ошибки». Сформируйте расчётный листок и проверьте, что норма времени, отработанные дни и показатели отображаются корректно.
Для профилактики перед каждым расчётом зарплаты используйте типовые средства контроля: отчёт по сотрудникам без графиков, проверку заполнения показателей, анализ незаполненных данных. Регулярно обновляйте конфигурацию — многие ошибки расчёта исправляются в свежих релизах.
Как проверить результат
Документ рассчитывается без сообщений об ошибке
Ошибка повторяется на том же или другом сотруднике
Заполнены норма дней, отработанное время, корректные суммы
Пустые показатели или явно заниженные суммы
График назначен и заполнен на расчётный месяц
График отсутствует или календарь пуст
В расчётном периоде есть начисления или дни
Все строки расчётного периода нулевые
Частые вопросы
Ошибка «деление на 0» возникает только у одного сотрудника. Что проверить в первую очередь?
Откройте его последний кадровый документ и проверьте график работы, затем — заполненность самого графика на текущий месяц. Если сотрудник новый, проверьте дату приёма и наличие отработанных дней в расчётном периоде.
Можно ли исправить ошибку, просто введя сумму вручную в документе?
Технически можно, но делать этого не стоит: ручная правка исказит базу для взносов, НДФЛ и последующих расчётов среднего заработка. Правильный путь — заполнить первичные данные (график, показатели, начисления прошлых периодов) и дать программе пересчитать сумму автоматически.
Ошибка появилась после обновления ЗУП. Это баг релиза?
Возможно. Проверьте описание изменений установленной версии и список исправлений в следующих релизах. Если ошибка подтверждается как ошибка разработчиков, решение — установить обновление с исправлением. До этого используйте обходной путь: проверьте и заполните данные, которые новая версия стала контролировать строже.
Ошибка возникает в доработанном отчёте или обработке. Кто должен исправлять?
Программист, ответственный за доработки. В код нужно добавить проверку делителя на ноль перед операцией деления и обработку ситуации с пустыми данными. Самостоятельно без доступа к конфигуратору такую ошибку не устранить.
Почему ошибка возникает при расчёте отпуска сразу после приёма сотрудника?
Расчётный период среднего заработка пуст — сотрудник ещё не получал начислений. Проверьте корректность даты приёма и кадровых данных: при правильном заполнении программа рассчитает средний заработок от оклада или фактически отработанных дней текущего месяца.
Как найти всех сотрудников с потенциальной проблемой до расчёта зарплаты?
Сформируйте список сотрудников без назначенного графика работы через кадровые отчёты, проверьте заполненность графиков на расчётный месяц и наличие значений обязательных показателей начислений. Это позволит устранить причины до массового расчёта.
Что важно запомнить
Ошибка «деление на 0» в 1С ЗУП — следствие пустых данных, а не сбоя программы. Найдите сотрудника и документ, где возникает сбой, проверьте график работы, расчётный период среднего заработка и показатели формул, заполните пропуски и пересчитайте документ. Не исправляйте проблему ручным вводом сумм — это искажает учёт.