ИнформацияОСохраненнойКомпоненте (БСП)

Автор: 1С
ОбщийМодуль.ВнешниеКомпонентыСлужебный
БСП

Информация сохраненной компоненте. Параметры:

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

ИмяФайлаКомпоненты (БСП)

ИнформацияОКомпоненте (БСП)

ИнформацияОКомпонентеИзФайла (БСП)

ПараметрыПоискаДополнительнойИнформации (БСП)

ПроинициализироватьКомпоненту (БСП)

УстановитьКомпоненту (БСП)

ЭтоКомпонентаИзХранилища (БСП)

ПодключитьКомпоненту (БСП)

TurboConf 6 - расширение Конфигуратора 1С