Часто при работе в 1С:Зарплата и Управление Персоналом возникает необходимость вывести из использования старый вид начисления. Казалось бы, операция простая: открываем карточку начисления и устанавливаем флаг "Начисление больше не используется". Однако именно в этот момент система может выдать ошибку: "Нельзя сделать неиспользуемым начисление, так как оно используется в позиции штатного расписания...".
Ситуация становится запутанной, когда вы уверены, что уже убрали это начисление из всех актуальных позиций штатного расписания с помощью документа Изменение штатного расписания. Вы проверяете отчеты, плановые начисления сотрудников, кадровые данные, но ошибка не исчезает. Давайте вместе разберемся, почему так происходит и как найти "фантомную" связь, которая мешает архивировать начисление.
Основная причина кроется в механизме хранения данных о штатном расписании в 1С:ЗУП. Система оперирует не только текущим состоянием, но и всей историей изменений. Когда вы с помощью документа Изменение штатного расписания убираете начисление с определенной даты, программа не удаляет старую запись, а создает новую, актуальную на новую дату.
При установке флага "Начисление больше не используется" система выполняет проверку по всей истории, а не только по актуальным данным. Именно поэтому она находит старую запись и выдает ошибку, хотя в текущей версии штатного расписания все выглядит корректно.
Как ни странно, в некоторых случаях проблема решается очень просто, без сложных отчетов и анализа. Этот способ основан на том, что иногда внутренние записи в регистрах обновляются не до конца.
Это простое действие может заставить систему перестроить и актуализировать все связанные с позицией записи в регистрах, удалив "фантомную" привязку к старому начислению. После этого попробуйте снова установить флаг "Начисление больше не используется". Во многих случаях ошибка исчезнет.
Если позиций много или вы не знаете точно, где искать, поможет универсальный отчет.
Разберем по шагам, как настроить универсальный отчет:
СправочникШтатное расписаниеНачисленияНачисление. В поле "Значение" укажите тот вид начисления, который вы пытаетесь сделать неиспользуемым.Отчет покажет вам список всех позиций штатного расписания, где до сих пор есть привязка к этому начислению. Получив этот список, вы можете применить к каждой найденной позиции Решение 1 (просто открыть и пересохранить).
Если вы хотите понять проблему на более глубоком уровне, давайте проанализируем, что именно делает система "под капотом". Логика проверки находится в модуле объекта ПланВидовРасчета.Начисления. Система выполняет запрос к базе данных, чтобы найти использование начисления.
Вот как выглядит ключевая часть этого запроса:
ВЫБРАТЬ
ШтатноеРасписание.Наименование КАК ПозицияШтатногоРасписания,
ШтатноеРасписание.Ссылка КАК Ссылка
ИЗ
Справочник.ШтатноеРасписание.Начисления КАК ШтатноеРасписаниеНачисления
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШтатноеРасписание КАК ШтатноеРасписание
ПО ШтатноеРасписаниеНачисления.Ссылка = ШтатноеРасписание.Ссылка
ГДЕ
ШтатноеРасписаниеНачисления.Начисление = &Ссылка
И НЕ ШтатноеРасписание.ПометкаУдаления
И ШтатноеРасписание.Утверждена
И НЕ ШтатноеРасписание.Закрыта
Проанализируем его условия:
ШтатноеРасписаниеНачисления.Начисление = &Ссылка — основное условие. Запрос ищет записи в табличной части "Начисления" справочника "Штатное расписание", где используется наше начисление (переданное в параметре &Ссылка).НЕ ШтатноеРасписание.ПометкаУдаления — проверяется, что сама позиция не помечена на удаление.ШтатноеРасписание.Утверждена — позиция должна быть утверждена.НЕ ШтатноеРасписание.Закрыта — и, наконец, позиция не должна быть закрыта на текущий момент.Этот запрос наглядно показывает, что система проверяет не регистры сведений, а напрямую табличную часть справочника ШтатноеРасписание. Именно поэтому, даже если вы изменили начисления документом, старые данные в элементе справочника могут оставаться до его явного пересохранения. Понимание этой логики помогает быстро диагностировать проблему и применять правильное решение.