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

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

Обновить общую компоненту. См. ВнешниеКомпонентыСервер.ОбновитьОбщуюКомпоненту.

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

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

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

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

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

ОбновитьКомпонентыСПортала (БСП)

ОбновитьКомпонентыСПорталаПриФормированииРезультата (БСП)

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

ОбновитьНастройкиПолучениеВнешнихКомпонент (БСП)

ОбновитьОбщиеДанныеПоТарификации (БСП)

ОписаниеПоставляемойОбщейКомпоненты (БСП)

ОбновитьДанныеАбонентаПоТарификацииВПриложении (БСП)

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