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