При переводе сотрудника с оплаты по дням на оплату по часам (или при назначении нового начисления в документе Кадровый перевод) пользователи могут столкнуться с ситуацией, когда при заполнении строки оплаты или проведении документа программа выдает ошибку «деление на 0». При анализе ситуации в отладчике выясняется, что показатель нормы времени принимает значение 0, даже если график работы сотрудника полностью заполнен. Разберем по шагам причины такого поведения системы и рассмотрим способы исправления ошибки.
Самая распространенная скрытая причина, особенно после переноса данных из предыдущих версий программы (например, из 1С:ЗУП 2.5 или 1С:ЗиК 7.7) либо после ручной настройки начислений пользователями — появление дубликата системного показателя.
Выясним механизм возникновения сбоя: при создании начисления в формулу расчета подставляется показатель с типовым наименованием (например, НормаЧасов), однако в справочнике Показатели расчета зарплаты создается дублирующий пользовательский элемент. Если у этого дубликата установлен флаг скрытия (не отображать в списке), программа вместо предопределенного показателя времени использует пользовательский, значение которого при оперативном расчете планового ФОТ не определяется и остается равным 0.
Для исправления ситуации выполним следующие действия:
НормаЧасов).ВремяВЧасах и НормаЧасов (или типовую формулу Оклад * ВремяВЧасах / НормаЧасов).Если в организации используется нестандартная формула расчета начисления, в момент проведения кадрового документа система производит расчет совокупной тарифной ставки и планового ФОТ. Если на дату документа плановая норма времени не может быть рассчитана, возникает исключительная ситуация.
Проанализируем возможность защиты формулы расчета. В редакторе формул начисления можно применить условные операторы и встроенные функции, чтобы гарантировать отсутствие деления на 0 при пустых значениях показателя:
Оклад * ВремяВЧасах / ВЫБОР КОГДА НормаЧасов = 0 ТОГДА 1 ИНАЧЕ НормаЧасов КОНЕЦ
Либо с использованием функции выбора максимального значения:
Оклад * ВремяВЧасах / Макс(НормаЧасов, 1)
Такой подход защищает систему от блокирующих ошибок при проведении кадровых документов в переходные периоды или при нетиповых перерасчетах.
Если показатели и формулы настроены корректно, проверим настройки рабочего времени сотрудника:
Индивидуальный график с нулевыми часами на расчетный месяц. Если в настройках расчета зарплаты включен расчет нормы при смене графика по индивидуальному графику, пустой документ приведет к обнулению нормы.Рассмотрим варианты регистрации изменений в начислениях, если кадровые данные (подразделение, должность, график) остаются прежними:
Если после переноса данных в документе отображаются строки со значением <Объект не найден>, рекомендуется выполнить процедуру Тестирование и исправление информационной базы в режиме Конфигуратор с включенной проверкой логической и ссылочной целостности.