Обезличивание базы средствами Конвертации данных 2
Быстро, просто, понятно обезличить нужные данные в любой базе.
- Описание
- Подробнее
Описание
Существует достаточно много обработок для обезличивания баз данных. Некоторые универсальны, некоторые ориентированы на конкретные объекты метаданных. Предлагаю простое, понятное и прозрачное, а главное — легко модифицируемое решение, которое универсально подходит для обезличивания любой базы и требует минимум навыков.
Речь идёт об использовании системы "Конвертация данных 2". Суть проста — всю черновую работу по чтению, записи, модификации данных берёт на себя штатный механизм, а разработчику остаётся только указать места, где требуется обезличивание. При этом всё управляемо и без подвохов — не нарушатся ссылки, логическая целостность, не пострадает функциональность. Главное — указать объекты и поля, которые обезличить. И весь инструментарий КД к нашим услугам.
Идея проста: создаём конвертацию, берём копию базы (ну или не копию), из неё выгружаем в файл и обратно в неё же загружаем этот файл, и готово. Итак:
1. Выгружаем описание нужной базы, создаём конвертацию, в качестве источника и приёмника указываем одну и ту же конфигурацию.
2. При необходимости, параметрами определяем объекты, подлежащие обезличиванию (опять же, их удобно будет указать в пользовательском режиме средствами отбора и периода в Универсальном обмене XML). Тут, очевидно, можно по-всякому — и через собственные произвольные выборки, и стандартными запросами, смотря по конкретике задачи. Хоть принудительно "ВыгрузитьДанныеПоПравилу", хоть как. Например, определив массив:
3. Поскольку база одна и та же, смело используем стыковку по GUID. Если под обезличивание попадают поля, уникально идентифицирующие элемент данных, то это единственный надёжный способ, поэтому флаг продолжения поиска выключаем (казалось бы — зачем? а затем, что битые ссылки иногда вынуждают КД продолжить поиск уже по ключевым полям).
4. Обезличиваем нужные реквизиты нужных объектов любым нравящимся способом — например, сделать наименования равными кодам:
С тем же успехом можно:
// для ФИО сотрудника
Значение="Иванов Иван Иванович";
// для цен и сумм
Значение=666;
// или
текДата=ТекущаяДата();
Значение=Год(текДата)-Месяц(текДата)+День(текДата);
Простор для фантазии)
Так же удобно обработать содержимое табличных частей через КоллекцияОбъектов или через ВходящиеДанные.
5. При необходимости обрабатываем не только справочники, документы и независимые регистры сведений, но и константы, если они простых типов:
6. Если в базе есть регистры и прочие вторичные данные, чьи поля простых типов зависят от неких операций (обычно от проведения документов), то перепроводим:
7. И только со значениями перечислений трудновато, разве что, исходя из точного понимания механизма, действительно аккуратно подменить на некое обезличенное значение, например:
Ещё можно перекидывать через ПараметрыОбъекта, тогда с любыми данными полная свобода манёвра, но больше хлопот.
Всё. Принцип я описал, конкретных реализаций возможна масса. При обезличивании проводящихся документов не забывайте отключать и затем включать итоги.
Логирование, отладка — всё уже есть штатно.
Замечу, что таким же образом можно шифровать и затем дешифровать содержимое баз. Достаточно сделать две конвертации — одна будет зашифровывать, хешировать, как-либо ещё преобразовывать данные, выгружая в файл. Затем файл передаём, хоть по незащищённому каналу. Затем вторая конвертация согласно принципам шифровки грузит из файла в базу.
Если баян, смело кидайте тухлыми помидорами)