Как исправить ошибку «Значение не является значением объектного типа (ЕжегодныеОтпуска)» при утверждении штатного расписания в ЗУП 3.1

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

При работе в программе 1С:Зарплата и управление персоналом, редакция 3.1, пользователи могут столкнуться с неприятной ситуацией: при попытке провести документ «Утверждение штатного расписания» или «Изменение штатного расписания» система выдает критическую ошибку «Значение не является значением объектного типа (ЕжегодныеОтпуска)». Эта проблема блокирует возможность ведения кадрового учета и планирования фонда оплаты труда. В этой статье мы подробно разберем причины возникновения данной ошибки и рассмотрим все возможные способы её решения.

Выясним причину возникновения ошибки

Прежде всего, разберем техническую природу сообщения. Ошибка Значение не является значением объектного типа означает, что программный код пытается обратиться к свойству или табличной части ЕжегодныеОтпуска у объекта, который на данный момент является пустым (равен Неопределено или Null). В контексте штатного расписания это чаще всего связано с тем, что программа перебирает позиции штатного расписания, но одна из них содержит «битую» ссылку (Объект не найден) на подразделение или должность, либо нарушена логическая связь в системных регистрах.

Рассмотрим пошагово методы исправления, начиная от самого эффективного и заканчивая глубокой технической диагностикой.

Способ 1. Перезаполнение регистра «Подчиненность подразделений организаций»

Как показывает практика, наиболее частой причиной является некорректное заполнение вспомогательного регистра, который отвечает за иерархию структурных единиц. Если иерархия нарушена, алгоритм расчета прав на отпуска не может корректно инициализировать объект позиции штатного расписания.

Разберем по шагам, как это исправить:

  1. Откроем главное меню программы и перейдем в раздел Функции для технического специалиста (ранее назывался «Все функции»). Если этот пункт не отображается, его необходимо включить в меню «Настройки» — «Параметры» — флаг «Режим технического специалиста».
  2. В открывшемся окне через строку поиска найдем регистр сведений Подчиненность подразделений организаций.
  3. Откроем форму списка этого регистра.
  4. Нажмем кнопку Ещё в правом верхнем углу и выберем команду Включить возможность редактирования.
  5. После этого снова нажмем Ещё и выберем пункт Перезаполнить регистр. Программа автоматически пересчитает связи между всеми подразделениями.
  6. Попробуем снова провести документ утверждения штатного расписания.

Способ 2. Поиск и устранение «битых» ссылок

Если первый способ не помог, проанализируем справочник Позиции штатного расписания. Часто при переносе данных из других конфигураций (например, из 1С:Бухгалтерии 3.0) или при некорректном удалении объектов возникают записи, ссылающиеся на несуществующие элементы.

Для диагностики воспользуемся Универсальным отчетом:

  1. Перейдем в раздел «Администрирование» — «Печатные формы, отчеты и обработки» — Универсальный отчет.
  2. В поле «Тип объекта» выберем Справочник, а в поле «Объект» — Позиции штатного расписания.
  3. Настроим отчет, добавив в колонки поля Подразделение, Должность и Наименование.
  4. Сформируем отчет и внимательно просмотрим список. Нам нужно найти строки, в которых вместо названия подразделения или должности написано <Объект не найден>.
  5. Если такие записи найдены, их необходимо исправить: либо заново выбрать корректные элементы, либо программно удалить «битые» строки.

Способ 3. Проверка через консоль запросов (для продвинутых пользователей)

Иногда ошибка скрыта глубоко в табличных частях. Проанализируем ситуацию с помощью консоли запросов. Нам нужно проверить, нет ли в табличной части ЕжегодныеОтпуска записей, потерявших связь с основной позицией штатного расписания.

Рассмотрим пример запроса, который поможет локализовать проблему:


ВЫБРАТЬ
    ШтатноеРасписаниеЕжегодныеОтпуска.Ссылка КАК ПроблемнаяСсылка,
    ШтатноеРасписаниеЕжегодныеОтпуска.ВидОтпуска
ИЗ
    Справочник.ПозицииШтатногоРасписания.ЕжегодныеОтпуска КАК ШтатноеРасписаниеЕжегодныеОтпуска
ГДЕ
    ШтатноеРасписаниеЕжегодныеОтпуска.Ссылка.Наименование ЕСТЬ NULL

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

Способ 4. Несоответствие настроек состава начислений

Выясним, не менялись ли настройки программы в процессе заполнения данных. Проанализируем настройки расчета зарплаты:

  1. Перейдем в раздел Настройка — Расчет зарплаты.
  2. Нажмем на гиперссылку Настройка состава начислений и удержаний.
  3. Перейдем на вкладку Отпуска.
  4. Если флаг Отпуска сотрудникам был снят, когда в штатном расписании уже были введены данные, это может привести к ошибке обращения к объекту.
  5. Попробуем временно установить или переключить этот флаг, сохранить настройки и попробовать провести документ снова.

Способ 5. Очистка кэша и техническое обслуживание

Если программные методы не приносят результата, рассмотрим вероятность технического сбоя платформы. Ошибка Значение не является значением объектного типа может быть следствием некорректного кэширования метаданных конфигурации.

Проделаем следующие действия:

Способ 6. Проверка расширений конфигурации

Часто в базу устанавливаются расширения для изменения печатных форм или добавления реквизитов. Даже если расширение не касается напрямую штатного расписания, оно может перехватывать процедуры проведения документов. Проанализируем ситуацию: временно отключим все расширения в разделе «Администрирование» — «Обслуживание» — «Расширения» и попробуем провести документ. Если ошибка исчезнет, значит, одно из расширений требует адаптации под текущий релиз ЗУП.

Подводя итог, можно сказать, что ошибка чаще всего лечится именно Способом 1 (регистр подчиненности) или Способом 2 (удаление битых ссылок). Совместное применение этих методов позволяет восстановить работоспособность штатного расписания в кратчайшие сроки.

← На главную