Актуальные версии внешних компонент. Выполняет загрузку файлов актуальных версий внешних компонент.
// Выполняет загрузку файлов актуальных версий внешних компонент.
//
// Параметры:
// ОписаниеВнешнихКомпонент - ТаблицаЗначений - описание внешних компонент, которые необходимо,
// загрузить в ИБ. См. функцию ПолучениеВнешнихКомпонент.ОписаниеВнешнихКомпонент.
// Если в таблице заполнена версия внешней компоненты, будет выполнена
// проверка номера версии, т.е. если номер версии в сервисе равен номеру версии
// в ИБ, файл не будет загружен и для версии будет установлена ошибка АктуальнаяВерсия.
//
// Возвращаемое значение:
// Структура - содержит результат загрузки внешних компонент:
// * КодОшибки - Строка - строковый код возникшей ошибки, который
// может быть обработан вызывающим функционалом:
// - <Пустая строка> - обновление выполнено успешно;
// - "НеверныйЛогинИлиПароль" - неверный логин или пароль;
// - "ПревышеноКоличествоПопыток" - превышено количество попыток
// получения обновления с некорректным логином и паролем;
// - "ОшибкаПодключения" - ошибка при подключении к сервису;
// - "ОшибкаСервиса" - внутренняя ошибка сервиса;
// - "НеизвестнаяОшибка" - при получении информации возникла
// неизвестная (не обрабатываемая) ошибка;
// - "СервисВременноНеДоступен" - на сервер ведутся регламентные работы;
// - "НетДоступаКПрограмме" - отсутствует доступ к программе на Портале 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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПриОпределенииИспользуемыхВерсийВнешнихКомпонент (БСП)
ОбновитьВнешниеКомпоненты (БСП)
СвойстваВнешнейКомпоненты (БСП)
ДоступнаЗагрузкаВнешнихКомпонент (БСП)