ПодключитьТестовыйПериод (БСП)

Автор: 1С
ОбщийМодуль.ПодключениеСервисовСопровождения
БСП

Подключить тестовый период. Выполняет отправку запроса на подключение тестового периода, предварительно проверяя

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

	ИдентификаторТестовогоПериода = ПараметрыЗапроса.Идентификатор;
	СервисСопровождения           = ПараметрыЗапроса.СервисСопровождения;
	
	РезультатОперации = Новый Структура;
	РезультатОперации.Вставить("Ошибка",             Ложь);
	РезультатОперации.Вставить("ИнформацияОбОшибке", "");
	
	ПараметрыПодключения = ИнициализироватьПараметрыПодключенияТестовыхПериод();
	
	// Вызов операции ping.
	ПроверитьДоступностьСервиса(РезультатОперации, ПараметрыПодключения);
	Если РезультатОперации.Ошибка Тогда
		ПоместитьВоВременноеХранилище(РезультатОперации, АдресХранилища);
		Возврат;
	КонецЕсли;
	
	// Вызов операции сервиса.
	URLОперации = URLОперацииСервисаПодключенияТестовыхПериодов(
		"/trial/tariffs/activate",
		ПараметрыПодключения.НастройкиСоединения.ДоменРасположенияСерверовИПП);
	
	Результат = ДанныеАутентификации(URLОперации);
	Если Результат.Ошибка Тогда
		ЗаполнитьЗначенияСвойств(
			РезультатОперации,
			Результат,
			"Ошибка, ИнформацияОбОшибке");
		ПоместитьВоВременноеХранилище(РезультатОперации, АдресХранилища);
		Возврат;
	КонецЕсли;
	
	ДанныеАутентификации = Результат.ДанныеАутентификации;
	
	ПараметрыЗапросаJSON = tariffsActivate(
		ИдентификаторТестовогоПериода,
		ДанныеАутентификации,
		ИнтернетПоддержкаПользователей.ДополнительныеПараметрыВызоваОперацииСервиса());
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type", "application/json");
	
	ПараметрыОтправки = Новый Структура;
	ПараметрыОтправки.Вставить("Метод"                   , "POST");
	ПараметрыОтправки.Вставить("ФорматОтвета"            , 1);
	ПараметрыОтправки.Вставить("Заголовки"               , Заголовки);
	ПараметрыОтправки.Вставить("ДанныеДляОбработки"      , ПараметрыЗапросаJSON);
	ПараметрыОтправки.Вставить("ФорматДанныхДляОбработки", 1);
	ПараметрыОтправки.Вставить("НастройкиПрокси"         , ПараметрыПодключения.НастройкиПроксиСервера);
	ПараметрыОтправки.Вставить("Таймаут"                 , 30);
	
	РезультатОтправки = ИнтернетПоддержкаПользователей.ЗагрузитьСодержимоеИзИнтернет(
		URLОперации,
		,
		,
		ПараметрыОтправки);
	
	Если Не ПустаяСтрока(РезультатОтправки.КодОшибки) Тогда
		
		РезультатОперации.Ошибка             = Истина;
		РезультатОперации.ИнформацияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Ошибка при подключении тестового периода:
				|%1'"),
			РезультатОтправки.СообщениеОбОшибке);
			
		ПодробноеОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось подключить тестовый период.
				|При активации тестового периода сервис вернул ошибку: %1.
				|Причина:
				|%2'"),
			URLОперации,
			РезультатОтправки.ИнформацияОбОшибке);
		ЗаписатьИнформациюВЖурналРегистрации(ПодробноеОписаниеОшибки);
		
		ПоместитьВоВременноеХранилище(РезультатОперации, АдресХранилища);
		Возврат;
		
	КонецЕсли;
	
	ИдентификаторЗапроса = ПрочитатьДанные_tariffsActivate(РезультатОтправки.Содержимое);
	РезультатОперации.Вставить("ИдентификаторЗапроса", ИдентификаторЗапроса);
	
	// Активация тестового периода может повлиять на правила предоставления
	// тестовых периодов, поэтому необходимо принудительно обновлять кэш.
	Если Не РезультатОперации.Ошибка Тогда
		РегистрыСведений.КэшТестовыхПериодов.ОчиститьКэшТестовыхПериодов(СервисСопровождения);
	КонецЕсли;
	
	ПоместитьВоВременноеХранилище(РезультатОперации, АдресХранилища);
	
КонецПроцедуры

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

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

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

ТестовыеПериодыСервисаСопровождения (БСП)

ДоступноПодключениеТестовогоПериода (БСП)

ПодключениеТестовыхПериодов_ПроверитьСостояниеЗапроса (БСП)

ПодключениеТестовыхПериодов (БСП)

ПроверитьСостояниеЗапроса (БСП)

ОтключитьИнтернетПоддержкуПользователей (БСП)

ПроверитьСостояниеЗапросаНаПодключение (БСП)

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