diff --git a/lib.config b/lib.config
index 5b1a734..f7eba4d 100644
--- a/lib.config
+++ b/lib.config
@@ -4,6 +4,7 @@
+
@@ -26,6 +27,8 @@
+
+
diff --git a/packagedef b/packagedef
index 768c02f..965603a 100644
--- a/packagedef
+++ b/packagedef
@@ -1,6 +1,6 @@
Описание.Имя("irac")
- .Версия("0.9.3")
+ .Версия("0.10.0")
.Автор("Artem Kuznetsov")
.АдресАвтора("ArKuznetsov@gmail.com")
.Описание("Библиотека администрирования кластера серверов 1С")
diff --git a/src/lib.config b/src/lib.config
index 6079df8..61884c2 100644
--- a/src/lib.config
+++ b/src/lib.config
@@ -4,6 +4,7 @@
+
@@ -26,6 +27,8 @@
+
+
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\220\320\263\320\265\320\275\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\220\320\263\320\265\320\275\321\202\320\260.os"
index 46bfed5..e70996e 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\220\320\263\320\265\320\275\321\202\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\220\320\263\320\265\320\275\321\202\320\260.os"
@@ -24,13 +24,13 @@
Кластер_Агент = АгентКластера;
- ПараметрыОбъекта = Новый КомандыОбъекта("agent.admin");
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.АдминистраторыАгента);
Элементы = Новый ОбъектыКластера(ЭтотОбъект);
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список администраторов агента кластера 1С от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
@@ -58,7 +58,18 @@
Кластер_Агент.ВыводКоманды(Ложь));
КонецЕсли;
- Элементы.Заполнить(Кластер_Агент.ВыводКоманды());
+ МассивРезультатов = Кластер_Агент.ВыводКоманды();
+
+ МассивАдминистраторов = Новый Массив();
+ Для Каждого ТекОписание Из МассивРезультатов Цикл
+ Администратор = Новый ОбъектКластера(Кластер_Агент,
+ Кластер_Агент,
+ Перечисления.РежимыАдминистрирования.АдминистраторыАгента,
+ ТекОписание);
+ МассивАдминистраторов.Добавить(Администратор);
+ КонецЦикла;
+
+ Элементы.Заполнить(МассивАдминистраторов);
Элементы.УстановитьАктуальность();
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
index 7003ee6..234b326 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
@@ -27,17 +27,17 @@
Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;
- ПараметрыОбъекта = Новый КомандыОбъекта("cluster.admin");
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.АдминистраторыКластера);
Элементы = Новый ОбъектыКластера(ЭтотОбъект);
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список администраторов кластера 1С от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
// - Ложь - данные будут получены если истекло время актуальности
// или данные не были получены ранее
//
@@ -62,7 +62,18 @@
Кластер_Агент.ВыводКоманды(Ложь));
КонецЕсли;
- Элементы.Заполнить(Кластер_Агент.ВыводКоманды());
+ МассивРезультатов = Кластер_Агент.ВыводКоманды();
+
+ МассивАдминистраторов = Новый Массив();
+ Для Каждого ТекОписание Из МассивРезультатов Цикл
+ Администратор = Новый ОбъектКластера(Кластер_Агент,
+ Кластер_Владелец,
+ Перечисления.РежимыАдминистрирования.АдминистраторыКластера,
+ ТекОписание);
+ МассивАдминистраторов.Добавить(Администратор);
+ КонецЦикла;
+
+ Элементы.Заполнить(МассивАдминистраторов);
Элементы.УстановитьАктуальность();
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.os"
index 55fee48..4c3666c 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.os"
@@ -29,6 +29,8 @@
//
Процедура ПриСозданииОбъекта(АгентКластера, Кластер, ИБ = Неопределено, Сеанс = Неопределено, Соединение = Неопределено)
+ Лог = Служебный.Лог();
+
Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;
ИБ_Владелец = ИБ;
@@ -41,11 +43,11 @@
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список блокировок от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
// - Ложь - данные будут получены если истекло время актуальности
// или данные не были получены ранее
//
@@ -84,7 +86,16 @@
МассивРезультатов = Кластер_Агент.ВыводКоманды();
- Элементы.Заполнить(МассивРезультатов);
+ МассивБлокировок = Новый Массив();
+ Для Каждого ТекОписание Из МассивРезультатов Цикл
+ Блокировка = Новый ОбъектКластера(Кластер_Агент,
+ Кластер_Владелец,
+ Перечисления.РежимыАдминистрирования.Блокировки,
+ ТекОписание);
+ МассивБлокировок.Добавить(Блокировка);
+ КонецЦикла;
+
+ Элементы.Заполнить(МассивБлокировок);
Элементы.УстановитьАктуальность();
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\260\321\217\320\221\320\260\320\267\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\260\321\217\320\221\320\260\320\267\320\260.os"
index df4f8d8..3258982 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\260\321\217\320\221\320\260\320\267\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\260\321\217\320\221\320\260\320\267\320\260.os"
@@ -13,7 +13,7 @@
Перем ИБ_ПолноеОписание; // Истина - получено полное описание; Ложь - сокращенное
Перем ИБ_Сеансы;
Перем ИБ_Соединения;
-Перем ИБ_Параметры;
+Перем ИБ_Свойства;
Перем Кластер_Агент;
Перем Кластер_Владелец;
@@ -37,6 +37,8 @@
//
Процедура ПриСозданииОбъекта(АгентКластера, Кластер, ИБ, Администратор = "", ПарольАдминистратора = "")
+ Лог = Служебный.Лог();
+
Если НЕ ЗначениеЗаполнено(ИБ) Тогда
Возврат;
КонецЕсли;
@@ -75,7 +77,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(ИБ_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(ИБ_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -112,7 +114,7 @@
ИБ_Имя = ДанныеЗаполнения.Получить("name");
ИБ_Описание = ДанныеЗаполнения.Получить("descr");
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, ИБ_Параметры, ДанныеЗаполнения);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, ИБ_Свойства, ДанныеЗаполнения);
КонецПроцедуры // ЗаполнитьПараметрыИБ()
@@ -355,7 +357,7 @@
ИначеЕсли НЕ Найти(ВРЕг("ПолноеОписание"), ВРег(ИмяПоля)) = 0 Тогда
Возврат ИБ_ПолноеОписание;
Иначе
- ЗначениеПоля = ИБ_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = ИБ_Свойства.Получить(ИмяПоля);
КонецЕсли;
Если ЗначениеПоля = Неопределено Тогда
@@ -363,7 +365,7 @@
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = ИБ_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = ИБ_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
@@ -446,5 +448,3 @@
Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
КонецПроцедуры // Удалить()
-
-Лог = Логирование.ПолучитьЛог("oscript.lib.irac");
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\221\320\260\320\267\321\213.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\221\320\260\320\267\321\213.os"
index 6842ed1..5cfcaaf 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\221\320\260\320\267\321\213.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\221\320\260\320\267\321\213.os"
@@ -33,7 +33,7 @@
КонецПроцедуры
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список информационных баз от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os"
index 803848f..d41088a 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os"
@@ -11,7 +11,7 @@
Перем Кластер_Имя; // name
Перем Кластер_АдресСервера; // host
Перем Кластер_ПортСервера; // port
-Перем Кластер_Параметры;
+Перем Кластер_Свойства;
Перем Кластер_Агент;
Перем Кластер_Администраторы;
@@ -26,6 +26,7 @@
Перем Кластер_ИБ;
Перем Кластер_Профили;
Перем Кластер_Счетчики;
+Перем Кластер_Ограничения;
Перем ПараметрыОбъекта;
@@ -80,8 +81,9 @@
Кластер_Блокировки = Новый Блокировки(Кластер_Агент, ЭтотОбъект);
Кластер_Профили = Новый ПрофилиБезопасности(Кластер_Агент, ЭтотОбъект);
Кластер_Счетчики = Новый СчетчикиРесурсов(Кластер_Агент, ЭтотОбъект);
+ Кластер_Ограничения = Новый ОграниченияРесурсов(Кластер_Агент, ЭтотОбъект);
- Кластер_Параметры = Неопределено;
+ Кластер_Свойства = Неопределено;
КонецПроцедуры // ПриСозданииОбъекта()
@@ -95,7 +97,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Кластер_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Кластер_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -131,7 +133,7 @@
Кластер_ПортСервера = ДанныеЗаполнения.Получить("port");
Кластер_Имя = ДанныеЗаполнения.Получить("name");
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Кластер_Параметры, ДанныеЗаполнения);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Кластер_Свойства, ДанныеЗаполнения);
КонецПроцедуры // ЗаполнитьПараметрыКластера()
@@ -407,6 +409,17 @@
КонецФункции // СчетчикиРесурсов()
+// Функция возвращает список ограничений ресурсов кластера 1С
+//
+// Возвращаемое значение:
+// ОграниченияРесурсов - список ограничений ресурсов кластера 1С
+//
+Функция ОграниченияРесурсов() Экспорт
+
+ Возврат Кластер_Ограничения;
+
+КонецФункции // ОграниченияРесурсов()
+
// Функция возвращает значение параметра кластера 1С
//
// Параметры:
@@ -431,7 +444,7 @@
ИначеЕсли НЕ Найти(ВРЕг("ПортСервера, port"), ВРег(ИмяПоля)) = 0 Тогда
Возврат Кластер_ПортСервера;
Иначе
- ЗначениеПоля = Кластер_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Кластер_Свойства.Получить(ИмяПоля);
КонецЕсли;
Если ЗначениеПоля = Неопределено Тогда
@@ -439,7 +452,7 @@
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Кластер_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Кластер_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
@@ -478,6 +491,6 @@
Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
- Кластер_Параметры = Неопределено;
+ Кластер_Свойства = Неопределено;
КонецПроцедуры // Изменить()
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200\321\213.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200\321\213.os"
index 7a3b768..3fe97cf 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200\321\213.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200\321\213.os"
@@ -30,7 +30,7 @@
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список кластеров от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
index d527216..1de5900 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
@@ -11,7 +11,7 @@
Перем Менеджер_ИдПроцесса; // pid
Перем Менеджер_Адрес; // host
Перем Менеджер_Порт; // port
-Перем Менеджер_Параметры;
+Перем Менеджер_Свойства;
Перем Кластер_Агент;
Перем Кластер_Владелец;
@@ -66,7 +66,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Менеджер_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Менеджер_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -110,7 +110,7 @@
Менеджер_Порт = ДанныеЗаполнения.Получить("port");
Менеджер_ИдПроцесса = ДанныеЗаполнения.Получить("pid");
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Менеджер_Параметры, ДанныеЗаполнения);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Менеджер_Свойства, ДанныеЗаполнения);
КонецПроцедуры // ЗаполнитьПараметрыМенеджера()
@@ -205,7 +205,7 @@
ИначеЕсли НЕ Найти(ВРЕг("Порт, port"), ВРег(ИмяПоля)) = 0 Тогда
Возврат Менеджер_Порт;
Иначе
- ЗначениеПоля = Менеджер_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Менеджер_Свойства.Получить(ИмяПоля);
КонецЕсли;
Если ЗначениеПоля = Неопределено Тогда
@@ -213,7 +213,7 @@
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Менеджер_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Менеджер_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
index a85e19e..06ca991 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
@@ -33,7 +33,7 @@
КонецПроцедуры
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список менеджеров кластера от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
index e0492c0..8cfdec4 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
@@ -9,7 +9,7 @@
Перем Требование_Ид; // rule
Перем Требование_Позиция; // position
-Перем Требование_Параметры;
+Перем Требование_Свойства;
Перем Кластер_Агент;
Перем Кластер_Владелец;
@@ -47,7 +47,7 @@
Если ТипЗнч(Требование) = Тип("Соответствие") Тогда
Требование_Ид = Требование["rule"];
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Требование_Параметры, Требование);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Требование_Свойства, Требование);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
Иначе
Требование_Ид = Требование;
@@ -68,7 +68,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Требование_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Требование_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -93,7 +93,7 @@
МассивРезультатов = Кластер_Агент.ВыводКоманды();
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Требование_Параметры, МассивРезультатов[0]);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Требование_Свойства, МассивРезультатов[0]);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
@@ -161,14 +161,14 @@
Возврат Требование_Позиция;
КонецЕсли;
- ЗначениеПоля = Требование_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Требование_Свойства.Получить(ИмяПоля);
Если ЗначениеПоля = Неопределено Тогда
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Требование_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Требование_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
index dca6a4e..7df66f1 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\244\321\203\320\275\320\272\321\206\320\270\320\276\320\275\320\260\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
@@ -36,7 +36,7 @@
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список требований назначения функциональности от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\212\320\265\320\272\321\202\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\212\320\265\320\272\321\202\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
new file mode 100644
index 0000000..3e2b651
--- /dev/null
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\212\320\265\320\272\321\202\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
@@ -0,0 +1,116 @@
+// ----------------------------------------------------------
+// This Source Code Form is subject to the terms of the
+// Mozilla Public License, v.2.0. If a copy of the MPL
+// was not distributed with this file, You can obtain one
+// at http://mozilla.org/MPL/2.0/.
+// ----------------------------------------------------------
+// Codebase: https://github.com/ArKuznetsov/irac/
+// ----------------------------------------------------------
+
+Перем Объект_Тип;
+Перем Объект_Свойства;
+
+Перем Кластер_Агент;
+Перем Кластер_Владелец;
+
+Перем ПараметрыОбъекта;
+
+Перем ПериодОбновления;
+Перем МоментАктуальности;
+
+Перем Лог;
+
+// Конструктор
+//
+// Параметры:
+// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
+// Кластер - Кластер - ссылка на родительский объект кластера
+// ОбъектКластера - Строка, Соответствие - идентификатор объекта в кластере 1С или параметры объекта
+// ТипОбъекта - Перечисления. - имя типа объекта кластера
+// РежимыАдминистрирования
+//
+Процедура ПриСозданииОбъекта(АгентКластера, Кластер, ТипОбъекта, ОбъектКластера)
+
+ Лог = Служебный.Лог();
+
+ Если НЕ ЗначениеЗаполнено(ОбъектКластера) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Объект_Тип = ТипОбъекта;
+
+ ПараметрыОбъекта = Новый КомандыОбъекта(Объект_Тип);
+
+ Кластер_Агент = АгентКластера;
+ Кластер_Владелец = Кластер;
+
+ Если ТипЗнч(ОбъектКластера) = Тип("Соответствие") Тогда
+ ОбъектКластера_Ид = ОбъектКластера[ТипОбъекта];
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Объект_Свойства, ОбъектКластера);
+ МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
+ Иначе
+ Объект_Ид = ОбъектКластера;
+ МоментАктуальности = 0;
+ КонецЕсли;
+
+ ПериодОбновления = 60000;
+
+КонецПроцедуры // ПриСозданииОбъекта()
+
+// Функция возвращает коллекцию параметров объекта
+//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
+// Возвращаемое значение:
+// Соответствие - коллекция параметров объекта, для получения/изменения значений
+//
+Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт
+
+ Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча);
+
+КонецФункции // ПараметрыОбъекта()
+
+// Функция возвращает идентификатор сервера 1С
+//
+// Возвращаемое значение:
+// Строка - идентификатор сервера 1С
+//
+Функция ТипОбъекта() Экспорт
+
+ Возврат Объект_Тип;
+
+КонецФункции // ТипОбъекта()
+
+// Функция возвращает значение параметра объекта кластера 1С
+//
+// Параметры:
+// ИмяПоля - Строка - Имя параметра кластера
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+//
+// Возвращаемое значение:
+// Произвольный - значение параметра объекта кластера 1С
+//
+Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт
+
+ ЗначениеПоля = Неопределено;
+
+ Если НЕ Найти(ВРЕг("Тип, type"), ВРег(ИмяПоля)) = 0 Тогда
+ Возврат Объект_Тип;
+ Иначе
+ ЗначениеПоля = Объект_Свойства.Получить(ИмяПоля);
+ КонецЕсли;
+
+ Если ЗначениеПоля = Неопределено Тогда
+
+ ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
+
+ Если НЕ ОписаниеПараметра = Неопределено Тогда
+ ЗначениеПоля = Объект_Свойства.Получить(ОписаниеПараметра["Имя"]);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат ЗначениеПоля;
+
+КонецФункции // Получить()
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\237\321\200\320\276\321\204\320\270\320\273\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\237\321\200\320\276\321\204\320\270\320\273\321\217.os"
index cc6307f..f047808 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\237\321\200\320\276\321\204\320\270\320\273\321\217.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\237\321\200\320\276\321\204\320\270\320\273\321\217.os"
@@ -15,33 +15,39 @@
Перем ПараметрыОбъекта;
-Перем МоментАктуальности;
-Перем ПериодОбновления;
-
Перем Лог;
-Процедура ПриСозданииОбъекта(Агент, Кластер, Профиль, Тип)
+// Конструктор
+//
+// Параметры:
+// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
+// Кластер - Кластер - ссылка на родительский объект кластера
+// Профиль - ПрофильБезопасности - ссылка на родительский объект кластера
+// Тип - Перечисления. - имя типа объекта профиля
+// ВидыОбъектовПрофиляБезопасности
+//
+Процедура ПриСозданииОбъекта(АгентКластера, Кластер, Профиль, Тип)
Лог = Служебный.Лог();
Элементы = Неопределено;
- Кластер_Агент = Агент;
+ Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;
Профиль_Владелец = Профиль;
ТипЭлементов = Тип;
- ПараметрыОбъекта = Новый КомандыОбъекта(СтрШаблон("%1.%2",
- Перечисления.РежимыАдминистрирования.ПрофилиБезопасности,
- ТипЭлементов));
+ ТипОбъектаПрофиля = СтрШаблон("%1.%2",
+ Перечисления.РежимыАдминистрирования.ПрофилиБезопасности,
+ ТипЭлементов);
+ ПараметрыОбъекта = Новый КомандыОбъекта(ТипОбъектаПрофиля);
- ПериодОбновления = 60000;
- МоментАктуальности = 0;
+ Элементы = Новый ОбъектыКластера(ЭтотОбъект);
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список объектов профиля безопасности от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
@@ -51,7 +57,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ ТребуетсяОбновление(ОбновитьПринудительно) Тогда
+ Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -73,29 +79,23 @@
Кластер_Агент.ВыводКоманды(Ложь));
КонецЕсли;
- Элементы = Кластер_Агент.ВыводКоманды();
+ МассивРезультатов = Кластер_Агент.ВыводКоманды();
Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
- МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
+ МассивОбъектов = Новый Массив();
+ Для Каждого ТекОписание Из МассивРезультатов Цикл
+ ТипОбъектаПрофиля = СтрШаблон("%1.%2",
+ Перечисления.РежимыАдминистрирования.ПрофилиБезопасности,
+ ТипЭлементов);
+ МассивОбъектов.Добавить(Новый ОбъектКластера(Кластер_Агент, Кластер_Владелец, ТипОбъектаПрофиля, ТекОписание));
+ КонецЦикла;
-КонецПроцедуры // ОбновитьДанные()
+ Элементы.Заполнить(МассивОбъектов);
-// Функция признак необходимости обновления данных
-//
-// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-//
-// Возвращаемое значение:
-// Булево - Истина - требуется обновитьданные
-//
-Функция ТребуетсяОбновление(ОбновитьПринудительно = Ложь) Экспорт
+ Элементы.УстановитьАктуальность();
- Возврат (ОбновитьПринудительно
- ИЛИ Элементы = Неопределено
- ИЛИ (ПериодОбновления < (ТекущаяУниверсальнаяДатаВМиллисекундах() - МоментАктуальности)));
-
-КонецФункции // ТребуетсяОбновление()
+КонецПроцедуры // ОбновитьДанные()
// Функция возвращает коллекцию параметров объекта
//
@@ -124,21 +124,9 @@
//
Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
- ОбновитьДанные(ОбновитьПринудительно);
-
- ЭлементыДляОбработки = Элементы;
- Если ЭлементыКакСоответствия Тогда
- ПоляЭлемента = ПараметрыОбъекта();
- ЭлементыДляОбработки = Служебный.МассивОбъектовВМассивСоответствий(Элементы, ПоляЭлемента);
- КонецЕсли;
-
- Результат = Служебный.ПолучитьЭлементыИзМассиваСоответствий(ЭлементыДляОбработки, Отбор);
-
- Если Результат.Количество() = 0 Тогда
- Возврат Неопределено;
- Иначе
- Возврат Результат;
- КонецЕсли;
+ ОбъектыПрофиля = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия);
+
+ Возврат ОбъектыПрофиля;
КонецФункции // Список()
@@ -155,17 +143,9 @@
//
Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
- ОбновитьДанные(ОбновитьПринудительно);
+ ОбъектыПрофиля = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия);
- ЭлементыДляОбработки = Элементы;
- Если ЭлементыКакСоответствия Тогда
- ПоляЭлемента = ПараметрыОбъекта();
- ЭлементыДляОбработки = Служебный.МассивОбъектовВМассивСоответствий(Элементы, ПоляЭлемента);
- КонецЕсли;
-
- Результат = Служебный.ИерархическоеПредставлениеМассиваСоответствий(ЭлементыДляОбработки, ПоляИерархии);
-
- Возврат Результат;
+ Возврат ОбъектыПрофиля;
КонецФункции // ИерархическийСписок()
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
new file mode 100644
index 0000000..ed7fd8b
--- /dev/null
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
@@ -0,0 +1,226 @@
+// ----------------------------------------------------------
+// This Source Code Form is subject to the terms of the
+// Mozilla Public License, v.2.0. If a copy of the MPL
+// was not distributed with this file, You can obtain one
+// at http://mozilla.org/MPL/2.0/.
+// ----------------------------------------------------------
+// Codebase: https://github.com/ArKuznetsov/irac/
+// ----------------------------------------------------------
+
+Перем Ограничение_Имя;
+Перем Ограничение_Свойства;
+Перем Ограничение_ДлительностьСбора;
+Перем Ограничение_Значения;
+
+Перем Кластер_Агент;
+Перем Кластер_Владелец;
+
+Перем ПараметрыОбъекта;
+
+Перем ПериодОбновления;
+Перем МоментАктуальности;
+
+Перем Лог;
+
+// Конструктор
+//
+// Параметры:
+// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
+// Кластер - Кластер - ссылка на родительский объект кластера
+// Ограничение - Строка, Соответствие - имя ограничения потребления ресурсов в кластере 1С
+// или параметры ограничения потребления ресурсов
+//
+Процедура ПриСозданииОбъекта(АгентКластера, Кластер, Ограничение)
+
+ Лог = Служебный.Лог();
+
+ Если НЕ ЗначениеЗаполнено(Ограничение) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ОграниченияРесурсов);
+
+ Кластер_Агент = АгентКластера;
+ Кластер_Владелец = Кластер;
+
+ Если ТипЗнч(Ограничение) = Тип("Соответствие") Тогда
+ Ограничение_Имя = Ограничение["name"];
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Ограничение_Свойства, Ограничение);
+ МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
+ Иначе
+ Ограничение_Имя = Ограничение;
+ МоментАктуальности = 0;
+ КонецЕсли;
+
+ ПериодОбновления = 60000;
+
+ Ограничение_Значения = Новый ОбъектыКластера(ЭтотОбъект);
+
+КонецПроцедуры // ПриСозданииОбъекта()
+
+// Процедура получает данные от сервиса администрирования кластера 1С
+// и сохраняет в локальных переменных
+//
+// Параметры:
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// - Ложь - данные будут получены если истекло время актуальности
+// или данные не были получены ранее
+//
+Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
+
+ Если НЕ Служебный.ТребуетсяОбновление(Ограничение_Свойства,
+ МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
+
+ ПараметрыКоманды.Вставить("ИмяОграничения", Имя());
+
+ ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
+
+ КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Описание"));
+
+ Если НЕ КодВозврата = 0 Тогда
+ ВызватьИсключение СтрШаблон("Ошибка получения описания ограничения потребления ресурсов ""%1"", КодВозврата = %2: %3",
+ Имя(),
+ КодВозврата,
+ Кластер_Агент.ВыводКоманды(Ложь));
+ КонецЕсли;
+
+ МассивРезультатов = Кластер_Агент.ВыводКоманды();
+
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Ограничение_Свойства, МассивРезультатов[0]);
+
+ МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
+
+КонецПроцедуры // ОбновитьДанные()
+
+// Функция возвращает коллекцию параметров объекта
+//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
+// Возвращаемое значение:
+// Соответствие - коллекция параметров объекта, для получения/изменения значений
+//
+Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт
+
+ Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча);
+
+КонецФункции // ПараметрыОбъекта()
+
+// Функция возвращает имя ограничения потребления ресурсов
+//
+// Возвращаемое значение:
+// Строка - имя ограничения потребления ресурсов
+//
+Функция Имя() Экспорт
+
+ Возврат Ограничение_Имя;
+
+КонецФункции // Имя()
+
+// Функция возвращает значение параметра ограничения потребления ресурсов кластера 1С
+//
+// Параметры:
+// ИмяПоля - Строка - Имя параметра кластера
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+//
+// Возвращаемое значение:
+// Произвольный - значение параметра ограничения потребления ресурсов кластера 1С
+//
+Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт
+
+ ОбновитьДанные(ОбновитьПринудительно);
+
+ Если НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда
+ Возврат Ограничение_Имя;
+ КонецЕсли;
+
+ ЗначениеПоля = Ограничение_Свойства.Получить(ИмяПоля);
+
+ Если ЗначениеПоля = Неопределено Тогда
+
+ ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
+
+ Если НЕ ОписаниеПараметра = Неопределено Тогда
+ ЗначениеПоля = Ограничение_Свойства.Получить(ОписаниеПараметра["Имя"]);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат ЗначениеПоля;
+
+КонецФункции // Получить()
+
+// Процедура изменяет параметры ограничения потребления ресурсов
+//
+// Параметры:
+// ПараметрыОграничения - Структура - новые параметры ограничения потребления ресурсов
+//
+Процедура Изменить(Знач ПараметрыОграничения = Неопределено) Экспорт
+
+ Если НЕ ТипЗнч(ПараметрыОграничения) = Тип("Соответствие") Тогда
+ ПараметрыОграничения = Новый Соответствие();
+ КонецЕсли;
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
+
+ ПараметрыКоманды.Вставить("ИмяОграничения" , Имя());
+
+ Для Каждого ТекЭлемент Из ПараметрыОграничения Цикл
+ ПараметрыКоманды.Вставить(ТекЭлемент.Ключ, ТекЭлемент.Значение);
+ КонецЦикла;
+
+ ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
+
+ КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Изменить"));
+
+ Если НЕ КодВозврата = 0 Тогда
+ ВызватьИсключение СтрШаблон("Ошибка изменения параметров ограничения потребления ресурсов, КодВозврата = %1: %2",
+ Имя(),
+ Кластер_Агент.ВыводКоманды(Ложь));
+ КонецЕсли;
+
+ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
+ ОбновитьДанные(Истина);
+
+КонецПроцедуры // Изменить()
+
+// Процедура удаляет ограничение потребления ресурсов из кластера 1С
+//
+// Параметры:
+// Имя - Строка - Имя ограничения потребления ресурсов
+//
+Процедура Удалить(Имя) Экспорт
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
+
+ ПараметрыКоманды.Вставить("ИмОграничения" , Имя());
+
+ ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
+
+ КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Отключить"));
+
+ Если НЕ КодВозврата = 0 Тогда
+ ВызватьИсключение СтрШаблон("Ошибка удаления ограничения потребления ресурсов ""%1"", КодВозврата = %2: %3",
+ Имя(),
+ КодВозврата,
+ Кластер_Агент.ВыводКоманды(Ложь));
+ КонецЕсли;
+
+ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
+
+ ОбновитьДанные(Истина);
+
+КонецПроцедуры // Удалить()
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
new file mode 100644
index 0000000..835df10
--- /dev/null
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
@@ -0,0 +1,232 @@
+// ----------------------------------------------------------
+// This Source Code Form is subject to the terms of the
+// Mozilla Public License, v.2.0. If a copy of the MPL
+// was not distributed with this file, You can obtain one
+// at http://mozilla.org/MPL/2.0/.
+// ----------------------------------------------------------
+// Codebase: https://github.com/ArKuznetsov/irac/
+// ----------------------------------------------------------
+
+Перем Кластер_Агент;
+Перем Кластер_Владелец;
+Перем ПараметрыОбъекта;
+Перем Элементы;
+
+Перем Лог;
+
+// Конструктор
+//
+// Параметры:
+// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
+// Кластер - Кластер - ссылка на родительский объект кластера
+//
+Процедура ПриСозданииОбъекта(АгентКластера, Кластер)
+
+ Лог = Служебный.Лог();
+
+ Кластер_Агент = АгентКластера;
+ Кластер_Владелец = Кластер;
+
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ОграниченияРесурсов);
+
+ Элементы = Новый ОбъектыКластера(ЭтотОбъект);
+
+КонецПроцедуры // ПриСозданииОбъекта()
+
+// Процедура получает список ограничений потребления ресурсов от утилиты администрирования кластера 1С
+// и сохраняет в локальных переменных
+//
+// Параметры:
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// - Ложь - данные будут получены если истекло время актуальности
+// или данные не были получены ранее
+//
+Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
+
+ Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
+
+ ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
+
+ КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Список"));
+
+ Если НЕ КодВозврата = 0 Тогда
+ ВызватьИсключение СтрШаблон("Ошибка получения списка ограничений потребления ресурсов, КодВозврата = %1: %2",
+ КодВозврата,
+ Кластер_Агент.ВыводКоманды(Ложь));
+ КонецЕсли;
+
+ МассивРезультатов = Кластер_Агент.ВыводКоманды();
+
+ МассивОграничений = Новый Массив();
+ Для Каждого ТекОписание Из МассивРезультатов Цикл
+ МассивОграничений.Добавить(Новый ОграничениеРесурсов(Кластер_Агент, Кластер_Владелец, ТекОписание));
+ КонецЦикла;
+
+ Элементы.Заполнить(МассивОграничений);
+
+ Элементы.УстановитьАктуальность();
+
+КонецПроцедуры // ОбновитьДанные()
+
+// Функция возвращает коллекцию параметров объекта
+//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
+// Возвращаемое значение:
+// Соответствие - коллекция параметров объекта, для получения/изменения значений
+//
+Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт
+
+ Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча);
+
+КонецФункции // ПараметрыОбъекта()
+
+// Функция возвращает список ограничений потребления ресурсов кластера 1С
+//
+// Параметры:
+// Отбор - Структура - Структура отбора ограничений потребления ресурсов (<поле>:<значение>)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+//
+// Возвращаемое значение:
+// Массив - список ограничений потребления ресурсов кластера 1С
+//
+Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
+
+ СписокОграничений = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия);
+
+ Возврат СписокОграничений;
+
+КонецФункции // Список()
+
+// Функция возвращает ограничений потребления ресурсов кластера 1С
+//
+// Параметры:
+// ПоляИерархии - Строка - Поля для построения иерархии списка ограничений потребления ресурсов,
+// разделенные ","
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+//
+// Возвращаемое значение:
+// Соответствие - список ограничений потребления ресурсов кластера 1С
+// <имя поля объекта> - Массив(Соответствие), Соответствие - список ограничений потребления ресурсов
+// или следующий уровень
+//
+Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
+
+ СписокОграничений = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия);
+
+ Возврат СписокОграничений;
+
+КонецФункции // ИерархическийСписок()
+
+// Функция возвращает количество ограничений потребления ресурсов в списке
+//
+// Возвращаемое значение:
+// Число - количество ограничений потребления ресурсов
+//
+Функция Количество() Экспорт
+
+ Если Элементы = Неопределено Тогда
+ Возврат 0;
+ КонецЕсли;
+
+ Возврат Элементы.Количество();
+
+КонецФункции // Количество()
+
+// Функция возвращает описание ограничения потребления ресурсов кластера 1С
+//
+// Параметры:
+// Имя - Строка - Имя ограничения потребления ресурсов
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// КакСоответствие - Булево - Истина - результат будет преобразован в соответствие
+//
+// Возвращаемое значение:
+// Соответствие - описание ограничения потребления ресурсов кластера 1С
+//
+Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт
+
+ ОбновитьДанные(ОбновитьПринудительно);
+
+ Отбор = Новый Соответствие();
+ Отбор.Вставить("name", Имя);
+
+ Списокограничений = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие);
+
+ Если Списокограничений.Количество() = 0 Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Возврат Списокограничений[0];
+
+КонецФункции // Получить()
+
+// Процедура добавляет новый ограничение потребления ресурсов в кластер 1С
+//
+// Параметры:
+// Имя - Строка - имя ограничения потребления ресурсов 1С
+// ПараметрыОграничения - Структура - параметры ограничения потребления ресурсов 1С
+//
+Процедура Добавить(Имя, ПараметрыОграничения = Неопределено) Экспорт
+
+ Если НЕ ТипЗнч(ПараметрыОграничения) = Тип("Структура") Тогда
+ ПараметрыОграничения = Новый Структура();
+ КонецЕсли;
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
+
+ ПараметрыКоманды.Вставить("ИмяОграничения" , Имя);
+
+ Для Каждого ТекЭлемент Из ПараметрыОграничения Цикл
+ ПараметрыКоманды.Вставить(ТекЭлемент.Ключ, ТекЭлемент.Значение);
+ КонецЦикла;
+
+ Если ПараметрыКоманды["Действие"] = Неопределено Тогда
+ ПараметрыКоманды.Вставить("Действие" , "none");
+ КонецЕсли;
+
+ ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
+
+ КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Изменить"));
+
+ Если НЕ КодВозврата = 0 Тогда
+ ВызватьИсключение СтрШаблон("Ошибка добавления ограничения потребления ресурсов ""%1"": %2",
+ Имя,
+ Кластер_Агент.ВыводКоманды(Ложь));
+ КонецЕсли;
+
+ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
+
+ ОбновитьДанные(Истина);
+
+КонецПроцедуры // Добавить()
+
+// Процедура удаляет ограничение потребления ресурсов
+//
+// Параметры:
+// Имя - Строка - Имя ограничения потребления ресурсов
+//
+Процедура Удалить(Знач Имя) Экспорт
+
+ Если ТипЗнч(Имя) = Тип("Строка") Тогда
+ Ограничение = Получить(Имя);
+ КонецЕсли;
+
+ Ограничение.Удалить();
+
+ ОбновитьДанные(Истина);
+
+КонецПроцедуры // Удалить()
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os"
index 20730b2..d7d66a7 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os"
@@ -33,7 +33,7 @@
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список профилей безопасности от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\321\214\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\321\214\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os"
index 84e710a..2892e97 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\321\214\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\321\204\320\270\320\273\321\214\320\221\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\321\201\321\202\320\270.os"
@@ -8,7 +8,7 @@
// ----------------------------------------------------------
Перем Профиль_Имя; // name
-Перем Профиль_Параметры;
+Перем Профиль_Свойства;
Перем Профиль_Каталоги;
Перем Профиль_COMКлассы;
@@ -50,7 +50,7 @@
Если ТипЗнч(Профиль) = Тип("Соответствие") Тогда
Профиль_Имя = Профиль["name"];
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Профиль_Параметры, Профиль);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Профиль_Свойства, Профиль);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
Иначе
Профиль_Имя = Профиль;
@@ -85,7 +85,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Профиль_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Профиль_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -136,7 +136,7 @@
Профиль_Имя = ДанныеЗаполнения.Получить("name");
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Профиль_Параметры, ДанныеЗаполнения);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Профиль_Свойства, ДанныеЗаполнения);
КонецПроцедуры // ЗаполнитьПараметрыПрофиля()
@@ -249,14 +249,14 @@
Возврат Профиль_Имя;
КонецЕсли;
- ЗначениеПоля = Профиль_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Профиль_Свойства.Получить(ИмяПоля);
Если ЗначениеПоля = Неопределено Тогда
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Профиль_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Профиль_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\265\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\213.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\265\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\213.os"
index a054e86..bf0ea4d 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\265\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\213.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\265\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\213.os"
@@ -33,14 +33,14 @@
ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.РабочиеПроцессы);
- ПараметрыЛицензий = Новый КомандыОбъекта("process.license");
+ ПараметрыЛицензий = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииПроцессов);
Элементы = Новый ОбъектыКластера(ЭтотОбъект);
Лицензии = Новый ОбъектыКластера(ЭтотОбъект);
КонецПроцедуры
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список рабочих процессов от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\271\320\237\321\200\320\276\321\206\320\265\321\201\321\201.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\271\320\237\321\200\320\276\321\206\320\265\321\201\321\201.os"
index f2717dc..5f4e637 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\271\320\237\321\200\320\276\321\206\320\265\321\201\321\201.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\207\320\270\320\271\320\237\321\200\320\276\321\206\320\265\321\201\321\201.os"
@@ -10,7 +10,7 @@
Перем Процесс_Ид; // process
Перем Процесс_АдресСервера; // host
Перем Процесс_ПортСервера; // port
-Перем Процесс_Параметры;
+Перем Процесс_Свойства;
Перем Процесс_Лицензии;
Перем Кластер_Агент;
@@ -41,7 +41,8 @@
КонецЕсли;
ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.РабочиеПроцессы);
- ПараметрыЛицензий = Новый КомандыОбъекта("process.license");
+
+ ПараметрыЛицензий = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииПроцессов);
Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;
@@ -72,7 +73,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Процесс_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Процесс_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -115,7 +116,7 @@
Процесс_АдресСервера = ДанныеЗаполнения.Получить("host");
Процесс_ПортСервера = ДанныеЗаполнения.Получить("port");
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Процесс_Параметры, ДанныеЗаполнения);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Процесс_Свойства, ДанныеЗаполнения);
КонецПроцедуры // ЗаполнитьПараметрыПроцесса()
@@ -238,14 +239,14 @@
Возврат Процесс_ПортСервера;
КонецЕсли;
- ЗначениеПоля = Процесс_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Процесс_Свойства.Получить(ИмяПоля);
Если ЗначениеПоля = Неопределено Тогда
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Процесс_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Процесс_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201.os"
index be86d37..97a2c22 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201.os"
@@ -8,7 +8,7 @@
// ----------------------------------------------------------
Перем Сеанс_Ид; // session
-Перем Сеанс_Параметры;
+Перем Сеанс_Свойства;
Перем Сеанс_Лицензии;
Перем Кластер_Агент;
@@ -40,7 +40,8 @@
КонецЕсли;
ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.Сеансы);
- ПараметрыЛицензий = Новый КомандыОбъекта("session.license");
+
+ ПараметрыЛицензий = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииСеансов);
Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;
@@ -48,7 +49,7 @@
Если ТипЗнч(Сеанс) = Тип("Соответствие") Тогда
Сеанс_Ид = Сеанс["session"];
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Сеанс_Параметры, Сеанс);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Сеанс_Свойства, Сеанс);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
Иначе
Сеанс_Ид = Сеанс;
@@ -71,7 +72,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Сеанс_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Сеанс_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -98,7 +99,7 @@
Возврат;
КонецЕсли;
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Сеанс_Параметры, МассивРезультатов[0]);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Сеанс_Свойства, МассивРезультатов[0]);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
@@ -185,14 +186,14 @@
Возврат Сеанс_Ид;
КонецЕсли;
- ЗначениеПоля = Сеанс_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Сеанс_Свойства.Получить(ИмяПоля);
Если ЗначениеПоля = Неопределено Тогда
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Сеанс_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Сеанс_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201\321\213.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201\321\213.os"
index ebcec05..ec46adc 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201\321\213.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\320\260\320\275\321\201\321\213.os"
@@ -36,14 +36,14 @@
ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.Сеансы);
- ПараметрыЛицензий = Новый КомандыОбъекта("session.license");
+ ПараметрыЛицензий = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииСеансов);
Элементы = Новый ОбъектыКластера(ЭтотОбъект);
Лицензии = Новый ОбъектыКластера(ЭтотОбъект);
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список сеансов от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200.os"
index ae68448..b6aee6f 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200.os"
@@ -11,7 +11,7 @@
Перем Сервер_Имя; // name
Перем Сервер_АдресАгента; // agent-host
Перем Сервер_ПортАгента; // agent-port
-Перем Сервер_Параметры;
+Перем Сервер_Свойства;
Перем Сервер_НазначенияФункциональности;
@@ -70,7 +70,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Сервер_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Сервер_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -114,7 +114,7 @@
Сервер_ПортАгента = ДанныеЗаполнения.Получить("agent-port");
Сервер_Имя = ДанныеЗаполнения.Получить("name");
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Сервер_Параметры, ДанныеЗаполнения);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Сервер_Свойства, ДанныеЗаполнения);
КонецПроцедуры // ЗаполнитьПараметрыСервера()
@@ -228,7 +228,7 @@
ИначеЕсли НЕ Найти(ВРЕг("ПортАгента, agent-port"), ВРег(ИмяПоля)) = 0 Тогда
Возврат Сервер_ПортАгента;
Иначе
- ЗначениеПоля = Сервер_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Сервер_Свойства.Получить(ИмяПоля);
КонецЕсли;
Если ЗначениеПоля = Неопределено Тогда
@@ -236,7 +236,7 @@
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Сервер_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Сервер_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
index 4e6f0af..2887af8 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
@@ -33,7 +33,7 @@
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список серверов кластера от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\270\321\201\321\213.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\270\321\201\321\213.os"
index d93aa6e..31a4fbd 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\270\321\201\321\213.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\270\321\201\321\213.os"
@@ -32,11 +32,11 @@
КонецПроцедуры
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список сервисов от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
// - Ложь - данные будут получены если истекло время актуальности
// или данные не были получены ранее
//
@@ -63,7 +63,16 @@
МассивРезультатов = Кластер_Агент.ВыводКоманды();
- Элементы.Заполнить(МассивРезультатов);
+ МассивСервисов = Новый Массив();
+ Для Каждого ТекОписание Из МассивРезультатов Цикл
+ Сервис = Новый ОбъектКластера(Кластер_Агент,
+ Кластер_Владелец,
+ Перечисления.РежимыАдминистрирования.Сервисы,
+ ТекОписание);
+ МассивСервисов.Добавить(Сервис);
+ КонецЦикла;
+
+ Элементы.Заполнить(МассивСервисов);
Элементы.УстановитьАктуальность();
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os"
index 24d2c20..32e1087 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os"
@@ -8,7 +8,7 @@
// ----------------------------------------------------------
Перем Соединение_Ид;
-Перем Соединение_Параметры;
+Перем Соединение_Свойства;
Перем ПараметрыОбъекта;
Перем Кластер_Агент;
@@ -43,7 +43,7 @@
Если ТипЗнч(Соединение) = Тип("Соответствие") Тогда
Соединение_Ид = Соединение["connection"];
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Соединение_Параметры, Соединение);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Соединение_Свойства, Соединение);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
Иначе
Соединение_Ид = Соединение;
@@ -75,7 +75,7 @@
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если НЕ Служебный.ТребуетсяОбновление(Соединение_Параметры,
+ Если НЕ Служебный.ТребуетсяОбновление(Соединение_Свойства,
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;
@@ -99,7 +99,7 @@
МассивРезультатов = Кластер_Агент.ВыводКоманды();
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Соединение_Параметры, МассивРезультатов[0]);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Соединение_Свойства, МассивРезультатов[0]);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
@@ -137,14 +137,14 @@
Возврат Соединение_Ид;
КонецЕсли;
- ЗначениеПоля = Соединение_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Соединение_Свойства.Получить(ИмяПоля);
Если ЗначениеПоля = Неопределено Тогда
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Соединение_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Соединение_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\321\217.os"
index 274c792..c6e2d0a 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\321\217.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\321\217.os"
@@ -40,7 +40,7 @@
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список соединений от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
index c797a4b..3de469c 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
@@ -8,7 +8,7 @@
// ----------------------------------------------------------
Перем Счетчик_Имя;
-Перем Счетчик_Параметры;
+Перем Счетчик_Свойства;
Перем Счетчик_ДлительностьСбора;
Перем Счетчик_Значения;
@@ -46,7 +46,7 @@
Если ТипЗнч(Счетчик) = Тип("Соответствие") Тогда
Счетчик_Имя = Счетчик["name"];
- ЗаполнитьПараметрыСчетчика(Счетчик);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Счетчик_Свойства, Счетчик);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
Иначе
Счетчик_Имя = Счетчик;
@@ -63,28 +63,17 @@
// и сохраняет в локальных переменных
//
// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
// - Ложь - данные будут получены если истекло время актуальности
// или данные не были получены ранее
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
- Если Служебный.ТребуетсяОбновление(Счетчик_Параметры,
- МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
- ОбновитьДанныеСчетчика();
- КонецЕсли;
-
- Если Счетчик_Значения.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
- ОбновитьДанныеЗначений();
- КонецЕсли;
-
-КонецПроцедуры // ОбновитьДанные()
-
-// Процедура получает данные счетчика потребления ресурсов от сервиса администрирования кластера 1С
-// и сохраняет в локальных переменных
-//
-Процедура ОбновитьДанныеСчетчика() Экспорт
-
+ Если НЕ Служебный.ТребуетсяОбновление(Счетчик_Свойства,
+ МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
+ Возврат;
+ КонецЕсли;
+
ПараметрыКоманды = Новый Соответствие();
ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
@@ -105,7 +94,7 @@
МассивРезультатов = Кластер_Агент.ВыводКоманды();
- ЗаполнитьПараметрыСчетчика(МассивРезультатов[0]);
+ Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Счетчик_Свойства, МассивРезультатов[0]);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
@@ -134,10 +123,13 @@
КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Значения"));
Если НЕ КодВозврата = 0 Тогда
+ Если НЕ ЗначениеЗаполнено(Отбор) Тогда
+ Отбор = "<без отбора>";
+ КонецЕсли;
ВызватьИсключение СтрШаблон("Ошибка получения значений счетчика потребления ресурсов ""%1""
|с отбором ""%2"", КодВозврата = %3: %4",
Имя(),
- ?(ЗначениеЗаполнено(Отбор), Отбор, "<без отбора>"),
+ Отбор,
КодВозврата,
Кластер_Агент.ВыводКоманды(Ложь));
КонецЕсли;
@@ -150,17 +142,6 @@
КонецПроцедуры // ОбновитьДанныеЗначений()
-// Процедура заполняет параметры счетчика потребления ресурсов
-//
-// Параметры:
-// ДанныеЗаполнения - Соответствие - данные, из которых будут заполнены параметры счетчика потребления ресурсов
-//
-Процедура ЗаполнитьПараметрыСчетчика(ДанныеЗаполнения)
-
- Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Счетчик_Параметры, ДанныеЗаполнения);
-
-КонецПроцедуры // ЗаполнитьПараметрыСчетчика()
-
// Функция возвращает коллекцию параметров объекта
//
// Параметры:
@@ -204,21 +185,20 @@
Возврат Счетчик_Имя;
КонецЕсли;
- ЗначениеПоля = Счетчик_Параметры.Получить(ИмяПоля);
+ ЗначениеПоля = Счетчик_Свойства.Получить(ИмяПоля);
Если ЗначениеПоля = Неопределено Тогда
ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля);
Если НЕ ОписаниеПараметра = Неопределено Тогда
- ЗначениеПоля = Счетчик_Параметры.Получить(ОписаниеПараметра["Имя"]);
+ ЗначениеПоля = Счетчик_Свойства.Получить(ОписаниеПараметра["Имя"]);
КонецЕсли;
КонецЕсли;
Возврат ЗначениеПоля;
КонецФункции // Получить()
-
// Процедура изменяет параметры счетчика потребления ресурсов
//
@@ -236,7 +216,7 @@
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
- ПараметрыКоманды.Вставить("Имя" , Имя());
+ ПараметрыКоманды.Вставить("ИмяСчетчика" , Имя());
Для Каждого ТекЭлемент Из ПараметрыСчетчика Цикл
ПараметрыКоманды.Вставить(ТекЭлемент.Ключ, ТекЭлемент.Значение);
@@ -247,7 +227,7 @@
КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Изменить"));
Если НЕ КодВозврата = 0 Тогда
- ВызватьИсключение СтрШаблон("Ошибка изменения параметров счетчика, КодВозврата = %1: %2",
+ ВызватьИсключение СтрШаблон("Ошибка изменения параметров счетчика потребления ресурсов, КодВозврата = %1: %2",
Имя(),
Кластер_Агент.ВыводКоманды(Ложь));
КонецЕсли;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
index 9acc4cc..54c48e2 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
@@ -33,7 +33,7 @@
КонецПроцедуры // ПриСозданииОбъекта()
-// Процедура получает данные от сервиса администрирования кластера 1С
+// Процедура получает список счетчиков потребления ресурсов от утилиты администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
@@ -194,6 +194,22 @@
ПараметрыКоманды.Вставить(ТекЭлемент.Ключ, ТекЭлемент.Значение);
КонецЦикла;
+ Если ПараметрыКоманды["ДлительностьСбора"] = Неопределено Тогда
+ ПараметрыКоманды.Вставить("ДлительностьСбора", Перечисления.ВремяНакопленияСчетчиковРесурсов.ТекущийВызов);
+ КонецЕсли;
+
+ Если ПараметрыКоманды["Группировка"] = Неопределено Тогда
+ ПараметрыКоманды.Вставить("Группировка", Перечисления.ТипыГруппировкиСчетчиковРесурсов.Пользователи);
+ КонецЕсли;
+
+ Если ПараметрыКоманды["ТипОтбора"] = Неопределено Тогда
+ ПараметрыКоманды.Вставить("ТипОтбора", Перечисления.ТипыОтбораСчетчиковРесурсов.Все);
+ КонецЕсли;
+
+ Если ПараметрыКоманды["Отбор"] = Неопределено Тогда
+ ПараметрыКоманды.Вставить("Отбор", "");
+ КонецЕсли;
+
ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Изменить"));
diff --git "a/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\270\320\277\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.json" "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\270\320\277\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.json"
index 766b9b2..dc0fa03 100644
--- "a/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\270\320\277\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.json"
+++ "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\270\320\277\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.json"
@@ -1950,7 +1950,7 @@
"ДлительностьСбора":{
"ИмяРАК" : "collection-time"
},
- "ДлительностьСбораМс":{
+ "ДлительностьСерверныхВызовов":{
"ИмяРАК" : "duration"
},
"ПроцессорноеВремя":{
@@ -2051,8 +2051,7 @@
"Шаблон" : "--object=%1",
"Параметр" : "Отбор"
}
- ],
- "ЗначенияПолей" : true
+ ]
},
"Удалить":{
"ИмяРАК" : "remove",
@@ -2082,6 +2081,11 @@
},
"Действие":{
"ИмяРАК" : "action",
+ "ПоУмолчанию" : "$Перечисления.ДействияОграниченияРесурсов.Нет",
+ "Использование" : "Чтение, Добавление, Изменение"
+ },
+ "ДлительностьСерверныхВызовов":{
+ "ИмяРАК" : "duration",
"Использование" : "Чтение, Добавление, Изменение"
},
"ПроцессорноеВремя":{
@@ -2140,15 +2144,42 @@
},
"Описание":{
"ИмяРАК" : "info",
- "Кластер" : true
+ "Кластер" : true,
+ "ПараметрыКоманды" : [
+ {
+ "Шаблон" : "--limit=%1",
+ "Параметр" : "ИмяОграничения",
+ "Обязательный" : true
+ }
+ ]
},
"Изменить":{
"ИмяРАК" : "update",
- "Кластер" : true
+ "Кластер" : true,
+ "ПараметрыКоманды" : [
+ {
+ "Шаблон" : "--name=%1",
+ "Параметр" : "ИмяОграничения",
+ "Обязательный" : true
+ },
+ {
+ "Шаблон" : "--action=%1",
+ "Параметр" : "Действие",
+ "Обязательный" : true
+ }
+ ],
+ "ЗначенияПолей" : true
},
"Удалить":{
"ИмяРАК" : "remove",
- "Кластер" : true
+ "Кластер" : true,
+ "ПараметрыКоманды" : [
+ {
+ "Шаблон" : "--name=%1",
+ "Параметр" : "ИмяОграничения",
+ "Обязательный" : true
+ }
+ ]
}
}
}
diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os"
index 8469060..4d645de 100644
--- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os"
+++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os"
@@ -51,27 +51,27 @@
КонецЕсли;
КонецФункции // ОбернутьВКавычки()
-// Процедура заполняет параметры объекта кластера 1С
+// Процедура заполняет значения свойств объ)екта кластера 1С
//
// Параметры:
-// ОбъектКластера - Произвольный - объект, параметры которого будут заполнены
-// Параметры - Соответствие - переменная, которая будет заполнена параметрами объекта
-// ДанныеЗаполнения - Соответствие - данные, из которых будут заполнены параметры объекта
+// ОбъектКластера - Произвольный - объект, свойства которого будут заполнены
+// Свойства - Соответствие - переменная, которая будет заполнена свойствами объекта
+// ДанныеЗаполнения - Соответствие - данные, из которых будут заполнены значения свойств объекта
//
-Процедура ЗаполнитьПараметрыОбъекта(ОбъектКластера, Параметры, ДанныеЗаполнения) Экспорт
+Процедура ЗаполнитьСвойстваОбъекта(ОбъектКластера, Свойства, ДанныеЗаполнения) Экспорт
СтруктураПараметров = ОбъектКластера.ПараметрыОбъекта();
- Параметры = Новый Соответствие();
+ Свойства = Новый Соответствие();
Для Каждого ТекЭлемент Из СтруктураПараметров Цикл
ЗначениеПараметра = Служебный.ПолучитьЗначениеИзСтруктуры(ДанныеЗаполнения,
ТекЭлемент.Значение.ИмяРАК,
ТекЭлемент.Значение.ПоУмолчанию);
- Параметры.Вставить(ТекЭлемент.Ключ, ЗначениеПараметра);
+ Свойства.Вставить(ТекЭлемент.Ключ, ЗначениеПараметра);
КонецЦикла;
-КонецПроцедуры // ЗаполнитьПараметрыОбъекта()
+КонецПроцедуры // ЗаполнитьСвойстваОбъекта()
// Функция возвращает значение указанного поля структуры/соответствия или значение по умолчанию
//
diff --git "a/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.txt" "b/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.txt"
new file mode 100644
index 0000000..48685ca
--- /dev/null
+++ "b/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.txt"
@@ -0,0 +1,17 @@
+name : ResourceLimit1
+action : none
+counter : serverCalls
+duration : 10000
+cpu-time : 0
+memory : 640000000
+read : 0
+write : 0
+duration-dbms : 0
+dbms-bytes : 0
+service : 0
+call : 0
+number-of-active-sessions : 0
+number-of-sessions : 0
+error-message : Сработало граничение ресурсов
+descr : Тестовое ограничение
+
diff --git "a/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.os" "b/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.os"
index fc16e1c..979adc2 100644
--- "a/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.os"
+++ "b/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.os"
@@ -143,7 +143,8 @@
ПараметрыКоманды.Вставить("СтрокаПодключенияАгента", Агент_СтрокаПодключения());
ПараметрыКоманды.Вставить("СтрокаАвторизацииАгента", Агент_СтрокаАвторизации());
- ПараметрыОбъекта = Новый КомандыОбъекта("agent.admin", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.АдминистраторыАгента,
+ ПараметрыКоманды);
ВыводКоманды = ВозвращаемыеЗначения["Администраторы"];
@@ -157,7 +158,8 @@
ПараметрыКоманды.Вставить("СтрокаПодключенияАгента", Агент_СтрокаПодключения());
ПараметрыКоманды.Вставить("СтрокаАвторизацииАгента", Агент_СтрокаАвторизации());
- ПараметрыОбъекта = Новый КомандыОбъекта("agent.admin", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.АдминистраторыАгента,
+ ПараметрыКоманды);
ВыводКоманды = ВозвращаемыеЗначения["Администраторы"] + ВозвращаемыеЗначения["Администраторы.Добавление"];
@@ -212,7 +214,8 @@
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
- ПараметрыОбъекта = Новый КомандыОбъекта("cluster.admin", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.АдминистраторыКластера,
+ ПараметрыКоманды);
ВыводКоманды = ВозвращаемыеЗначения["Кластеры.Администраторы"];
@@ -228,7 +231,8 @@
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
- ПараметрыОбъекта = Новый КомандыОбъекта("cluster.admin", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.АдминистраторыКластера,
+ ПараметрыКоманды);
ВыводКоманды = ВозвращаемыеЗначения["Кластеры.Администраторы"]
+ ВозвращаемыеЗначения["Кластеры.Администраторы.Добавление"];
@@ -429,7 +433,8 @@
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
- ПараметрыОбъекта = Новый КомандыОбъекта("process.license", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииПроцессов,
+ ПараметрыКоманды);
ВыводКоманды = ВозвращаемыеЗначения["РабочиеПроцессы.Лицензии"];
@@ -452,7 +457,8 @@
ПараметрыКоманды.Вставить("ИдентификаторПроцесса" , ТекПроцесс["process"]);
- ПараметрыОбъекта = Новый КомандыОбъекта("process.license", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииПроцессов,
+ ПараметрыКоманды);
ВыводКоманды = ТекПроцесс["ТекстОбъекта"];
@@ -715,7 +721,8 @@
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
- ПараметрыОбъекта = Новый КомандыОбъекта("session.license", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииСеансов,
+ ПараметрыКоманды);
ВыводКоманды = ВозвращаемыеЗначения["Сеансы.Лицензии"];
@@ -738,7 +745,8 @@
ПараметрыКоманды.Вставить("ИдентификаторСеанса" , ТекСеанс["session"]);
- ПараметрыОбъекта = Новый КомандыОбъекта("session.license", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииСеансов,
+ ПараметрыКоманды);
ВыводКоманды = ТекСеанс["ТекстОбъекта"];
@@ -904,7 +912,7 @@
ПараметрыКоманды.Вставить("ВидОбъектовПрофиля",
Перечисления.ВидыОбъектовПрофиляБезопасности.Каталог);
- ПараметрыОбъекта = Новый КомандыОбъекта("profile.directory",
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.КаталогиПрофиля,
ПараметрыКоманды);
ВыводКоманды = "";
@@ -931,7 +939,7 @@
ПараметрыКоманды.Вставить("ВидОбъектовПрофиля",
Перечисления.ВидыОбъектовПрофиляБезопасности.COMКласс);
- ПараметрыОбъекта = Новый КомандыОбъекта("profile.com",
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.COMКлассыПрофиля,
ПараметрыКоманды);
ВыводКоманды = "";
@@ -958,7 +966,7 @@
ПараметрыКоманды.Вставить("ВидОбъектовПрофиля",
Перечисления.ВидыОбъектовПрофиляБезопасности.Компонент);
- ПараметрыОбъекта = Новый КомандыОбъекта("profile.addin",
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ВнешниеКомпонентыПрофиля,
ПараметрыКоманды);
ВыводКоманды = "";
@@ -985,7 +993,7 @@
ПараметрыКоманды.Вставить("ВидОбъектовПрофиля",
Перечисления.ВидыОбъектовПрофиляБезопасности.Модуль);
- ПараметрыОбъекта = Новый КомандыОбъекта("profile.module",
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.МодулиПрофиля,
ПараметрыКоманды);
ВыводКоманды = "";
@@ -1012,7 +1020,7 @@
ПараметрыКоманды.Вставить("ВидОбъектовПрофиля",
Перечисления.ВидыОбъектовПрофиляБезопасности.Приложение);
- ПараметрыОбъекта = Новый КомандыОбъекта("profile.app",
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ПриложенияПрофиля,
ПараметрыКоманды);
ВыводКоманды = "";
@@ -1039,7 +1047,7 @@
ПараметрыКоманды.Вставить("ВидОбъектовПрофиля",
Перечисления.ВидыОбъектовПрофиляБезопасности.ИнтернетРесурс);
- ПараметрыОбъекта = Новый КомандыОбъекта("profile.inet",
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнтернетРесурсыПрофиля,
ПараметрыКоманды);
ВыводКоманды = "";
@@ -1112,7 +1120,8 @@
ПараметрыКоманды.Вставить("ИмяСчетчика", Счетчики[0]["name"]);
- ПараметрыОбъекта = Новый КомандыОбъекта("counter", ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.СчетчикиРесурсов,
+ ПараметрыКоманды);
ВыводКоманды = ВозвращаемыеЗначения["СчетчикиРесурсов.Значения"];
@@ -1120,6 +1129,52 @@
КонецФункции // Вывод_СчетчикиРесурсовПараметрыЗначения()
+Функция Вывод_ОграниченияРесурсовСписок()
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Агент_СтрокаПодключения());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
+
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ОграниченияРесурсов,
+ ПараметрыКоманды);
+
+ ВыводКоманды = ВозвращаемыеЗначения["ОграниченияРесурсов"];
+
+ Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды);
+
+КонецФункции // Вывод_ОграниченияРесурсовСписок()
+
+Функция Вывод_ОграниченияРесурсовПараметры()
+
+ Результат = Новый Массив();
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Агент_СтрокаПодключения());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
+
+ Ограничения = РазобратьВыводКоманды(ВозвращаемыеЗначения["ОграниченияРесурсов"]);
+
+ Для Каждого ТекОграничение Из Ограничения Цикл
+
+ ПараметрыКоманды.Вставить("ИмяОграничения", ТекОграничение["name"]);
+
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ОграниченияРесурсов,
+ ПараметрыКоманды);
+
+ ВыводКоманды = ТекОграничение["ТекстОбъекта"];
+
+ Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды",
+ ПараметрыОбъекта.ПараметрыКоманды("Описание"),
+ ВыводКоманды));
+
+ КонецЦикла;
+
+ Возврат Результат;
+
+КонецФункции // Вывод_ОграниченияРесурсовПараметрыЗначения()
+
Процедура Инициализация()
Лог = Служебный.Лог();
@@ -1243,6 +1298,11 @@
ПараметрыКластера.СчетчикиРесурсов.Значения = Новый Структура("Список",
Вывод_СчетчикиРесурсовПараметрыЗначения());
+ ПараметрыКластера.Вставить("ОграниченияРесурсов",
+ Новый Структура("Список, Параметры"));
+ ПараметрыКластера.ОграниченияРесурсов.Список = Вывод_ОграниченияРесурсовСписок();
+ ПараметрыКластера.ОграниченияРесурсов.Параметры = Вывод_ОграниченияРесурсовПараметры();
+
КонецПроцедуры // Инициализация()
Функция ПрочитатьМакетыОбъектовСервера(Знач ПутьККаталогу)
diff --git a/tests/irac-test.os b/tests/irac-test.os
index 7abb8d9..d9dd865 100644
--- a/tests/irac-test.os
+++ b/tests/irac-test.os
@@ -120,6 +120,9 @@
СписокТестов.Добавить("ТестДолжен_ПолучитьПараметрыСчетчиковРесурсов");
СписокТестов.Добавить("ТестДолжен_ПолучитьЗначенияСчетчикаРесурсов");
+ СписокТестов.Добавить("ТестДолжен_ПолучитьСписокОграниченийРесурсов");
+ СписокТестов.Добавить("ТестДолжен_ПолучитьПараметрыОграниченийРесурсов");
+
Возврат СписокТестов;
КонецФункции // ПолучитьСписокТестов()
@@ -1336,4 +1339,63 @@
0,
"Не удалось получить значения счетчика потребления ресурсов");
-КонецПроцедуры // ТестДолжен_ПолучитьЗначенияСчетчикаРесурсов()
\ No newline at end of file
+КонецПроцедуры // ТестДолжен_ПолучитьЗначенияСчетчикаРесурсов()
+
+Процедура ТестДолжен_ПолучитьСписокОграниченийРесурсов() Экспорт
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "Кластеры.Список");
+
+ Кластеры = АгентКластера.Кластеры();
+ Кластер = Кластеры.Получить(ПараметрыТестирования.Параметры().Кластер_АдресПорт);
+
+ Кластер.УстановитьАдминистратора(ПараметрыТестирования.Параметры().Кластер_Администратор,
+ ПараметрыТестирования.Параметры().Кластер_Пароль);
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(),
+ "ОграниченияРесурсов.Список");
+
+ ОграниченияРесурсов = Кластер.ОграниченияРесурсов().Список();
+
+ Утверждения.ПроверитьБольше(ОграниченияРесурсов.Количество(),
+ 0,
+ "Не удалось получить список ограничений потребления ресурсов");
+
+КонецПроцедуры // ТестДолжен_ПолучитьСписокОграниченийРесурсов()
+
+// Процедура - тест
+//
+Процедура ТестДолжен_ПолучитьПараметрыОграниченийРесурсов() Экспорт
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "Кластеры.Список");
+
+ Кластеры = АгентКластера.Кластеры();
+
+ Кластер = Кластеры.Получить(ПараметрыТестирования.Параметры().Кластер_АдресПорт);
+
+ Кластер.УстановитьАдминистратора(ПараметрыТестирования.Параметры().Кластер_Администратор,
+ ПараметрыТестирования.Параметры().Кластер_Пароль);
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(),
+ "ОграниченияРесурсов.Список");
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(),
+ "ОграниченияРесурсов.Параметры");
+
+ ОграниченияРесурсов = Кластер.ОграниченияРесурсов();
+
+ Ограничение = ОграниченияРесурсов.Получить("ResourceLimit1");
+
+ ИмяОграничения = Ограничение.Получить("Имя");
+ ДлительностьСерверныхВызовов = Ограничение.Получить("ДлительностьСерверныхВызовов");
+ ПотреблениеПамяти = Ограничение.Получить("ПотреблениеПамяти");
+
+ Утверждения.ПроверитьРавенство(ИмяОграничения,
+ "ResourceLimit1",
+ "Ошибка проверки имени ограничения потребления ресурсов");
+ Утверждения.ПроверитьРавенство(ДлительностьСерверныхВызовов,
+ "10000",
+ "Ошибка проверки длительности серверных вызовов ограничения потребления ресурсов");
+ Утверждения.ПроверитьРавенство(ПотреблениеПамяти,
+ "640000000",
+ "Ошибка проверки потребления памяти ограничения потребления ресурсов");
+
+КонецПроцедуры // ТестДолжен_ПолучитьПараметрыОграниченийРесурсов()