Как правильно удалить или изменить контактную информацию сотрудников в 1С:ЗУП 3.1?

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

В процессе администрирования и сопровождения конфигурации «1С:Зарплата и управление персоналом 3.1» часто возникает необходимость массово удалить, очистить или заменить контактную информацию сотрудников и физических лиц. Такие задачи актуальны при подготовке копии базы данных для передачи сторонним разработчикам (для соблюдения требований Федерального закона № 152-ФЗ «О персональных данных»), при исправлении массовых ошибок ввода или при переносе данных.

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

Почему стандартное групповое изменение реквизитов не работает напрямую?

Попробуем разобраться, как устроена подсистема хранения контактной информации в современных конфигурациях на платформе 1С, построенных на базе Библиотеки стандартных подсистем (БСП). Контактная информация (адреса, телефоны, email) физических лиц действительно связана со справочником ФизическиеЛица, но ее хранение имеет свою специфику:

  1. Скрытый формат XML (XDTO-последовательность): В табличной части КонтактнаяИнформация справочника ФизическиеЛица адрес или номер телефона записывается не просто строкой. Он упаковывается в XML-структуру внутри служебного реквизита ЗначенияПолей. Если мы попытаемся через обычное групповое изменение реквизитов очистить только текстовое представление (поле Представление), программа при первой же записи или открытии карточки физического лица восстановит старые данные из XML-структуры реквизита ЗначенияПолей.
  2. Дублирование в регистрах сведений: Для ускорения работы динамических списков и отчетов БСП дублирует актуальные контактные данные в независимый регистр сведений РегистрСведений.КонтактнаяИнформация (или аналогичный регистр в зависимости от версии БСП). Простое удаление строк из табличной части справочника напрямую не очищает этот регистр автоматически, из-за чего старые телефоны и адреса продолжают отображаться в экранных формах и отчетах.

Именно поэтому стандартная очистка табличной части «в лоб» не приносит желаемого результата. Рассмотрим корректные штатные и программные методы решения этой задачи.

Способ 1. Использование встроенного механизма уничтожения персональных данных

Если ваша цель — привести базу данных в соответствие с требованиями законодательства по защите персональных данных (например, удалить контакты уволенных сотрудников, срок согласия на обработку данных которых истек), в программе 1С:ЗУП 3.1 присутствует встроенный штатный механизм. Начиная с версий 3.1.23.812 / 3.1.27.23, разработчики добавили специализированное рабочее место.

Разберем по шагам, как задействовать этот функционал:

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав — Защита персональных данных.
  2. Активируем флаг «Уничтожать персональные данные». Здесь же при необходимости настроим правила и сроки хранения персональных данных после увольнения сотрудников.
  3. Перейдем в раздел Кадры — Сервис — Уничтожение персональных данных.
  4. В открывшемся рабочем месте система автоматически подберет физических лиц, у которых истек срок хранения данных. Мы можем запустить процедуру безвозвратного уничтожения. Программа сама очистит адреса, телефоны, паспорта, СНИЛС, ИНН и сформирует регламентированный «Акт об уничтожении персональных данных».

Способ 2. Программное удаление контактной информации через API БСП

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

Для полной очистки контактной информации объекта достаточно использовать процедуру УстановитьКонтактнуюИнформациюОбъекта. Проанализируем ее параметры:

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


ВыборкаФизЛиц = Справочники.ФизическиеЛица.Выбрать();

Пока ВыборкаФизЛиц.Следующий() Цикл
    
    // Получаем объект для редактирования
    ОбъектФизЛицо = ВыборкаФизЛиц.ПолучитьОбъект();
    
    // Создаем пустую таблицу значений для передачи в процедуру БСП
    ПустаяТаблицаКИ = Новый ТаблицаЗначений;
    
    // Вызываем стандартный метод БСП для очистки контактной информации с замещением
    УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(ОбъектФизЛицо, ПустаяТаблицаКИ, Истина);
    
    // Записываем объект для фиксации изменений в базе данных
    Попытка
        ОбъектФизЛицо.Записать();
        Сообщить("Успешно очищена контактная информация для: " + ОбъектФизЛицо.Наименование);
    Исключение
        Сообщить("Не удалось записать объект: " + ОбъектФизЛицо.Наименование + ". Ошибка: " + ОписаниеОшибки());
    КонецПопытки;
    
КонецЦикла;

Способ 3. Точечное изменение или удаление конкретного вида контакта

Бывают ситуации, когда требуется удалить не всю контактную информацию, а только определенный вид, например, только «Личный телефон» или только «Адрес по прописке», оставив остальные контакты нетронутыми. В этом случае мы можем воспользоваться методом ЗаписатьКонтактнуюИнформацию общего модуля.

Рассмотрим программный пример, в котором мы заменяем конкретный вид контактной информации на пустую строку, что приведет к его корректному программному удалению:


// Определим конкретный вид контактной информации, который хотим очистить
ВидКонформации = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон личный");

Если ЗначениеЗаполнено(ВидКонформации) Тогда
    
    ТипКонформации = ВидКонформации.Тип;
    Выборка = Справочники.ФизическиеЛица.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        ОбъектФизЛицо = Выборка.ПолучитьОбъект();
        
        // Передаем пустую строку в качестве значения для удаления информации по конкретному виду
        УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(
            ОбъектФизЛицо, 
            "", 
            ВидКонформации, 
            ТипКонформации
        );
        
        Попытка
            ОбъектФизЛицо.Записать();
        Исключение
            Сообщить("Ошибка при записи физлица " + Выборка.Наименование + ": " + ОписаниеОшибки());
        КонецПопытки;
        
    КонецЦикла;
    
КонецЕсли;

Этот метод самостоятельно преобразует пустое значение в необходимый XML-формат (XDTO) для реквизита ЗначенияПолей, обновит табличную часть справочника ФизическиеЛица и синхронизирует изменения с регистрами сведений.

Рекомендации по обезличиванию баз данных перед передачей третьим лицам

Если ваша задача состоит в том, чтобы передать базу данных 1С:ЗУП 3.1 программистам или аудиторам, простое удаление контактной информации не решит проблему конфиденциальности до конца. Персональные данные сотрудников будут по-прежнему доступны в кадровых приказах, регистрах расчета, ведомостях на выплату зарплаты и карточках воинского учета. В этих объектах остаются реальные ФИО, СНИЛС, ИНН, серии и номера паспортов.

Для качественного решения этой задачи рекомендуем использовать специализированные внешние обработки по обезличиванию (анонимизации) баз данных. Принцип их работы заключается в следующем:

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

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

← На главную