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