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