Одной из наиболее частых и неприятных проблем в программе 1С:Зарплата и Управление Персоналом (ЗУП) 3.1 является ситуация, когда сотрудники, которые уже давно прекратили трудовую деятельность в организации, продолжают отображаться в отчетах по штатному расписанию как занимающие ставки. Это вносит неразбериху в кадровый учет, мешает принимать новых сотрудников на освободившиеся позиции и искажает аналитическую отчетность. Давайте вместе разберем причины возникновения этой проблемы и пошагово выясним, как привести данные в порядок. Для выявления зависших ставок можно использовать отчет на основе формы Т-3 с выводом сотрудников по позициям штатного расписания.
Если ваша база данных была создана путем переноса из предыдущей версии (ЗУП 2.5), корень проблемы часто кроется в документе Начальная штатная расстановка. Рассмотрим ситуацию подробнее: при "кратком" переносе данных на дату начала учета система фиксирует всех работающих сотрудников и занимаемые ими ставки именно этим документом.
Проанализируем возможный сценарий: если сотрудник был уволен в старой базе в день перехода или незадолго до него, информация о его увольнении могла некорректно синхронизироваться. В результате в новой базе создается запись о том, что сотрудник занимает позицию, но документ Увольнение, созданный уже в версии 3.1, не всегда может корректно "перекрыть" записи, созданные при переносе. В таком случае ставка остается занятой "вечно", пока мы не внесем корректировки в первичный документ расстановки.
Программа 1С постоянно развивается, и архитектура хранения данных меняется. Выясним, как это влияет на штатное расписание. В ранних версиях ЗУП 3.1 для учета занятых позиций использовался регистр накопления Занятые позиции штатного расписания. В современных релизах этот регистр помечен как "(не используется)", а данные теперь хранятся в регистре сведений Занятость позиций штатного расписания.
Разберем проблему: если вы используете кастомизированный (доработанный) отчет или старую внешнюю форму, она может продолжать обращаться к старому регистру накопления. Современные документы Увольнение или Кадровый перевод просто не делают записей в этот старый регистр. Как результат — в отчете мы видим старые, "зависшие" данные, хотя в актуальных регистрах позиции свободны.
Как показывает практика, иногда проблема вызвана банальной ошибкой в коде конкретного обновления программы. Рассмотрим пример: документ Увольнение проводится без ошибок, но по каким-то внутренним причинам не формирует движение по регистру, отвечающему за освобождение ставки.
В этом случае часто помогает простое перепроведение документа. Если после обновления конфигурации вы заметили, что штатка "поплыла", попробуйте отменить проведение документа увольнения и провести его заново. Это инициирует обновление записей во всех связанных регистрах учета. Однако будьте внимательны: иногда после такого действия в отчетах вместо ФИО сотрудника может появиться запятая (например, ", ,"). Это признак того, что в регистре осталась "битая" запись — ссылка на сотрудника удалена, а запись о занятости позиции осталась.
Посмотрим на настройки кадрового учета. В ЗУП 3.1 есть важная опция: "Ведется история изменений штатного расписания". Поведение системы кардинально различается в зависимости от её состояния:
Увольнение, Кадровый перевод или специализированных документов изменения штатного расписания.Если в процессе эксплуатации базы эта настройка переключалась, может возникнуть рассинхронизация данных. Позиции, занятые до включения истории, могут "не увидеть" документы, созданные после её включения, и наоборот.
Разберем по шагам, что нужно сделать, чтобы освободить ставки:
Увольнение по проблемным сотрудникам. Отмените проведение и проведите их заново. Если сотрудников много, воспользуйтесь групповой обработкой документов.Начальная штатная расстановка, найдите там уволенных сотрудников и удалите строки с ними, либо скорректируйте количество занимаемых ими ставок.Занятость позиций штатного расписания и проверьте наличие записей по конкретной позиции. Если вы видите там записи по уволенным сотрудникам, их можно удалить вручную или с помощью корректировки регистров (но делайте это крайне осторожно и только на копии базы!).Если после манипуляций в отчетах появились пустые строки с запятыми, это означает наличие записей в регистре накопления Занятые позиции штатного расписания (не используется), где поле Сотрудник не заполнено. Для очистки таких записей можно использовать небольшую обработку или выполнить следующий алгоритм в консоли кода (для программистов):
// Пример логики очистки зависших записей
НаборЗаписей = РегистрыНакопления.ЗанятыеПозицииШтатногоРасписания.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокументУвольнения);
НаборЗаписей.Прочитать();
// Проверка и очистка пустых или некорректных движений
Если НаборЗаписей.Количество() > 0 Тогда
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
КонецЕсли;
Проанализировав ситуацию, мы видим, что проблема чаще всего носит технический характер и связана либо с переходом между версиями, либо с программными ошибками релизов. Регулярная проверка целостности данных и использование типовых инструментов обслуживания помогут вам содержать штатное расписание в актуальном состоянии. Для последующего контроля ситуации с вакансиями можно воспользоваться аналитическим отчетом по укомплектованности штатного расписания.