УдалитьСеансыИнформационнойБазы (БСП)

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

Удалить сеансы информационной базы. Удаляет сеансы с информационной базой по фильтру.

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

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

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

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

УдалитьСеансыИнформационнойБазы (БСП)

УдалитьВсеСеансыКромеТекущего (БСП)

СеансыИнформационнойБазы (БСП)

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