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

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

Часто при работе в 1С:Зарплата и Управление Персоналом возникает необходимость вывести из использования старый вид начисления. Казалось бы, операция простая: открываем карточку начисления и устанавливаем флаг "Начисление больше не используется". Однако именно в этот момент система может выдать ошибку: "Нельзя сделать неиспользуемым начисление, так как оно используется в позиции штатного расписания...".

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

Выясняем причину: почему система "видит" то, чего нет?

Основная причина кроется в механизме хранения данных о штатном расписании в 1С:ЗУП. Система оперирует не только текущим состоянием, но и всей историей изменений. Когда вы с помощью документа Изменение штатного расписания убираете начисление с определенной даты, программа не удаляет старую запись, а создает новую, актуальную на новую дату.

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

Решение 1: Простой способ через пересохранение

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

  1. Определите, на какую позицию штатного расписания ссылается программа в тексте ошибки.
  2. Перейдите в раздел Кадры -> Штатное расписание.
  3. Найдите в списке ту самую позицию, которая указана в ошибке.
  4. Откройте карточку этой позиции.
  5. Ничего не меняя, просто нажмите кнопку "Записать и закрыть".

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

Решение 2: Поиск проблемной позиции с помощью отчета

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

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

  1. Перейдите в раздел Администрирование -> Печатные формы, отчеты и обработки -> Универсальный отчет.
  2. В настройках отчета укажите следующие параметры:
    • Тип объекта: Справочник
    • Имя объекта: Штатное расписание
    • Имя таблицы: Начисления
  3. Теперь настроим отбор, чтобы найти только нужные данные. Нажмите кнопку "Настройки...", перейдите на вкладку "Отбор".
  4. Нажмите "Добавить отбор". В поле "Поле" выберите Начисление. В поле "Значение" укажите тот вид начисления, который вы пытаетесь сделать неиспользуемым.
  5. Нажмите "Сформировать".

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

Решение 3: Анализ логики системы для программистов и опытных пользователей

Если вы хотите понять проблему на более глубоком уровне, давайте проанализируем, что именно делает система "под капотом". Логика проверки находится в модуле объекта ПланВидовРасчета.Начисления. Система выполняет запрос к базе данных, чтобы найти использование начисления.

Вот как выглядит ключевая часть этого запроса:


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

Проанализируем его условия:

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

← На главную