СкрытьПерсональныеДанныеСубъектов (БСП)

Автор: 1С
ОбщийМодуль.ЗащитаПерсональныхДанных
БСП

Скрыть персональные данные субъектов. Скрывает персональные данные субъектов. Состав персональных данных определяется программно.

// Скрывает персональные данные субъектов. Состав персональных данных определяется программно.
//
// Параметры:
//	Субъекты - Массив, ОпределяемыйТип.СубъектПерсональныхДанных - ссылка или массив ссылок одного типа на субъекты.
//	СообщатьОбИсключениях - Булево - признак необходимости информирования пользователя о добавленных исключениях.
//
Процедура СкрытьПерсональныеДанныеСубъектов(Знач Субъекты, СообщатьОбИсключениях = Ложь) Экспорт
	
	Если Не ЗначениеЗаполнено(Субъекты) Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(Субъекты) <> Тип("Массив") Тогда
		Субъекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Субъекты);
	КонецЕсли;
	
	ТипСубъектов = ТипЗнч(Субъекты[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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ДнейДоСкрытияПерсональныхДанныхСубъектов (БСП)

ИспользоватьСкрытиеПерсональныхДанныхСубъектов (БСП)

СкрытьПерсональныеДанныеСубъектов (БСП)

СкрытиеПерсональныхДанныхСубъектов (БСП)

ОбновитьДатыСкрытияПерсональныхДанныхСубъектов (БСП)

ПередСкрытиемПерсональныхДанныхСубъектов (БСП)

ИзменитьНастройкиСкрытияПерсональныхДанных (БСП)

ЭтоОбъектСоСкрытымиПерсональнымиДанными (БСП)

ПолучениеСубъектовДляСкрытияПерсональныхДанных (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз