Как исправить ошибку «Не удалось определить период расчета среднего заработка: Объект не найден» в 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

При работе в программе 1С:Зарплата и Управление Персоналом (ЗУП 3.1) мы периодически сталкиваемся с системными предупреждениями, прерывающими рабочий процесс. Разберем ситуацию, когда при расчете или изменении штатного расписания система выдает ошибку: «Не удалось определить период расчета среднего заработка, так как <Объект не найден> (длинный код) не принят на работу» с указанием на ОбщийМодуль.УчетСреднегоЗаработка.Модуль(799).

Часто такая проблема проявляется в документе «Изменение штатного расписания» в момент нажатия кнопки «Изменить начисление сотрудников» или при попытке добавить новое начисление в элементе «Должность». Проанализируем причину возникновения этого сбоя и рассмотрим по шагам несколько надежных способов ее решения.

Выясним причину: откуда берутся «призрачные» ссылки?

Длинный код в скобках (GUID) в тексте ошибки — это уникальный идентификатор записи, которой физически больше нет в вашей базе данных. Система пытается рассчитать фонд оплаты труда (ФОТ) или средний заработок для штатной единицы и «считает», что к ней привязан конкретный сотрудник. Однако ссылка ведет в пустоту.

Рассмотрим подробнее основные причины возникновения этой ситуации:

  1. Кэширование данных: Временные файлы 1С (кэш) сохранили устаревшие данные о связи начислений и сотрудников, которые уже были удалены или изменены.
  2. Программная ошибка релиза: В релизах ЗУП 3.1.10 и 3.1.11 наблюдалась признанная ошибка. Программа пыталась рассчитать средний заработок для вакансий (там, где его быть не должно), натыкаясь на пустую ссылку.
  3. Настройки штатного расписания: В составе начислений для вакантной позиции указаны показатели, зависящие от среднего заработка. Алгоритм пытается найти сотрудника для тестового расчета и терпит неудачу.
  4. Ограничение прав доступа (RLS): Пользователь может не иметь прав на просмотр определенного физического лица. 1С интерпретирует это как <Объект не найден>, блокируя механизм расчета.
  5. Объединение дублей: После свертки дублей сотрудников или физических лиц в регистрах могли остаться неактуальные ссылки на «схлопнутые» объекты.

Способ 1. Очистка кэша и тестирование базы

Посмотрим на самое быстрое и частое решение, которое помогает при сбоях такого рода. Поскольку ошибка может быть вызвана банальным «залипанием» кэша, выполним следующие шаги:

  1. Закроем программу 1С на проблемном рабочем месте.
  2. Удалим информационную базу из списка баз (кнопка «Удалить» в окне запуска). Внимание: физически база не удалится, удаляется лишь ярлык.
  3. Добавим базу в список заново, указав к ней правильный путь. Это действие принудительно создаст новые папки кэша на компьютере.
  4. Если очистка кэша не помогла, выполним Тестирование и исправление (ТиИ) базы через Конфигуратор (раздел «Администрирование»). Обязательно сделаем резервную копию перед этой процедурой!

Способ 2. Обновление формулы начисления (Перестройка зависимостей)

Разберем очень изящный метод решения проблемы без программирования. Если ошибка появляется в конкретном начислении (например, «Оплата по окладу» или «Доплата за вредность»), мы можем принудительно заставить систему перестроить дерево зависимостей.

Предположим, наша формула выглядит так:


Макс(СреднийЗаработокОбщий * КалендарныеДниМесяцаБезПраздников, УчитыватьМРОТ * МРОТ) / КалендарныеДниМесяцаБезПраздников * КоличествоДнейОтпуска * КоэффициентИндексацииСреднегоЗаработка

Выполним следующие действия:

  1. Откроем настройки проблемного начисления.
  2. Перейдем к редактированию формулы.
  3. Временно удалим из формулы показатель СреднийЗаработокОбщий.
  4. Сохраним начисление (кнопка «Записать и закрыть»).
  5. Снова зайдем в настройки этого начисления и вернем удаленный показатель СреднийЗаработокОбщий на его законное место в формуле.
  6. Снова сохраним изменения.

Почему это работает? Когда мы удаляем и возвращаем ключевой показатель, система обновляет кэшированные данные начисления и перестраивает связи «с нуля». Битая ссылка, хранящаяся в недрах настроек, заменяется актуальной.

Способ 3. Перевыбор должности в документе

Проанализируем ситуацию в документе «Изменение штатного расписания». Вместо того чтобы редактировать формулы начислений, иногда достаточно просто «передернуть» (перевыбрать) реквизит.

  1. Зайдем в документ «Изменение штатного расписания».
  2. В табличной части очистим поле «Должность» или «Позиция».
  3. Выберем эту же должность заново из справочника.

Это действие заставляет программу 1С инициализировать строку заново и программно пересчитать показатели, сбрасывая временные таблицы с ошибочными GUID-ами.

Способ 4. Поиск битых ссылок и регистры сведений

Если предыдущие методы не сработали, проблема кроется глубоко в данных. Рассмотрим, как найти «застрявший» идентификатор:

  1. Скопируем длинный код из текста ошибки (то, что идет после <Объект не найден>).
  2. Воспользуемся типовой обработкой «Поиск и замена значений» или внешними обработками для поиска битых ссылок.
  3. Найдем, в каком регистре или документе упоминается этот идентификатор.
  4. Особое внимание уделим регистру сведений ДанныеОСотрудникахДляРасчетаСреднегоЗаработка. Если в нем зависли записи по уволенным сотрудникам с пустыми ссылками или некорректными датами, их необходимо очистить.

Способ 5. Обновление конфигурации

В завершение напомним, что в модуле УчетСреднегоЗаработка разработчики 1С периодически исправляют ошибки алгоритмов. Начиная с релизов 3.1.14+, в программный код были добавлены проверки на пустые ссылки перед стартом расчета.

Если вы работаете на устаревшем релизе (например, 3.1.11, как упоминалось в исходной проблеме), настоятельно рекомендуем выполнить обновление базы данных до актуальной версии. Это автоматически исключит запуск расчета ФОТ и среднего заработка для вакансий и избавит вас от возникновения данной ошибки в будущем.

← На главную