АктуальныеВерсииВнешнихКомпонент (БСП)

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

Актуальные версии внешних компонент. Выполняет загрузку файлов актуальных версий внешних компонент.

// Выполняет загрузку файлов актуальных версий внешних компонент.
//
// Параметры:
//  ОписаниеВнешнихКомпонент - ТаблицаЗначений - описание внешних компонент, которые необходимо,
//                             загрузить в ИБ. См. функцию ПолучениеВнешнихКомпонент.ОписаниеВнешнихКомпонент.
//                             Если в таблице заполнена версия внешней компоненты, будет выполнена
//                             проверка номера версии, т.е. если номер версии в сервисе равен номеру версии
//                             в ИБ, файл не будет загружен и для версии будет установлена ошибка АктуальнаяВерсия.
//
// Возвращаемое значение:
//  Структура - содержит результат загрузки внешних компонент:
//    * КодОшибки - Строка - строковый код возникшей ошибки, который
//                  может быть обработан вызывающим функционалом:
//                    - <Пустая строка> - обновление выполнено успешно;
//                    - "НеверныйЛогинИлиПароль" - неверный логин или пароль;
//                    - "ПревышеноКоличествоПопыток" - превышено количество попыток
//                      получения обновления с некорректным логином и паролем;
//                    - "ОшибкаПодключения" - ошибка при подключении к сервису;
//                    - "ОшибкаСервиса" - внутренняя ошибка сервиса;
//                    - "НеизвестнаяОшибка" - при получении информации возникла
//                      неизвестная (не обрабатываемая) ошибка;
//                    - "СервисВременноНеДоступен" - на сервер ведутся регламентные работы;
//                    - "НетДоступаКПрограмме" - отсутствует доступ к программе на Портале 1С:ИТС;
//    *СообщениеОбОшибке      - Строка, ФорматированнаяСтрока - сообщение об ошибке для пользователя;
//    *ИнформацияОбОшибке     - Строка, ФорматированнаяСтрока - сообщение об ошибке для администратора.
//    *ДанныеВнешнихКомпонент - ТаблицаЗначений, Неопределено - содержит информацию о загруженных
//                                внешних компонентах:
//     **Идентификатор        - Строка - содержит идентификатор внешней компоненты, который
//                              указывается пользователем при создании новой компоненты;
//     **Версия               - Строка, Неопределено - содержит номер версии загруженного компонента;
//     **ДатаВерсии           - Дата, Неопределено - содержит дату выхода версии загруженного,
//                              компонента установленную в при заполнении информации о версии
//                              внешней компоненты;
//     **Наименование         - Строка, Неопределено - содержит наименование внешней компоненты, к которой
//                              относится версия;
//     **ИмяФайла             - Строка, Неопределено - содержит имя файла, установленное
//                              в при создании версии внешней компоненты;
//     **Размер               - Число - размер файла;
//     **АдресФайла           - Строка, Неопределено - содержит адрес файла внешней
//                              компоненты во временно хранилище;
//     **КодОшибки            - Строка - содержит код ошибки загрузки внешней компоненты:
//                               - <Пустая строка> - обновление загружено успешно;
//                               - ОтсутствуетКомпонента - в сервисе внешних компонент
//                                 не обнаружена внешняя компонента по переданному идентификатору;
//                               - ФайлНеЗагружен - при попытке загрузить файл внешней компоненты из сервиса,
//                                 возникла ошибка;
//                               - АктуальнаяВерсия - при получении последней (актуальной) внешней компоненты
//                                 не обнаружена более новая версия.
//
// Пример:
//	// 1. Обновление версии
//
//	МодульПолучениеВнешнихКомпонент = ОбщегоНазначения.ОбщийМодуль("ПолучениеВнешнихКомпонент");
//	ОписаниеВнешнихКомпонент = МодульПолучениеВнешнихКомпонент.ОписаниеВнешнихКомпонент();
//
//	СтрокаТаблицы = ОписаниеВнешнихКомпонент.Добавить();
//	СтрокаТаблицы.Идентификатор = "InputDevice";
//	СтрокаТаблицы.Версия        = "8_1_7_0"; // Допустимо оставить версию пустой.
//
//	Результат = МодульПолучениеВнешнихКомпонент.АктуальныеВерсииВнешнихКомпонент(ОписаниеВнешнихКомпонент);
//
//	// Результат загрузки:
//	Результат.КодОшибки          = "";
//	Результат.СообщениеОбОшибке  = "";
//	Результат.ИнформацияОбОшибке = "";
//
//	СтрокаРезультата = Результат.ОписаниеВнешнихКомпонент[0];
//	СтрокаРезультат.Идентификатор = "InputDevice";
//	СтрокаРезультат.Версия        = "8_1_8_0";
//	СтрокаРезультат.ДатаВерсии    = '10.01.2017 18:00';
//	СтрокаРезультат.Наименование  = "1С:Сканеры штрихкода (NativeApi)";
//	СтрокаРезультат.ИмяФайла      = "Драйвер1СУстройстваВводаNative_8_1_8_0.zip";
//	СтрокаРезультат.АдресФайла    = [uid временного хранилища];
//	СтрокаРезультат.КодОшибки     = "";
//
//	// 2. Ошибка работы с сервисом
//
//	МодульПолучениеВнешнихКомпонент = ОбщегоНазначения.ОбщийМодуль("ПолучениеВнешнихКомпонент");
//	ОписаниеВнешнихКомпонент = МодульПолучениеВнешнихКомпонент.ОписаниеВнешнихКомпонент();
//
//	СтрокаТаблицы = ОписаниеВнешнихКомпонент.Добавить();
//	СтрокаТаблицы.Идентификатор = "ProtonScanner";
//	СтрокаТаблицы.Версия        = "1_1";
//
//	Результат = МодульПолучениеВнешнихКомпонент.АктуальныеВерсииВнешнихКомпонент(ОписаниеВнешнихКомпонент);
//
//	// Результат загрузки
//	Результат.КодОшибки                = "СервисВременноНедоступен";
//	Результат.СообщениеОбОшибке        = "Сервис временно не доступен в связи с регламентными работами.";
//	Результат.ИнформацияОбОшибке       = "Не удалось подключиться к сервису внешних компонент. Сервис временно недоступен.";
//	Результат.ОписаниеВнешнихКомпонент = Неопределено;
//
//	// 3. Ошибка загрузки внешней компоненты
//
//	МодульПолучениеВнешнихКомпонент = ОбщегоНазначения.ОбщийМодуль("ПолучениеВнешнихКомпонент");
//	ОписаниеВнешнихКомпонент = МодульПолучениеВнешнихКомпонент.ОписаниеВнешнихКомпонент();
//
//	СтрокаТаблицы = ОписаниеВнешнихКомпонент.Добавить();
//	СтрокаТаблицы.Идентификатор = "ProtonScanner";
//	СтрокаТаблицы.Версия        = "1_2";
//
//	Результат = МодульПолучениеВнешнихКомпонент.АктуальныеВерсииВнешнихКомпонент(ОписаниеВнешнихКомпонент);
//
//	// Результат загрузки
//	Результат.КодОшибки          = "";
//	Результат.СообщениеОбОшибке  = "";
//	Результат.ИнформацияОбОшибке = "";
//	Результат.ОписаниеВнешнихКомпонент = Неопределено;
//
//	СтрокаРезультата = Результат.ОписаниеВнешнихКомпонент[0];
//	СтрокаРезультат.Идентификатор = "ProtonScanner";
//	СтрокаРезультат.Версия        = Неопределено;
//	СтрокаРезультат.ДатаВерсии    = Неопределено;
//	СтрокаРезультат.Наименование  = Неопределено;
//	СтрокаРезультат.ИмяФайла      = Неопределено;
//	СтрокаРезультат.АдресФайла    = Неопределено;
//	СтрокаРезультат.КодОшибки     = "АктуальнаяВерсия";
//
Функция АктуальныеВерсииВнешнихКомпонент(ОписаниеВнешнихКомпонент) Экспорт
	
	// 1. Проверка доступности загрузки внешних компонент
	// из сервиса.
	ПроверитьДоступностьЗагрузки();
	
	// 2. Проверка запроса внешних компонент.
	Если ОписаниеВнешнихКомпонент.Количество() = 0 Тогда
		РезультатОперации = ОписаниеРезультатаЗагрузки();
		УдалитьСлужебныеДанныеВнешнихКомпонент(РезультатОперации.ДанныеВнешнихКомпонент);
		Возврат ОписаниеРезультатаЗагрузки();
	КонецЕсли;
	
	// 3. Получение информации об актуальных версиях внешних компонент
	// из сервиса.
	РезультатОперации = ИнформацияОбАктуальныхВерсияхВнешнихКомпонент(ОписаниеВнешнихКомпонент);
	
	Если ЗначениеЗаполнено(РезультатОперации.КодОшибки) Тогда
		Возврат РезультатОперации;
	КонецЕсли;
	
	// 4. Определение актуальных версий.
	ОбработатьАктуальныеВерсии(ОписаниеВнешнихКомпонент, РезультатОперации.ДанныеВнешнихКомпонент);
	
	// 5. Загрузка файлов внешних компонент.
	ЗагрузитьФайлыВнешнихКомпонент(РезультатОперации);
	
	// 6. Подготовка результат загрузки.
	УдалитьСлужебныеДанныеВнешнихКомпонент(РезультатОперации.ДанныеВнешнихКомпонент);
	
	Возврат РезультатОперации;
	
КонецФункции

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

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

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

ВерсииВнешнихКомпонент (БСП)

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

ПриОпределенииИспользуемыхВерсийВнешнихКомпонент (БСП)

ОбновитьВнешниеКомпоненты (БСП)

ОбновитьОбщуюКомпоненту (БСП)

СвойстваВнешнейКомпоненты (БСП)

ДоступнаЗагрузкаВнешнихКомпонент (БСП)

ПолучитьФайлыКлассификаторов (БСП)

ОписаниеДанныхФайлаКлассификатора (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз