Как исправить ошибку при включении истории изменений штатного расписания в 1С:ЗУП 3.1?

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

Ведение штатного расписания в программе «1С:Зарплата и управление персоналом» (редакция 3.1) — важнейшая часть кадрового учета. Часто на начальном этапе работы с программой историю изменений штатного расписания отключают для упрощения ввода данных. Однако со временем возникает необходимость активировать эту опцию (находится в меню Настройка — Кадровый учет — Настройка штатного расписания путем установки флажка «Ведется история изменений штатного расписания»). При попытке включить эту настройку пользователи часто сталкиваются с системными ошибками, блокирующими процесс и указывающими на проблемы в прошлых периодах (например, в конкретном месяце года).

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

Что происходит «под капотом» 1С при включении истории штатного расписания?

Для успешного решения проблемы нам важно понимать, какую фоновую работу выполняет конфигурация в момент установки флажка. Программа не просто меняет режим отображения данных — она инициирует глубокую перестройку кадровых данных:

  1. Программа автоматически создает и пытается провести скрытый документ «Утверждение штатного расписания». Датой этого документа обычно назначается дата начала ведения учета в базе или дата создания самых ранних позиций.
  2. Для каждой действующей позиции выполняется автоматический расчет и пересчет планового Фонда оплаты труда (ФОТ).
  3. В процессе расчета ФОТ программа обращается к плановым начислениям сотрудников, занимающих данные позиции в прошлых периодах, и сопоставляет их с историческими графиками работы.

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

Решение 1. Заполнение нормы времени в графиках работы за прошлые периоды

Самая распространенная причина ошибки заключается в том, что расчет ФОТ натыкается на нулевую норму времени в одном из графиков работы за прошлые годы. Если в формуле начисления сотрудника присутствует показатель НормаЧасов или НормаДней, программа выполняет математическое деление на этот показатель. Если норма не заполнена (равна 0), происходит критическая ошибка деления на ноль.

Разберем по шагам, как выявить и заполнить такие графики:

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

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

Решение 2. Поиск и устранение «битых» ссылок на сотрудников (<Объект не найден>)

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

Стандартное тестирование и исправление базы в Конфигураторе часто не может автоматически очистить подобные записи в сложных периодических регистрах сведений. Выясним причину проблемы с помощью ручной проверки регистров.

Выполним следующие действия для поиска поврежденных записей:

  1. Перейдем в главное меню программы (кнопка в правом верхнем углу окна), выберем пункт «Сервис и настройки», затем перейдем в «Функции для технического специалиста» (в старых версиях платформы данный пункт называется «Все функции»).
  2. В появившемся окне раскроем ветку «Регистры сведений».
  3. Найдем два взаимосвязанных регистра, отвечающих за занятость позиций:
    • ЗанятостьПозицийШтатногоРасписания
    • ЗанятостьПозицийШтатногоРасписанияИнтервальный
  4. Откроем регистр ЗанятостьПозицийШтатногоРасписания. Внимательно проанализируем колонку «Сотрудник». Нам нужно найти строчки, в которых вместо имени сотрудника отображается надпись вида <Объект не найден...> (после этой надписи обычно идет длинный уникальный идентификатор GUID).

Для оперативного поиска поврежденных данных в больших базах данных программисты могут запустить обработку «Консоль запросов» и выполнить следующий запрос:


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

Если запрос вернул строки с битыми ссылками, выполним их очистку:

  1. В открытом списке регистра найдем эти строки, выделим их и удалим вручную.
  2. Перейдем в регистр ЗанятостьПозицийШтатногоРасписанияИнтервальный. Чтобы внести изменения, нажмем кнопку «Еще», выберем команду «Разблокировать объекты», а затем нажмем «Перезаполнить регистр». Система автоматически пересчитает интервалы занятости на основании оставшихся корректных документов.

Важно: Любые технические манипуляции с регистрами сведений напрямую могут повлиять на корректность учета. Перед проведением этих процедур обязательно выполните создание резервной копии информационной базы (выгрузку файла .dt или создание бэкапа на SQL-сервере).

Решение 3. Исключение конфликтов планов обмена при синхронизации

Иногда включение истории изменений штатного расписания блокируется из-за ошибок в правилах регистрации изменений для обмена данными (например, при настроенной синхронизации между ЗУП и Бухгалтерией предприятия). При сохранении фонового документа программа пытается зарегистрировать изменения для справочников должностей и подразделений, что вызывает конфликт.

Для устранения этой проблемы выполним следующие шаги:

  1. Перейдем в раздел «Администрирование» — «Синхронизация данных».
  2. Временно отключим или приостановим работу правил отправки данных (можно временно удалить узлы обмена, предварительно зафиксировав их настройки, либо просто отключить расписание автоматического обмена).
  3. Попробуем снова установить флажок ведения истории штатного расписания. После успешного проведения документа и включения настройки мы сможем вернуть параметры синхронизации в исходное состояние.

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

← На главную