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