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

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

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

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

Разбор причины возникновения ошибки

Проанализируем ситуацию: в программе 1С:ЗУП 3.1 расчет начисления (например, «Оклад по часам») обычно выполняется по формуле:

Оклад * ВремяВЧасах / НормаЧасов

Рассмотрим, что происходит в октябре у сотрудника, который находится на межвахтовом отдыхе:

  1. Показатель ВремяВЧасах равен 0 (так как смен нет).
  2. Показатель НормаЧасов рассчитывается исходя из графика сотрудника. Если график на октябрь пустой, норма также становится равной 0.
  3. Программа пытается выполнить деление на 0, что вызывает фатальную ошибку при заполнении или расчете документа Начисление зарплаты и взносов.

Многие пытаются решить это «в лоб», подставляя единицу вместо нормы, но это в корне неверно, так как приведет к искажению сумм в те месяцы, когда сотрудник действительно работает. Выясним, как сделать это правильно.

Решение №1: Использование «Нормы по другому графику» (Методически верный способ)

Самый правильный способ с точки зрения методологии 1С — это настройка графика работы таким образом, чтобы норма времени никогда не была нулевой, даже если у сотрудника нет рабочих смен в конкретном месяце. Рассмотрим по шагам, как это реализовать:

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

Что это дает? Теперь в октябре, когда у сотрудника 0 рабочих часов по вахте, показатель НормаЧасов будет взят из «Пятидневки» (например, 176 часов). Формула примет вид: Оклад * 0 / 176 = 0. Ошибка исчезнет, а результат будет корректным.

Решение №2: Корректировка формулы начисления

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

Для этого в настройках начисления (раздел Настройка — Начисления) заменим стандартную формулу на конструкцию с условием:

?(НормаЧасов = 0, 0, Оклад * ВремяВЧасах / НормаЧасов)

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

Важный нюанс: Специалисты рекомендуют использовать более строгую проверку, чтобы исключить любые ошибки типизации данных:

?(НЕ НормаЧасов = 0, Оклад * ВремяВЧасах / НормаЧасов, 0)

Решение №3: Настройка суммированного учета рабочего времени

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

  1. В свойствах графика работы должен быть установлен флаг Суммированный учет рабочего времени.
  2. Обратим внимание на переключатель При определении нормы по суммированному учету использовать. Если выбрано «Данные этого графика», мы снова рискуем получить 0 в норме.
  3. Рекомендуется выбирать вариант Производственный календарь или Данные другого графика.

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

Решение №4: Проверка заполнения производственного календаря

Иногда корень проблемы кроется не в графике сотрудника, а в самой базе. Если Производственный календарь на текущий год не заполнен или заполнен с ошибками, показатель НормаЧасов может «обнуляться» непроизвольно.

Выясним, как это исправить:

Дополнительные советы по работе с вахтой

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

РазмерВахтовойНадбавки * ВремяВКалендарныхДнях

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

Резюме

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

← На главную