К статье
Практический материал

Администрирование · 11 мин

Как обезличить базу 1С: практическое руководство

Как обезличить базу 1С перед передачей подрядчику или для тестов: типовые и обработанные методы замены ФИО, ИНН, телефонов, контроль результата и типичные ошибки.

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

Суть обезличивания — заменить реальные значения на сгенерированные «шумовые» данные так, чтобы структура базы, связи между объектами и аналитика сохранились, а восстановить исходные значения было невозможно. При этом документы должны оставаться проведёнными, отчёты — сходиться, а тестовые сценарии — работать.

Ниже разобраны доступные способы: штатные механизмы типовых конфигураций, готовые обработки, самостоятельная разработка и деперсонализация на уровне СУБД. Для каждого варианта указаны ограничения и порядок проверки результата.

Какие данные подлежат обезличиванию

Перед началом работы составьте перечень полей, которые нужно заменить. Минимальный набор для большинства конфигураций: наименования физических лиц и контрагентов-физлиц, ФИО в регистрах сведений «ФИО физических лиц», документы удостоверения личности (серия, номер, кем выдан), ИНН, СНИЛС, адреса регистрации и проживания, телефоны и адреса электронной почты, банковские счета и реквизиты карт.

Отдельная категория — контактная информация контрагентов-юридических лиц. Формально реквизиты организации персональными данными не являются, но телефоны менеджеров, email и имена контактных лиц — являются. Кроме того, заказчик часто просит скрыть и сам список контрагентов, чтобы не раскрывать круг клиентов и поставщиков.

Не забывайте про «скрытые» места хранения: табличные части документов, комментарии, присоединённые файлы (сканы паспортов, договоров), историю изменений, версии объектов, регистры сведений с произвольными строковыми полями. Именно через них чаще всего происходит утечка после «обезличивания».

Тип базыФайловая или клиент-серверная

Определяет способ снятия копии и доступные инструменты

КонфигурацияТиповая или доработанная

В типовых есть штатная обработка скрытия данных

Присоединённые файлыЕсть ли сканы и вложения

Они хранят персональные данные вне справочников

Объём данныхРазмер базы и число записей

Влияет на время обработки и выбор метода

Подготовка: работаем только с копией

Главное правило: обезличивание выполняется на копии базы, никогда — на рабочей. Для файловой базы достаточно скопировать каталог с файлом 1Cv8.1CD или выгрузить базу в файл .dt через конфигуратор (режим «Загрузка/выгрузка информационной базы»). Для клиент-серверной базы снимите резервную копию средствами СУБД или выгрузку .dt и разверните её под отдельным именем.

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

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

Штатное скрытие данных в типовых конфигурациях

В типовых решениях на базе Библиотеки стандартных подсистем (1С:ЗУП, 1С:Бухгалтерия, 1С:ERP, 1С:Управление торговлей актуальных версий) есть встроенный механизм «Скрытие конфиденциальной информации». Обычно он находится в разделе «Администрирование» → «Обслуживание» или в настройках защиты персональных данных, в зависимости от конфигурации и её версии.

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

Порядок действий в типовой конфигурации
  1. 1
    Разверните копию базы и отключите обмены и регламентные задания
  2. 2
    Откройте Администрирование → Обслуживание → Скрытие конфиденциальной информации
  3. 3
    Отметьте группы данных для скрытия: физлица, контрагенты, контактная информация
  4. 4
    Запустите обработку и дождитесь завершения
  5. 5
    Удалите или очистите присоединённые файлы с персональными данными
  6. 6
    Проверьте результат поиском реальных ФИО и ИНН по всей базе

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

Внешние обработки и собственная разработка

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

Собственная обработка даёт максимальный контроль. Типовой алгоритм: перебрать справочники «Физические лица», «Контрагенты», «Пользователи», заменить наименования и реквизиты; пройтись по регистрам сведений с ФИО, документами удостоверения личности, контактной информацией; при необходимости обработать табличные части документов. Для генерации значений используют функции случайных чисел и заранее подготовленные списки вымышленных фамилий и имён.

1c
Генератор = Новый ГенераторСлучайныхЧисел;
Выборка = Справочники.ФизическиеЛица.Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Объект.Наименование = "Сотрудник " + Формат(Генератор.СлучайноеЧисло(1000, 99999), "ЧГ=");
    Объект.ИНН = "";
    Объект.СтраховойНомерПФР = "";
    Объект.Записать();
КонецЦикла;

Важные нюансы самостоятельной реализации: заменяйте значения детерминированно, где это нужно для логики (один человек — одно новое имя во всех объектах), сохраняйте формат полей (ИНН из 10 или 12 цифр, СНИЛС в маске), иначе проверочные процедуры конфигурации будут выдавать ошибки. Для больших баз выполняйте запись порциями с транзакциями, чтобы не получить тайм-ауты и блокировки.

Обезличивание на уровне СУБД

Для клиент-серверных баз на MS SQL или PostgreSQL иногда применяют прямые UPDATE-запросы к таблицам. Способ быстрый на больших объёмах, но рискованный: структура хранения 1С не документирована для прямой модификации, имена таблиц и полей генерируются платформой, а изменение данных в обход платформы может нарушить служебные механизмы (полнотекстовый поиск, итоги регистров, версионирование).

Использовать SQL-замену оправданно только для точечных задач — например, массово очистить текстовое поле в конкретной таблице — и только при полном понимании структуры хранения. После прямых изменений в СУБД обязательно выполните тестирование и исправление информационной базы и проверьте пересчёт итогов.

Сравнение способов обезличивания

Штатный механизм типовой конфигурации

Быстро и безопасно, но покрывает только стандартные объекты библиотеки

Внешняя обработка

Гибче, подходит для старых версий; требует проверки кода перед запуском

Собственная обработка

Полный контроль над доработками; требует времени на разработку и тестирование

Прямые запросы к СУБД

Самый быстрый на больших базах; высокий риск повреждения данных

Проверка результата и типичные ошибки

После обезличивания выполните контрольную проверку. Возьмите 5–10 реальных ФИО, ИНН и телефонов из исходной базы и выполните поиск по всей базе (в конфигураторе — «Поиск ссылок в объектах» и глобальный поиск по данным, в режиме предприятия — полнотекстовый поиск). Ни одно реальное значение не должно находиться.

Затем проверьте работоспособность: проведите документы, сформируйте регламентированные отчёты, сверку с контрагентом, отчёт по зарплате. Итоги и связи должны сохраниться — обезличивание меняет значения, а не структуру и не суммы (если только заказчик не просил исказить и финансовые показатели).

Контрольные точки

Как проверить результат

Поиск реального ФИО по базе
Норма

Ничего не найдено

Тревожный признак

Значение находится в регистре или документе

Проведение документов
Норма

Документы проводятся без ошибок

Тревожный признак

Ошибки проверки заполнения из-за пустых реквизитов

Формирование отчётов
Норма

Итоги совпадают с исходной базой

Тревожный признак

Расхождения сумм или пустые отчёты

Присоединённые файлы
Норма

Сканы удалены или заменены

Тревожный признак

Вложения содержат реальные данные

Типичные ошибки
01
Обезличивание рабочей базы вместо копии — данные теряются безвозвратно
02
Забытые присоединённые файлы со сканами паспортов — утечка после 'очистки'
03
Не очищены регистры сведений с историей ФИО — старые значения остаются доступны
04
Замена без сохранения формата полей — отчёты и проверки начинают выдавать ошибки
05
Не отключены обмены — обезличенные данные уходят в рабочие системы
06
Очистка ИНН у юрлиц ломает проверки контрагентов и выгрузки отчётности

Юридические и организационные ограничения

Обезличенные данные перестают быть персональными только при необратимости замены. Если где-то хранится таблица соответствия «старое значение — новое значение», данные считаются псевдонимизированными, и требования законодательства о персональных данных к ним сохраняются. Таблицу соответствий либо не создавайте, либо уничтожайте после проверки.

Даже при передаче обезличенной копии рекомендуется заключить с получателем соглашение о конфиденциальности: коммерческая тайна (обороты, цены, ассортимент) в базе остаётся. Если требуется скрыть и её, дополнительно искажайте суммы и количества в документах — но предупредите разработчика, что аналитика в такой базе условная.

Частые вопросы

Можно ли обезличить только сотрудников, оставив контрагентов как есть?

Да. В штатной обработке и в собственных алгоритмах группы данных выбираются независимо. Учтите, что физические лица связаны с контрагентами-ИП и контактными лицами — проверьте, не осталось ли ФИО в смежных справочниках.

Нарушит ли обезличивание проведённые документы и отчётность?

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

Как обезличить базу размером в десятки гигабайт?

Используйте порционную обработку с транзакциями по несколько тысяч объектов, отключите на время полнотекстовый поиск и отложенное обновление итогов. На клиент-серверных базах запускайте обработку в период минимальной нагрузки.

Достаточно ли удалить справочник «Физические лица»?

Нет. ФИО и документы дублируются в регистрах сведений, табличных частях документов, пользователях, истории изменений и присоединённых файлах. Удаление справочника ещё и разорвёт ссылки в документах, сделав базу неработоспособной.

Можно ли восстановить исходные данные после обезличивания?

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

Нужно ли обезличивать базу для передачи в техподдержку франчайзи?

Да, если в базе есть персональные данные реальных людей. Альтернатива — договор с подрядчиком на обработку персональных данных, но для разовой задачи обезличивание проще и безопаснее.

Итог

Что важно запомнить

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