При работе в программе 1С:Зарплата и Управление Персоналом (ЗУП 3.1) мы периодически сталкиваемся с системными предупреждениями, прерывающими рабочий процесс. Разберем ситуацию, когда при расчете или изменении штатного расписания система выдает ошибку: «Не удалось определить период расчета среднего заработка, так как <Объект не найден> (длинный код) не принят на работу» с указанием на ОбщийМодуль.УчетСреднегоЗаработка.Модуль(799).
Часто такая проблема проявляется в документе «Изменение штатного расписания» в момент нажатия кнопки «Изменить начисление сотрудников» или при попытке добавить новое начисление в элементе «Должность». Проанализируем причину возникновения этого сбоя и рассмотрим по шагам несколько надежных способов ее решения.
Длинный код в скобках (GUID) в тексте ошибки — это уникальный идентификатор записи, которой физически больше нет в вашей базе данных. Система пытается рассчитать фонд оплаты труда (ФОТ) или средний заработок для штатной единицы и «считает», что к ней привязан конкретный сотрудник. Однако ссылка ведет в пустоту.
Рассмотрим подробнее основные причины возникновения этой ситуации:
<Объект не найден>, блокируя механизм расчета.Посмотрим на самое быстрое и частое решение, которое помогает при сбоях такого рода. Поскольку ошибка может быть вызвана банальным «залипанием» кэша, выполним следующие шаги:
Разберем очень изящный метод решения проблемы без программирования. Если ошибка появляется в конкретном начислении (например, «Оплата по окладу» или «Доплата за вредность»), мы можем принудительно заставить систему перестроить дерево зависимостей.
Предположим, наша формула выглядит так:
Макс(СреднийЗаработокОбщий * КалендарныеДниМесяцаБезПраздников, УчитыватьМРОТ * МРОТ) / КалендарныеДниМесяцаБезПраздников * КоличествоДнейОтпуска * КоэффициентИндексацииСреднегоЗаработка
Выполним следующие действия:
СреднийЗаработокОбщий.СреднийЗаработокОбщий на его законное место в формуле.Почему это работает? Когда мы удаляем и возвращаем ключевой показатель, система обновляет кэшированные данные начисления и перестраивает связи «с нуля». Битая ссылка, хранящаяся в недрах настроек, заменяется актуальной.
Проанализируем ситуацию в документе «Изменение штатного расписания». Вместо того чтобы редактировать формулы начислений, иногда достаточно просто «передернуть» (перевыбрать) реквизит.
Это действие заставляет программу 1С инициализировать строку заново и программно пересчитать показатели, сбрасывая временные таблицы с ошибочными GUID-ами.
Если предыдущие методы не сработали, проблема кроется глубоко в данных. Рассмотрим, как найти «застрявший» идентификатор:
<Объект не найден>).ДанныеОСотрудникахДляРасчетаСреднегоЗаработка. Если в нем зависли записи по уволенным сотрудникам с пустыми ссылками или некорректными датами, их необходимо очистить.В завершение напомним, что в модуле УчетСреднегоЗаработка разработчики 1С периодически исправляют ошибки алгоритмов. Начиная с релизов 3.1.14+, в программный код были добавлены проверки на пустые ссылки перед стартом расчета.
Если вы работаете на устаревшем релизе (например, 3.1.11, как упоминалось в исходной проблеме), настоятельно рекомендуем выполнить обновление базы данных до актуальной версии. Это автоматически исключит запуск расчета ФОТ и среднего заработка для вакансий и избавит вас от возникновения данной ошибки в будущем.