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

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

Тестовые периоды сервиса сопровождения. Получает информацию о тестовых периодах предварительно обновляя кэш тестовых период,

// Получает информацию о тестовых периодах предварительно обновляя кэш тестовых период,
// если данные устарели.
//
// Параметры:
//  Идентификатор  - Строка - идентификатор сервиса в системе Портал 1С:ИТС.
//
// Возвращаемое значение:
//  Структура - информация о тестовых периодах:
//    *ПодключениеДоступно               - Булево - признак возможности подключения;
//    *ПодключениеСервиса                - Булево - выполняется обработка запросов
//                                         на подключение;
//    *ИнформацияОбОшибке                - Строка - информация об ошибках выявленных при
//                                         обновлении данных кэша;
//    *ИдентификаторСервисаСопровождения - Строка - идентификатор сервиса в системе Портал 1С:ИТС;
//    *ТестовыеПериоды                   - Массив - доступные тестовые периоды. Содержит
//                                         элементы типа Структура:
//      **Идентификатор                  - Строка - уникальный идентификатор тестового периода;
//      **Наименование                   - Строка - наименование тестового периода;
//      **Описание                       - Строка - описание тестового периода.
//    *ДанныеОтображения                 - Структура - содержит о запросах на подключение:
//      **РежимРегламентногоЗадания      - Булево - если истина, регламентное задание проверки запроса будет удалено;
//      **НаименованиеПодключаемого      - Строка - наименование тестового периода, который сейчас подключается;
//      **ИдентификаторЗапроса           - Строка - идентификатор запроса на подключение.
//
Функция ТестовыеПериодыСервисаСопровождения(Идентификатор) Экспорт
	
	ДанныеОтображения = Новый Структура;
	ДанныеОтображения.Вставить("РежимРегламентногоЗадания",     Ложь);
	ДанныеОтображения.Вставить("НаименованиеПодключаемого",     "");
	ДанныеОтображения.Вставить("ИдентификаторЗапроса",          "");
	ДанныеОтображения.Вставить("ИдентификаторТестовогоПериода", "");
	
	ОписательПодключения = Новый Структура;
	ОписательПодключения.Вставить("Ошибка",              Ложь);
	ОписательПодключения.Вставить("ПодключениеСервиса",  Ложь);
	ОписательПодключения.Вставить("ПодключениеДоступно", Истина);
	ОписательПодключения.Вставить("ИнформацияОбОшибке",  "");
	ОписательПодключения.Вставить("ДанныеОтображения",   ДанныеОтображения);
	
	Если Не РазрешеноПодключениеТестовыхПериодов() Тогда
		ОписательПодключения.ПодключениеДоступно = Ложь;
		Возврат ОписательПодключения;
	КонецЕсли;
	
	Идентификаторы = Новый Массив;
	Идентификаторы.Добавить(Идентификатор);
	
	ЗапросыНаПодключение = АктивныеЗапросыНаПодключение(Идентификаторы, Истина);
	Если ЗапросыНаПодключение.Количество()>0 Тогда
		ОписательПодключения.ПодключениеСервиса = Истина;
		
		// Если в данный момент производится подключение тестового периода,
		// необходимо заполнить информацию о подключении.
		Пользователь = Пользователи.ТекущийПользователь();
		Для Каждого ПараметрыЗапроса Из ЗапросыНаПодключение Цикл
			ДанныеОтображения.НаименованиеПодключаемого     = ПараметрыЗапроса.Наименование;
			ДанныеОтображения.ИдентификаторЗапроса          = ПараметрыЗапроса.ИдентификаторЗапроса;
			ДанныеОтображения.ИдентификаторТестовогоПериода = ПараметрыЗапроса.ИдентификаторТестовогоПериода;
			Если ПараметрыЗапроса.Пользователь = Пользователь Тогда
				ДанныеОтображения.РежимРегламентногоЗадания = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Возврат ОписательПодключения;
	КонецЕсли;
	
	РезультатОбновления = ОбновитьКэшТестовыхПериодов(Идентификаторы);
	Если РезультатОбновления.Ошибка Тогда
		ОписательПодключения.ПодключениеДоступно = Ложь;
		ОписательПодключения.Ошибка              = Истина;
		ОписательПодключения.ИнформацияОбОшибке  = РезультатОбновления.ИнформацияОбОшибке;
		Возврат ОписательПодключения;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ИдентификаторыСервисовСопровождения.Ссылка КАК СервисаСопровождения,
		|	КэшТестовыхПериодов.Идентификатор КАК Идентификатор,
		|	КэшТестовыхПериодов.Наименование КАК Наименование,
		|	КэшТестовыхПериодов.Описание КАК Описание
		|ИЗ
		|	Справочник.ИдентификаторыСервисовСопровождения КАК ИдентификаторыСервисовСопровождения
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КэшТестовыхПериодов КАК КэшТестовыхПериодов
		|		ПО (КэшТестовыхПериодов.ИдентификаторСервисаСопровождения = ИдентификаторыСервисовСопровождения.Ссылка)
		|			И (ИдентификаторыСервисовСопровождения.ИдентификаторСервиса = &Идентификатор)
		|ГДЕ
		|	ИдентификаторыСервисовСопровождения.ИдентификаторСервиса = &Идентификатор
		|ИТОГИ ПО
		|	СервисаСопровождения";
	
	Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Если РезультатЗапроса.Пустой() Тогда
		ОписательПодключения.ПодключениеДоступно = Ложь;
		Возврат ОписательПодключения;
	КонецЕсли;
	
	ВыборкаИдентификатор = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Если ВыборкаИдентификатор.Следующий() Тогда
		
		ОписательПодключения.Вставить("СервисаСопровождения", ВыборкаИдентификатор.СервисаСопровождения);
		ВыборкаДетальныеЗаписи = ВыборкаИдентификатор.Выбрать();
		
		ТестовыеПериоды = Новый Массив;
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			// Если в выборке существует, хотя бы один тестовый период
			// с не заполненным идентификатором, считается, что сервис
			// не имеет доступных для подключения тестовых периодов.
			Если Не ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Идентификатор) Тогда
				ОписательПодключения.ПодключениеДоступно = Ложь;
				ТестовыеПериоды                          = Новый Массив;
				Прервать;
			КонецЕсли;
			ОписательТестовогоПериода = Новый Структура;
			ОписательТестовогоПериода.Вставить("Идентификатор", ВыборкаДетальныеЗаписи.Идентификатор);
			ОписательТестовогоПериода.Вставить("Наименование",  ВыборкаДетальныеЗаписи.Наименование);
			ОписательТестовогоПериода.Вставить("Описание",      ВыборкаДетальныеЗаписи.Описание);
			ТестовыеПериоды.Добавить(ОписательТестовогоПериода);
		КонецЦикла;
		
		Если ТестовыеПериоды.Количество() = 0 Тогда
			ОписательПодключения.ПодключениеДоступно = Ложь;
		КонецЕсли;
		
		ОписательПодключения.Вставить("ТестовыеПериоды", ТестовыеПериоды);
		
	КонецЕсли;
	
	Возврат ОписательПодключения;
	
КонецФункции

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

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

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

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

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

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

ПриОпределенииСервисовСопровождения (БСП)

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

НовыйОписательСервиса (БСП)

TurboConf ИР адаптер 2.63