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

#Область СлужебныеПроцедурыИФункции

// Параметры:
//  Идентификатор - Строка
//  Версия - Строка
//  ПутьКМакетуДляПоискаПоследнейВерсии - Строка
//
// Возвращаемое значение:
//   см. ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте
//
Функция ИнформацияОСохраненнойКомпоненте(Знач Идентификатор, Знач Версия = Неопределено, 
	Знач ПутьКМакетуДляПоискаПоследнейВерсии = Неопределено) Экспорт
	
	Результат = ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия, ПутьКМакетуДляПоискаПоследнейВерсии);
	Если Результат.Состояние = "НайденаВХранилище" Или Результат.Состояние = "НайденаВОбщемХранилище" Тогда 
		Версия = Результат.Реквизиты.Версия;
		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Для идентификатора %1 (версия %2) получена внешняя компонента %3 (версия %4) из справочника.
			|Состояние: %5'"), 
			Идентификатор, ?(Версия <> Неопределено, Версия, НСтр("ru = 'не указана'")), Результат.Реквизиты.Наименование, 
			Результат.Реквизиты.Версия, Результат.Состояние);
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Внешние компоненты'", ОбщегоНазначения.КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Информация,, Результат.Ссылка, ТекстСообщения);
	Иначе
		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Для идентификатора %1 (версия %2) в справочнике нет подходящей внешней компоненты.
			|Состояние: %3'"),
			Идентификатор, ?(Версия <> Неопределено, Версия, НСтр("ru = 'не указана'")), Результат.Состояние);
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Внешние компоненты'", ОбщегоНазначения.КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Информация,,, ТекстСообщения);
	КонецЕсли;
	Возврат Результат;
	
КонецФункции

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

Функция ИнформацияОВнешнейКомпонентеИзМакета(Знач Местоположение) Экспорт
	Возврат ВнешниеКомпонентыСлужебный.ИнформацияОВнешнейКомпонентеИзМакета(Местоположение);
КонецФункции

#КонецОбласти

