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