РазорватьСоединенияСИнформационнойБазой (БСП)

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

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

// Разрывает соединения с информационной базой по фильтру.
//
// Параметры:
//   ПараметрыАдминистрированияКластера - Структура - структура, описывающая параметры подключения к кластеру серверов,
//                  описание см. АдминистрированиеКластера.ПараметрыАдминистрированияКластера().
//   ПараметрыАдминистрированияИБ - Структура - структура, описывающая параметры подключения к информационной базе,
//                  описание см. АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера().
//   Фильтр - Описание условия фильтрации сеансов, описания которых требуется получить.
//      Варианты:
//         1. Массив структур, описывающих условия фильтрации сеансов. Поля структур, входящих в массив:
//            Свойство - Строка, имя свойства, по которому осуществляется фильтрация. Допустимые значения - см.
//               Возвращаемое значение функции АдминистрированиеКластера.СвойстваСеанса(),
//            ВидСравнения - значение системного перечисления ВидСравнения, вид сравнения значений сеансов с указанным
//               в условии фильтра. Допустимые значения:
//                  ВидСравнения.Равно,
//                  ВидСравнения.НеРавно,
//                  ВидСравнения.Больше (только для числовых значений),
//                  ВидСравнения.БольшеИлиРавно (только для числовых значений),
//                  ВидСравнения.Меньше (только для числовых значений),
//                  ВидСравнения.МеньшеИлиРавно (только для числовых значений),
//                  ВидСравнения.ВСписке,
//                  ВидСравнения.НеВСписке,
//                  ВидСравнения.Интервал (только для числовых значений),
//                  ВидСравнения.ИнтервалВключаяГраницы (только для числовых значений),
//                  ВидСравнения.ИнтервалВключаяНачало (только для числовых значений),
//                  ВидСравнения.ИнтервалВключаяОкончание (только для числовых значений),
//            Значение - Число, Строка, Дата, Булево, СписокЗначений, Массив, Структура - значение, с которым
//               сравнивается значение соответствующего свойства сеанса. При ВидСравнения.ВСписке и ВидСравнения.НеВСписке
//               в качестве значения должны передаваться СписокЗначений или Массив, содержащие набор значений, с которыми
//               будет выполняться сравнение. При ВидСравнения.Интервал, ВидСравнения.ИнтервалВключаяГраницы,
//               ВидСравнения.ИнтервалВключаяНачало и ВидСравнения.ИнтервалВключаяОкончание в качестве значения должны
//               передаваться структуры с полями С и По, значения которых образуют интервал, с которым будет выполняться
//               соответствующее сравнение,
//         2. Структура (упрощенный вариант), ключ - Имя свойства сеанса (см. выше), значение - значение, с которым
//            выполняется сравнение. При использовании данного варианта описания фильтра сравнение всегда выполняется на
//            равенство.
//
Процедура РазорватьСоединенияСИнформационнойБазой(Знач ПараметрыАдминистрированияКластера, Знач ПараметрыАдминистрированияИБ, Знач Фильтр = Неопределено) Экспорт
	
	ИдентификаторКластера = ИдентификаторКластера(ПараметрыАдминистрированияКластера);
	ИдентификаторИнформационнойБазы = ИдентификаторИнформационнойБазы(ИдентификаторКластера, ПараметрыАдминистрированияКластера, ПараметрыАдминистрированияИБ);
	
	ПараметрыКластера = ПараметрыКластера(ПараметрыАдминистрированияКластера, ИдентификаторКластера);
	
	Значение = Новый Массив;
	Значение.Добавить("1CV8");               // идентификатор приложения 1С:Предприятие в режиме запуска "Толстый клиент".
	Значение.Добавить("1CV8C");              // идентификатор приложения 1С:Предприятие в режиме запуска "Тонкий клиент".
	Значение.Добавить("WebClient");          // идентификатор приложения 1С:Предприятие в режиме запуска "Веб-клиент".
	Значение.Добавить("Designer");           // идентификатор приложения Конфигуратор.
	Значение.Добавить("COMConnection");      // идентификатор сессии внешнего соединения 1С:Предприятия через COM.
	Значение.Добавить("WSConnection");       // идентификатор сессии Web-сервиса.
	Значение.Добавить("BackgroundJob");      // идентификатор сессии обработки заданий.
	Значение.Добавить("WebServerExtension"); // идентификатор расширения Web-сервера.

	АдминистрированиеКластера.ДобавитьУсловиеФильтра(Фильтр, "ИдентификаторКлиентскогоПриложения", ВидСравнения.ВСписке, Значение);
	
	КоличествоПопыток = 3;
	ВсеСоединенияРазорваны = Ложь;
	
	Для ТекущаяПопытка = 0 По КоличествоПопыток Цикл
	
		Соединения = СвойстваСоединений(ИдентификаторКластера, ПараметрыАдминистрированияКластера, ИдентификаторИнформационнойБазы, ПараметрыАдминистрированияИБ, Фильтр, Ложь);
		
		Если Соединения.Количество() = 0 Тогда
			
			ВсеСоединенияРазорваны = Истина;
			Прервать;
			
		ИначеЕсли ТекущаяПопытка = КоличествоПопыток Тогда
			
			Прервать;
			
		КонецЕсли;
	
		Для Каждого Соединение Из Соединения Цикл
			
			Попытка
				
				Команда = "connection disconnect --process=%1 --connection=%2 --infobase-user=%3 --infobase-pwd=%4 " + ПараметрыКластера;
				ПодставитьПараметрыВКоманду(Команда,
					Соединение.Получить("process"),
					Соединение.Получить("connection"),
					ПараметрыАдминистрированияИБ.ИмяАдминистратораИнформационнойБазы,
					ПараметрыАдминистрированияИБ.ПарольАдминистратораИнформационнойБазы);
				ЗапуститьКоманду(Команда, ПараметрыАдминистрированияКластера);
				
			Исключение
				
				// Соединение могло уже завершиться к моменту вызова rac connection disconnect.
				Продолжить;
				
			КонецПопытки;
			
		КонецЦикла;
		
	КонецЦикла;
	
	Если Не ВсеСоединенияРазорваны Тогда
	
		ВызватьИсключение НСтр("ru = 'Не удалось разорвать соединения.'");
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

РазорватьСоединенияСИнформационнойБазой (БСП)

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

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