Тестовые периоды сервиса сопровождения. Получает информацию о тестовых периодах предварительно обновляя кэш тестовых период,
// Получает информацию о тестовых периодах предварительно обновляя кэш тестовых период,
// если данные устарели.
//
// Параметры:
// Идентификатор - Строка - идентификатор сервиса в системе Портал 1С:ИТС.
//
// Возвращаемое значение:
// Структура - информация о тестовых периодах:
// *ПодключениеДоступно - Булево - признак возможности подключения;
// *ПодключениеСервиса - Булево - выполняется обработка запросов
// на подключение;
// *ИнформацияОбОшибке - Строка - информация об ошибках выявленных при
// обновлении данных кэша;
// *ИдентификаторСервисаСопровождения - Строка - идентификатор сервиса в системе Портал 1С:ИТС;
// *ТестовыеПериоды - Массив - доступные тестовые периоды. Содержит
// элементы типа Структура:
// **Идентификатор - Строка - уникальный идентификатор тестового периода;
// **Наименование - Строка - наименование тестового периода;
// **Описание - Строка - описание тестового периода.
// *ДанныеОтображения - Структура - содержит о запросах на подключение:
// **РежимРегламентногоЗадания - Булево - если истина, регламентное задание проверки запроса будет удалено;
// **НаименованиеПодключаемого - Строка - наименование тестового периода, который сейчас подключается;
// **ИдентификаторЗапроса - Строка - идентификатор запроса на подключение.
//
Функция ТестовыеПериодыСервисаСопровождения(Идентификатор) Экспорт
ДанныеОтображения = Новый Структура;
ДанныеОтображения.Вставить("РежимРегламентногоЗадания", Ложь);
ДанныеОтображения.Вставить("НаименованиеПодключаемого", "");
ДанныеОтображения.Вставить("ИдентификаторЗапроса", "");
ДанныеОтображения.Вставить("ИдентификаторТестовогоПериода", "");
ОписательПодключения = Новый Структура;
ОписательПодключения.Вставить("Ошибка", Ложь);
ОписательПодключения.Вставить("ПодключениеСервиса", Ложь);
ОписательПодключения.Вставить("ПодключениеДоступно", Истина);
ОписательПодключения.Вставить("ИнформацияОбОшибке", "");
ОписательПодключения.Вставить("ДанныеОтображения", ДанныеОтображения);
Если Не РазрешеноПодключениеТестовыхПериодов() Тогда
ОписательПодключения.ПодключениеДоступно = Ложь;
Возврат ОписательПодключения;
КонецЕсли;
Идентификаторы = Новый Массив;
Идентификаторы.Добавить(Идентификатор);
ЗапросыНаПодключение = АктивныеЗапросыНаПодключение(Идентификаторы, Истина);
Если ЗапросыНаПодключение.Количество()>0 Тогда
ОписательПодключения.ПодключениеСервиса = Истина;
// Если в данный момент производится подключение тестового периода,
// необходимо заполнить информацию о подключении.
Пользователь = Пользователи.ТекущийПользователь();
Для Каждого ПараметрыЗапроса Из ЗапросыНаПодключение Цикл
ДанныеОтображения.НаименованиеПодключаемого = ПараметрыЗапроса.Наименование;
ДанныеОтображения.ИдентификаторЗапроса = ПараметрыЗапроса.ИдентификаторЗапроса;
ДанныеОтображения.ИдентификаторТестовогоПериода = ПараметрыЗапроса.ИдентификаторТестовогоПериода;
Если ПараметрыЗапроса.Пользователь = Пользователь Тогда
ДанныеОтображения.РежимРегламентногоЗадания = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат ОписательПодключения;
КонецЕсли;
РезультатОбновления = ОбновитьКэшТестовыхПериодов(Идентификаторы);
Если РезультатОбновления.Ошибка Тогда
ОписательПодключения.ПодключениеДоступно = Ложь;
ОписательПодключения.Ошибка = Истина;
ОписательПодключения.ИнформацияОбОшибке = РезультатОбновления.ИнформацияОбОшибке;
Возврат ОписательПодключения;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИдентификаторыСервисовСопровождения.Ссылка КАК СервисаСопровождения,
| КэшТестовыхПериодов.Идентификатор КАК Идентификатор,
| КэшТестовыхПериодов.Наименование КАК Наименование,
| КэшТестовыхПериодов.Описание КАК Описание
|ИЗ
| Справочник.ИдентификаторыСервисовСопровождения КАК ИдентификаторыСервисовСопровождения
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КэшТестовыхПериодов КАК КэшТестовыхПериодов
| ПО (КэшТестовыхПериодов.ИдентификаторСервисаСопровождения = ИдентификаторыСервисовСопровождения.Ссылка)
| И (ИдентификаторыСервисовСопровождения.ИдентификаторСервиса = &Идентификатор)
|ГДЕ
| ИдентификаторыСервисовСопровождения.ИдентификаторСервиса = &Идентификатор
|ИТОГИ ПО
| СервисаСопровождения";
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОписательПодключения.ПодключениеДоступно = Ложь;
Возврат ОписательПодключения;
КонецЕсли;
ВыборкаИдентификатор = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаИдентификатор.Следующий() Тогда
ОписательПодключения.Вставить("СервисаСопровождения", ВыборкаИдентификатор.СервисаСопровождения);
ВыборкаДетальныеЗаписи = ВыборкаИдентификатор.Выбрать();
ТестовыеПериоды = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Если в выборке существует, хотя бы один тестовый период
// с не заполненным идентификатором, считается, что сервис
// не имеет доступных для подключения тестовых периодов.
Если Не ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Идентификатор) Тогда
ОписательПодключения.ПодключениеДоступно = Ложь;
ТестовыеПериоды = Новый Массив;
Прервать;
КонецЕсли;
ОписательТестовогоПериода = Новый Структура;
ОписательТестовогоПериода.Вставить("Идентификатор", ВыборкаДетальныеЗаписи.Идентификатор);
ОписательТестовогоПериода.Вставить("Наименование", ВыборкаДетальныеЗаписи.Наименование);
ОписательТестовогоПериода.Вставить("Описание", ВыборкаДетальныеЗаписи.Описание);
ТестовыеПериоды.Добавить(ОписательТестовогоПериода);
КонецЦикла;
Если ТестовыеПериоды.Количество() = 0 Тогда
ОписательПодключения.ПодключениеДоступно = Ложь;
КонецЕсли;
ОписательПодключения.Вставить("ТестовыеПериоды", ТестовыеПериоды);
КонецЕсли;
Возврат ОписательПодключения;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ДоступноПодключениеТестовогоПериода (БСП)
ПодключитьТестовыйПериод (БСП)
ПодключениеТестовыхПериодов_ПроверитьСостояниеЗапроса (БСП)
ПриОпределенииСервисовСопровождения (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)