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