В процессе работы с программой 1С:Зарплата и Управление Персоналом 3.1 часто возникает ситуация, когда необходимо удалить ошибочно заведенного сотрудника. Однако система блокирует удаление, сообщая о наличии сотен или даже тысяч ссылок в документах, регистрах сведений и накопления. Простое помечание на удаление не всегда решает задачу, если цель — полная очистка базы от упоминаний конкретного лица.
Разберем подробно, какими инструментами и методами можно воспользоваться для решения этой задачи, а также проанализируем последствия каждого подхода.
Это классический инструмент для администраторов и программистов 1С. Суть метода заключается в том, чтобы найти все упоминания «ненужного» сотрудника и заменить их на другого (например, технического «пустого» сотрудника) или просто очистить ссылки.
ПоискИЗаменаЗначений.epf (ее можно найти на диске ИТС или в составе инструментов разработчика).Сотрудники.Администрирование — Обслуживание — Удаление помеченных объектов.Важно: При замене сотрудника в расчетных документах (Начисление зарплаты, Ведомости) могут поехать итоги по регистрам. Этот метод хорош только в том случае, если сотрудник был заведен ошибочно и по нему не было реальных выплат.
Рассмотрим более радикальный способ, который часто применяют программисты, когда нужно быстро очистить базу. Мы можем написать небольшую обработку, которая принудительно удалит объект, не обращая внимания на связи.
Проанализируем пример кода для удаления объекта:
// Получаем ссылку на сотрудника
СсылкаНаСотрудника = Справочники.Сотрудники.НайтиПоНаименованию("Иванов Иван Иванович");
Если Не СсылкаНаСотрудника.Пустая() Тогда
ОбъектСотрудник = СсылкаНаСотрудника.ПолучитьОбъект();
// Включаем режим загрузки данных, чтобы не срабатывали лишние проверки
ОбъектСотрудник.ОбменДанными.Загрузка = Истина;
// Физическое удаление из таблицы базы данных
ОбъектСотрудник.Удалить();
Сообщить("Сотрудник успешно удален физически");
КонецЕсли;
Внимание: После выполнения этого кода во всех документах, где был указан этот сотрудник, появится надпись <Объект не найден>. Это называется «битыми ссылками». Чтобы этого избежать, перед удалением необходимо программно пройтись по всем ссылкам.
Рассмотрим, как правильно собрать все ссылки программно:
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СсылкаНаСотрудника);
// Находим все места использования объекта
ТаблицаСсылок = НайтиСсылки(МассивСсылок);
Для Каждого СтрокаСсылок Из ТаблицаСсылок Цикл
// Здесь можно реализовать логику очистки реквизитов в найденных объектах
// Например, через Метаданные определить тип ссылки и очистить её
КонецЦикла;
Если ваша задача — не просто удалить запись, а выполнить требования законодательства по защите персональных данных (когда сотрудник требует удалить информацию о себе), в ЗУП 3.1 есть штатный механизм.
Разберем шаги по обезличиванию:
Это самый безопасный метод с точки зрения учета. Ссылочная целостность базы сохраняется, отчеты продолжают формироваться, но идентифицировать человека по этим записям уже невозможно. Фактически объект остается, но он становится «анонимным».
Не забываем, что в 1С:ЗУП 3.1 Сотрудник и Физическое лицо — это разные сущности. Ссылки часто ведут именно на физическое лицо (например, в регистрах сведений по НДФЛ и страховым взносам).
Посмотрим на последовательность действий для полной очистки:
Сотрудники, связанные с данным физлицом (у одного человека может быть несколько мест работы: основное и совместительство).ЗарплатаКВыплате, ВзаиморасчетыССотрудниками и регистрах сведений КадроваяИсторияСотрудников.Выясним причину, по которой опытные специалисты 1С предостерегают от удаления сотрудников, по которым уже велись начисления:
Ошибка компоновки данных: поле не найдено.Проанализировав ситуацию, мы рекомендуем следующий алгоритм действий:
Если сотрудник был заведен полностью ошибочно (не было движений по деньгам): воспользуйтесь обработкой Поиск и замена значений, заменив сотрудника на пустую ссылку, а затем удалите объект.
Если нужно скрыть сотрудника из текущей работы: используйте механизм Группы доступа. Ограничьте видимость физлиц для пользователей, и данный сотрудник просто исчезнет из всех списков и подборов, оставаясь в базе для корректности старых отчетов.
Если требуется удалить данные по закону: используйте штатный помощник уничтожения персональных данных в разделе администрирования. Это самый профессиональный подход в современной экосистеме 1С.