Скрыть персональные данные субъектов. Скрывает персональные данные субъектов. Состав персональных данных определяется программно.
// Скрывает персональные данные субъектов. Состав персональных данных определяется программно.
//
// Параметры:
// Субъекты - Массив, ОпределяемыйТип.СубъектПерсональныхДанных - ссылка или массив ссылок одного типа на субъекты.
// СообщатьОбИсключениях - Булево - признак необходимости информирования пользователя о добавленных исключениях.
//
Процедура СкрытьПерсональныеДанныеСубъектов(Знач Субъекты, СообщатьОбИсключениях = Ложь) Экспорт
Если Не ЗначениеЗаполнено(Субъекты) Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Субъекты) <> Тип("Массив") Тогда
Субъекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Субъекты);
КонецЕсли;
ТипСубъектов = ТипЗнч(Субъекты[0]);
Если ТипСубъектов = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
Возврат;
КонецЕсли;
Отказ = Истина;
ТаблицаИсключений = НоваяТаблицаИсключений();
ЗащитаПерсональныхДанныхПереопределяемый.ПередСкрытиемПерсональныхДанныхСубъектов(Субъекты, ТаблицаИсключений, Отказ);
УстановитьПривилегированныйРежим(Истина);
СубъектыИсключения = ОбработатьТаблицуИсключений(ТаблицаИсключений, СообщатьОбИсключениях);
Если Отказ Тогда
Возврат;
КонецЕсли;
ОтбираемыеСубъекты = ОбщегоНазначенияКлиентСервер.РазностьМассивов(Субъекты, СубъектыИсключения);
Если Не ЗначениеЗаполнено(ОтбираемыеСубъекты) Тогда
Возврат;
КонецЕсли;
ПараметрыОтбора = ПараметрыОтбораСкрываемыхДанных();
ПараметрыОтбора.Субъекты = ОтбираемыеСубъекты;
ОбрабатываемыеМетаданные = ОбрабатываемыеМетаданные();
ДеревоОбрабатываемыхОбъектов = Новый ДеревоЗначений;
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("Имя", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("ПредставлениеПравилаОбработки", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("Пометка", ОбщегоНазначения.ОписаниеТипаЧисло(1));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("Тип", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов"));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("ПолноеИмя", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДеревоОбрабатываемыхОбъектов.Колонки.Добавить("ПравилоОбработки", Новый ОписаниеТипов("СписокЗначений"));
ПараметрыПроцедуры = Новый Структура;
ПараметрыПроцедуры.Вставить("ОбрабатываемыеМетаданные", ОбрабатываемыеМетаданные);
ПараметрыПроцедуры.Вставить("ДеревоОбрабатываемыхОбъектов", ДеревоОбрабатываемыхОбъектов);
ПараметрыПроцедуры.Вставить("СохраненныеНастройки", Новый Массив);
АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор);
Менеджер = Обработки.СкрытиеКонфиденциальнойИнформации.Создать();
Менеджер.ЗаполнитьДеревоОбрабатываемыхОбъектов(ПараметрыПроцедуры, АдресХранилища);
ДеревоОбрабатываемыхОбъектов = ПолучитьИзВременногоХранилища(АдресХранилища);
ПравилаОбработкиПоУмолчанию = Менеджер.ПравилаОбработкиПоУмолчанию();
ПравилаОбработки = Новый Структура;
ПравилаОбработки.Вставить("ПравилоСтрока", ПравилаОбработкиПоУмолчанию.Строка);
ПравилаОбработки.Вставить("ПравилоЧисло", ПравилаОбработкиПоУмолчанию.Числа);
ПравилаОбработки.Вставить("ПравилоБулево", ПравилаОбработкиПоУмолчанию.Булево);
ПравилаОбработки.Вставить("ПравилоДата", ПравилаОбработкиПоУмолчанию.Дата);
ПравилаОбработки.Вставить("ПравилоХранилищеЗначений", ПравилаОбработкиПоУмолчанию.ХранилищаЗначений);
ПараметрыПроцедуры = Новый Структура;
ПараметрыПроцедуры.Вставить("ДеревоОбрабатываемыхОбъектов", ДеревоОбрабатываемыхОбъектов);
ПараметрыПроцедуры.Вставить("ПравилаОбработки", ПравилаОбработки);
ПараметрыПроцедуры.Вставить("ПараметрыОтбора", ПараметрыОтбора);
НачатьТранзакцию();
Попытка
НастройкиСкрытия = НастройкиСкрытияСубъектовПоУмолчанию();
НастройкиСкрытия.ДатаСкрытия = ТекущаяДатаСеанса();
НастройкиСкрытия.Состояние = Перечисления.СостоянияСубъектовДляСкрытия.СкрытиеВыполнено;
ЗаписатьНастройкиСкрытияСубъектов(ОтбираемыеСубъекты, НастройкиСкрытия);
Менеджер.ВыполнитьСкрытиеНаСервере(ПараметрыПроцедуры, АдресХранилища);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Защита персональных данных.Скрытие данных'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
,
,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ДнейДоСкрытияПерсональныхДанныхСубъектов (БСП)
СкрытьПерсональныеДанныеСубъектов (БСП)
ИспользоватьСкрытиеПерсональныхДанныхСубъектов (БСП)
СкрытиеПерсональныхДанныхСубъектов (БСП)
ОбновитьДатыСкрытияПерсональныхДанныхСубъектов (БСП)
ПередСкрытиемПерсональныхДанныхСубъектов (БСП)
ЭтоОбъектСоСкрытымиПерсональнымиДанными (БСП)