Обезличивание базы средствами Конвертации данных 2

Публикация № 1250475

Разработка - Защита и шифрование

Обезличивание базы обезличивание данных конвертация КД2

Быстро, просто, понятно обезличить нужные данные в любой базе.

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

Речь идёт об использовании системы "Конвертация данных 2". Суть проста - всю черновую работу по чтению, записи, модификации данных берёт на себя штатный механизм, а разработчику остаётся только указать места, где требуется обезличивание. При этом всё управляемо и без подвохов - не нарушатся ссылки, логическая целостность, не пострадает функциональность. Главное - указать объекты и поля, которые обезличить. И весь инструментарий КД к нашим услугам.

Идея проста: создаём конвертацию, берём копию базы (ну или не копию), из неё выгружаем в файл и обратно в неё же загружаем этот файл, и готово. Итак:

 

1. Выгружаем описание нужной базы, создаём конвертацию, в качестве источника и приёмника указываем одну и ту же конфигурацию.

 

2. При необходимости, параметрами определяем объекты, подлежащие обезличиванию (опять же, их удобно будет указать в пользовательском режиме средствами отбора и периода в Универсальном обмене XML). Тут, очевидно, можно по-всякому - и через собственные произвольные выборки, и стандартными запросами, смотря по конкретике задачи. Хоть принудительно "ВыгрузитьДанныеПоПравилу", хоть как. Например, определив массив:

 

3. Поскольку база одна и та же, смело используем стыковку по GUID. Если под обезличивание попадают поля, уникально идентифицирующие элемент данных, то это единственный надёжный способ, поэтому флаг продолжения поиска выключаем (казалось бы - зачем? а затем, что битые ссылки иногда вынуждают КД продолжить поиск уже по ключевым полям).

 

4. Обезличиваем нужные реквизиты нужных объектов любым нравящимся способом - например, сделать наименования равными кодам:

С тем же успехом можно:

// для ФИО сотрудника
Значение="Иванов Иван Иванович";
// для цен и сумм
Значение=666;
// или
текДата=ТекущаяДата();
Значение=Год(текДата)-Месяц(текДата)+День(текДата);

Простор для фантазии)

Так же удобно обработать содержимое табличных частей через КоллекцияОбъектов или через ВходящиеДанные.

 

5. При необходимости обрабатываем не только справочники, документы и независимые регистры сведений, но и константы, если они простых типов:

 

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

 

7. И только со значениями перечислений трудновато, разве что, исходя из точного понимания механизма, действительно аккуратно подменить на некое обезличенное значение, например:

Ещё можно перекидывать через ПараметрыОбъекта, тогда с любыми данными полная свобода манёвра, но больше хлопот.

 

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

Логирование, отладка - всё уже есть штатно.

Замечу, что таким же образом можно шифровать и затем дешифровать содержимое баз. Достаточно сделать две конвертации - одна будет зашифровывать, хешировать, как-либо ещё преобразовывать данные, выгружая в файл. Затем файл передаём, хоть по незащищённому каналу. Затем вторая конвертация согласно принципам шифровки грузит из файла в базу.

Если баян, смело кидайте тухлыми помидорами)

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. mikit 71 14.06.20 21:01 Сейчас в теме
Немного не по теме, может подскажете куда копать

Бьюсь который день, есть правила типовые БП 2.0 КОРП -> УТ 11, добавила в них выгрузку Поступление товаров и услуг и Реализацию. Документы переносятся, но к сожалению реквизит в табл части товары "АналитикаУчетаНоменклатуры" не заполняется. Пробовала убирать строку (//Объект.ОбменДанными.Загрузка = Истина; ) в глобальном обработчике "После загрузки данных" не помогает

Для Каждого СтрокаТаблицы Из ЗагруженныеОбъекты Цикл

Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;

Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;

ОбъектМодифицирован = Истина;

Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;

Если Метаданные.Документы.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ЗаполнениеДокументовОтложенное);
КонецЕсли;

Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Отправитель = Параметры.УзелОбменаЗагрузкаДанныхСсылка;
//Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЕсли;

КонецЦикла;
Показать
Прикрепленные файлы:
ПравилаОбменаДанными11062020.xml
10. Константин С. 656 15.06.20 09:12 Сейчас в теме
(1)
Документы переносятся, но к сожалению реквизит в табл части товары "АналитикаУчетаНоменклатуры

оставьте это на заполнение самой конфы. При проведении само будет подставляться.
16. mikit 71 15.06.20 20:17 Сейчас в теме
(10) Cпасибо, вы совершенно правы. Дописала проведение в ПКО после загрузки Объект.Записать(РежимЗаписиДокумента.Проведение) - аналитика заполняется
17. Yashazz 3448 15.06.20 20:19 Сейчас в теме
(16) Люди добрыя, я всё понимаю, но на ИС ведь есть специально механизм вопросов и ответов, чтоб в темах не оффтопить. Давайте туды, ась?
2. Rustig 1562 14.06.20 22:30 Сейчас в теме
(0) идею увидел, а где программная реализация?
где обработка, которая сама соберет нужные правила ПКО по всем справочникам и документам? или вы предлагаете все правила для всех метаданных руками править?
Если вы описали как работать с КД - то это не стоило.
Если вы описали идею, то мне хватило первого предложения, чтобы понять суть идеи.
Стал читать, чтобы увидеть реализацию, но не увидел...
Вот такая работа по обезличиванию сколько стоит, по вашему? в рублях и в человеко-часах, и для кого эта задача ?
RealEgor; +1 Ответить
6. Yashazz 3448 15.06.20 00:11 Сейчас в теме
(2) Если вы спрашиваете про обработку, значит, вы не поняли суть идеи. Не нужна никакая обработка, кроме классического универсального обмена XML. Зачем надо "собирать нужные правила"? Есть удобный интерфейс КД, этого более чем достаточно. Есть мой отчёт, недавно выложенный.
Опять же, программная реализация зависит от конкретики, внимательно читайте.
3. Rustig 1562 14.06.20 22:48 Сейчас в теме
(0) Для типовых быстрее создать свои обработки (алгоритмы) обезличивания вместо использования КД, например, вот так для ЗУП: https://infostart.ru/public/995930/. Особенно, когда знаешь свою сопровождаемую типовую конфигурацию.

Для каких задач использовать КД подобным образом ? пока не представляю
RealEgor; +1 Ответить
5. Yashazz 3448 15.06.20 00:08 Сейчас в теме
(3) Неа, не быстрее. Возьмите и посчитайте - выборку свою сделать, условия свои задать, механику записи, интерфейс какой-никакой. А тут готовенькое, только нужным полям значения закинуть.

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

Просто многие настолько привыкли, что "для изменения данных в базе нужна обработка", что шире не мыслят) А инструмент оказался удобный и на практике проверенный (идее-то этой лет 5, это написать мне позволили сегодня, а вообще на этой концепции серьёзные решения делались, оперативно и просто, и отлично работали).
7. Rustig 1562 15.06.20 08:48 Сейчас в теме
(5) ничего определенного по задаче вы не написали. Что за задача? Делать ее с помощью КД гораздо дольше, чем обработку написать.

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

Зачем накладывать на выборку отбор? Обезличиваем всю выборку. Тут ничего сложного : Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл.....
RealEgor; +1 Ответить
8. Yashazz 3448 15.06.20 08:59 Сейчас в теме
(7) Ну если формулировка "обезличивание" не раскрывает задачу, то почитайте матчасть. И повторюсь, делать через КД - быстрее, проверено.

Правила надо поддерживать, если обезличивание надо поддерживать и делать постоянно. А если разово - нет. И потом, обработку разве не надо актуализировать, не? Что-то у вас с логикой)

Ага, ага. Вот уже строки кода, который КД за нас делает, лишний труд. Короче, придирки на ровном месте)
9. Rustig 1562 15.06.20 09:09 Сейчас в теме
(8)
А если разово - нет.

Вот это к примеру и есть одно из требований задачи. Получается , что требуется разово что-то там обезличить. Что за конфа? Какие справочники надо обезличить? ВЫ написали про перечисление и регистры сведений. До какой степени и детализации надо обезличить? Зачем?

Задача обезличивания может быть как простой, так и сложной. В зависимости от целей и постановки. Чаще обезличивают контрагентов и контактные данные - я в своей реализации просто удалил регистр сведений "Контактные данные", поскольку для демонстрации клиентам он был не нужен. Для удаления не надо КД.

Что-то я еще сделал, но это было быстрее, чем выгружать метаданные из конфигурации, загружать их в КД, сопоставлять объекты, находить правила ПКО и менять их.

Я спросил у вас обработку, которая открывается в самой КД, чтобы правила ПКО переписать автоматом на свои нужные, чтобы руками не прописывать Наименование = Иванов;

вы не поняли, поэтому тот же ответ и вам : читайте внимательно :)

задачи обезличивания отличаются друг от друга постановкой и реализацией. Использовать КД для всех случаев пока не понятно зачем - громоздко выглядит. Пример реальной задачи опишите...
11. Yashazz 3448 15.06.20 11:00 Сейчас в теме
(9)
До какой степени и детализации надо обезличить? Зачем?
Вы издеваетесь или не понимаете? Это от конкретики задачи зависит, сами же пишете про цели и постановки.
Что-то я еще сделал, но это было быстрее, чем выгружать метаданные из конфигурации, загружать их в КД, сопоставлять объекты, находить правила ПКО и менять их.
Не спорю. Если совсем "по месту", или тяп-ляп без интерфейса, то да. И то, я такое тоже быстрее наваяю, а новички полдня будут пыхтеть. Ну и выгружать-загружать это быстрые операции, даже на нынешних конфах, пара минут. Сопоставляет КД сама.
Я спросил у вас обработку, которая открывается в самой КД, чтобы правила ПКО переписать автоматом на свои нужные, чтобы руками не прописывать Наименование = Иванов;
Опишите, пожалуйста, как должна выглядеть эта обработка. Конкретизируйте задачу. И напомню, есть универсальные групповые обработки данных, которыми и в КД можно пользоваться, я вот тексты алгоритмов ими ставлю и очень удобно.

Я-то как раз всё понял.

А если вам непонятно - зачем, так это не повод утверждать, что громоздко и долго. Возможно, "вы просто не умеете их готовить"?))
4. Rustig 1562 14.06.20 23:26 Сейчас в теме
я в свое время делал обезличивание базы, использовал с Инфостарта обработку... но точно не думал про КД....
PS. Психологи про озарение https://postnauka.ru/video/154831
12. Yashazz 3448 15.06.20 11:02 Сейчас в теме
Вообще забавно. Всякий шлак, который разжёван был в 2013-м году на Мисте, например, радостно плюсят. А оригинальную работоспособную идею для удобного решения - не понимают. Мдя, характеризует нынешних, ой характеризует...
13. Yashazz 3448 15.06.20 11:13 Сейчас в теме
И ещё, если неочевидно: обработки каждый кропает в своём стиле, в своей манере, разобраться в них потом, изменить, адаптировать, доработать - затратно. Тогда как КД это стандарт, это внятная прозрачная механика.
14. the1 602 15.06.20 19:04 Сейчас в теме
Недостаток предложенного метода вижу в его неуниверсальности. Под каждую конфу, более того, иногда под каждый ее релиз надо писать правила. Обработка может быть универсальной, не зависящей от конфы, релиза, состава реквизитов и табличных частей.

Но как новый взгляд на старую проблему - интересно. Чисто теоретически.
15. Yashazz 3448 15.06.20 20:14 Сейчас в теме
(14) Соглашусь, верно. Но... можно ведь оперировать "расхожими" справочниками.- контрагенты-партнёр, номенклатура... Их состав и логика в рамках большинства систем схожи.

Спасибо, довод принят.
18. mixsture 18.06.20 14:37 Сейчас в теме
Я как-то тоже не понимаю, зачем тут КД? Запускаем конфу в режиме обычных форм, открываем инструменты разработчика, идем в подбор и обработка объектов - и также все меняем.
Будет:
1) сопоставимо или даже чуть меньше затрачено времени прогера (вобщем-то, и там, и там надо что-то делать на каждый вид объекта)
2) отработает быстрее
3) точно не упадет по памяти (как любит делать КД на больших объемах данных. это ж все-таки XML)
20. Yashazz 3448 18.06.20 17:55 Сейчас в теме
(18) У меня, да и у многих, есть групповые обработчики. У меня своя самоделка, у кого-то ИР. Да, так можно, но имхо удобство инструментария всё же проигрывает КДшному.

И кстати, не припоминаю, чтобы КД2 падала. Там последовательные запись и чтение хмл, всё толково сделано, я за 10 лет терабайтную выгрузку таскал, скушало и не подавилось.
19. aspirator23 431 18.06.20 15:23 Сейчас в теме
Интересная идея, хотя в исходном виде трудоемкая - все нужно вручную описать.
Оставьте свое сообщение

См. также

От Hello world - к защите конфигураций за 1 минуту Промо

Защита и шифрование Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    34947    O-Planet    130    

Расшифровка DataMatrix кода с пачки сигарет (табачная продукция)

Защита и шифрование v8 Россия Бесплатно (free)

Разбор считанного DataMatrix кода с пачки сигарет - какие символы за что отвечают. Декодирование МРЦ

07.06.2020    5398    Tasselhof    10    

Кодирование по алфавиту. Большие целые числа

Защита и шифрование v8 1cv8.cf Бесплатно (free)

А вы знали, что 1С умеет в очень длинные числа? Кодирование информации в строку по указанному алфавиту, возможен любой алфавит и не только. В тексте приведён алгоритм для кодирования последовательности байт в любой и из любого односимвольного алфавита.

14.05.2020    1385    mrsmrv    5    

SHA512 и HMAC512 на 1С 8 без использования внешних компонент

Защита и шифрование v8 1cv8.cf Бесплатно (free)

Имплементация алгоритма расчета Hash 512 с ключом и без. С ключом по алгоритму HMAC. Используются механизмы платформы начиная с версии 8.3.11.

29.04.2020    2800    mrsmrv    21    

Танцы с бубном! Создаём демонстрационную базу

Защита и шифрование v8 Бесплатно (free)

В статье кратко расскажу Вам о моём опыте создания демонстрационной версии базы данных 1С и способах защиты кода.

08.02.2018    15212    user748289    41    

Симметричное шифрование в 1С

Защита и шифрование v8 1cv8.cf Бесплатно (free)

Настоящая статья посвящена реализации в 1С симметричного шифрования встроенными механизмами

02.06.2015    27181    alex271    8    

Защита конфигурации от ...

Защита и шифрование v8 1cv8.cf Бесплатно (free)

Бывают моменты в жизни, когда нужно сделать возможность входа только одному пользователю после определенного времени. Ниже приведен такой код.

18.05.2015    19028    hakerxp    29    

Хеширование данных с ключом по алгоритму SHA-1 штатными средствами 1С

Практика программирования Защита и шифрование v8 1cv8.cf Бесплатно (free)

Расчет хеш суммы данных по алгоритму SHA-1 с ключом штатными средствами 1С.

27.05.2014    27849    dour-dead    15    

И ещё несколько слов о защите разработок...

Защита и шифрование v8 1cv8.cf Россия Бесплатно (free)

Дневные мысли о механизмах защиты кода... (по мотивам http://www.infostart.ru/profile/8914/blogs/660/)

30.10.2008    40102    ValeriVP    79