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