Свойства соединений. Возвращает описания соединений с информационной базой.
// Возвращает описания соединений с информационной базой.
//
// Параметры:
// ИдентификаторКластера - Строка - внутренний идентификатор кластера серверов.
// ПараметрыАдминистрированияКластера - Структура - структура, описывающая параметры подключения к кластеру серверов,
// описание см. АдминистрированиеКластера.ПараметрыАдминистрированияКластера().
// ИдентификаторИнформационнойБазы - Строка - внутренний идентификатор информационной базы.
// ПараметрыАдминистрированияИБ - Структура - структура, описывающая параметры подключения к информационной базе,
// описание см. АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера().
// Фильтр - Описание условия фильтрации сеансов, описания которых требуется получить.
// Варианты:
// 1. Массив структур, описывающих условия фильтрации сеансов. Поля структур, входящих в массив:
// Свойство - Строка, имя свойства, по которому осуществляется фильтрация. Допустимые значения - см.
// Возвращаемое значение функции АдминистрированиеКластера.СвойстваСеанса(),
// ВидСравнения - значение системного перечисления ВидСравнения, вид сравнения значений сеансов с указанным
// в условии фильтра. Допустимые значения:
// ВидСравнения.Равно,
// ВидСравнения.НеРавно,
// ВидСравнения.Больше (только для числовых значений),
// ВидСравнения.БольшеИлиРавно (только для числовых значений),
// ВидСравнения.Меньше (только для числовых значений),
// ВидСравнения.МеньшеИлиРавно (только для числовых значений),
// ВидСравнения.ВСписке,
// ВидСравнения.НеВСписке,
// ВидСравнения.Интервал (только для числовых значений),
// ВидСравнения.ИнтервалВключаяГраницы (только для числовых значений),
// ВидСравнения.ИнтервалВключаяНачало (только для числовых значений),
// ВидСравнения.ИнтервалВключаяОкончание (только для числовых значений),
// Значение - Число, Строка, Дата, Булево, СписокЗначений, Массив, Структура - значение, с которым
// сравнивается значение соответствующего свойства сеанса. При ВидСравнения.ВСписке и ВидСравнения.НеВСписке
// в качестве значения должны передаваться СписокЗначений или Массив, содержащие набор значений, с которыми
// будет выполняться сравнение. При ВидСравнения.Интервал, ВидСравнения.ИнтервалВключаяГраницы,
// ВидСравнения.ИнтервалВключаяНачало и ВидСравнения.ИнтервалВключаяОкончание в качестве значения должны
// передаваться структуры с полями С и По, значения которых образуют интервал, с которым будет выполняться
// соответствующее сравнение,
// 2. Структура (упрощенный вариант), ключ - Имя свойства сеанса (см. выше), значение - значение, с которым
// выполняется сравнение. При использовании данного варианта описания фильтра сравнение всегда выполняется на
// равенство.
// ИспользоватьСловарь - Булево - если Истина - возвращаемый результат будет заполнен с использован словаря, иначе - без
// использования.
//
// Возвращаемое значение:
// Массив - массив структур, описывающих свойства соединений (описание
// см. АдминистрированиеКластера.СвойстваСоединения())
// или массив соответствий, описывающих свойства соединений в нотации утилиты rac
// (при ИспользоватьСловарь = Ложь).
//
Функция СвойстваСоединений(Знач ИдентификаторКластера, Знач ПараметрыАдминистрированияКластера, Знач ИдентификаторИнформационнойБазы, Знач ПараметрыАдминистрированияИБ, Знач Фильтр = Неопределено, Знач ИспользоватьСловарь = Ложь) Экспорт
ПараметрыКластера = ПараметрыКластера(ПараметрыАдминистрированияКластера, ИдентификаторКластера);
Если ИспользоватьСловарь Тогда
Словарь = СловарьСвойствСоединений();
Иначе
Словарь = Неопределено;
Фильтр = ФильтрВНотациюRac(Фильтр, СловарьСвойствСоединений());
КонецЕсли;
Результат = Новый Массив();
РабочиеПроцессы = СвойстваРабочихПроцессов(ИдентификаторКластера, ПараметрыАдминистрированияКластера);
Для Каждого РабочийПроцесс Из РабочиеПроцессы Цикл
Команда = "connection list --process=%1 --infobase=%2 --infobase-user=%3 --infobase-pwd=%4 " + ПараметрыКластера;
ПодставитьПараметрыВКоманду(Команда,
РабочийПроцесс.Получить("process"),
ИдентификаторИнформационнойБазы,
ПараметрыАдминистрированияИБ.ИмяАдминистратораИнформационнойБазы,
ПараметрыАдминистрированияИБ.ПарольАдминистратораИнформационнойБазы);
СоединенияРабочегоПроцесса = ЗапуститьКоманду(Команда, ПараметрыАдминистрированияКластера, Словарь, Фильтр, ТипыСвойствСоединений());
Для Каждого Соединение Из СоединенияРабочегоПроцесса Цикл
Если ИспользоватьСловарь Тогда
Если Соединение.РежимСоединенияСБазойДанных = "none" Тогда
Соединение.Вставить("РежимСоединенияСБазойДанных", 0);
ИначеЕсли Соединение.РежимСоединенияСБазойДанных = "shared" Тогда
Соединение.Вставить("РежимСоединенияСБазойДанных", 1);
Иначе // exclusive
Соединение.Вставить("РежимСоединенияСБазойДанных", 2);
КонецЕсли;
Соединение.Вставить("РежимСоединенияСИнформационнойБазой", ?(Соединение.РежимСоединенияСИнформационнойБазой = "shared", 0, 1));
Соединение.Вставить("УправлениеНаходитсяНаСервере", ?(Соединение.УправлениеНаходитсяНаСервере = "client", 0, 1));
Иначе
Соединение.Вставить("process", РабочийПроцесс.Получить("process"));
КонецЕсли;
Результат.Добавить(Соединение);
КонецЦикла;
КонецЦикла;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////