diff --git a/lib.config b/lib.config
index 16d7bc0..d1bbcbb 100644
--- a/lib.config
+++ b/lib.config
@@ -31,6 +31,7 @@
+
diff --git a/packagedef b/packagedef
index e899202..6d59d4b 100644
--- a/packagedef
+++ b/packagedef
@@ -1,6 +1,6 @@
Описание.Имя("irac")
- .Версия("0.11.1")
+ .Версия("0.12.0")
.Автор("Artem Kuznetsov")
.АдресАвтора("ArKuznetsov@gmail.com")
.Описание("Библиотека администрирования кластера серверов 1С")
diff --git a/src/lib.config b/src/lib.config
index c24edcb..93277e6 100644
--- a/src/lib.config
+++ b/src/lib.config
@@ -31,6 +31,7 @@
+
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 e70996e..1622cd4 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"
@@ -95,7 +95,11 @@
// Параметры:
// Отбор - Структура - Структура отбора администраторов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список администраторов агента кластера 1С
@@ -111,9 +115,13 @@
// Функция возвращает список администраторов агента кластеров 1С
//
// Параметры:
-// ПоляИерархии - Строка - Поля для построения иерархии списка администраторов, разделенные ","
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ПоляИерархии - Строка - Поля для построения иерархии списка администраторов, разделенные ","
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список администраторов агента кластеров 1С
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 234b326..470de58 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"
@@ -97,9 +97,13 @@
// Функция возвращает список администраторов кластера
//
// Параметры:
-// Отбор - Структура - Структура отбора администраторов (<поле>:<значение>)
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// Отбор - Структура - Структура отбора администраторов (<поле>:<значение>)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список администраторов кластера 1С
@@ -117,7 +121,11 @@
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка администраторов, разделенные ","
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список администраторов кластеров 1С
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 4c3666c..b209672 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"
@@ -119,9 +119,13 @@
// Функция возвращает список блокировок
//
// Параметры:
-// Отбор - Структура - Структура отбора блокировок (<поле>:<значение>)
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// Отбор - Структура - Структура отбора блокировок (<поле>:<значение>)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список блокировок
@@ -137,9 +141,13 @@
// Функция возвращает список блокировок
//
// Параметры:
-// ПоляИерархии - Строка - Поля для построения иерархии списка блокировок, разделенные ","
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ПоляИерархии - Строка - Поля для построения иерархии списка блокировок, разделенные ","
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список блокировок
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 3258982..6c8d832 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"
@@ -43,7 +43,7 @@
Возврат;
КонецЕсли;
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы);
Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;
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 5cfcaaf..b4d232a 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"
@@ -27,7 +27,7 @@
Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы);
Элементы = Новый ОбъектыКластера(ЭтотОбъект);
@@ -93,9 +93,13 @@
// Функция возвращает список информационных баз
//
// Параметры:
-// Отбор - Структура - Структура отбора информационных баз (<поле>:<значение>)
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// Отбор - Структура - Структура отбора информационных баз (<поле>:<значение>)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список информационных баз
@@ -111,9 +115,13 @@
// Функция возвращает список информационных баз
//
// Параметры:
-// ПоляИерархии - Строка - Поля для построения иерархии списка информационных баз, разделенные ","
-// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ПоляИерархии - Строка - Поля для построения иерархии списка информационных баз, разделенные ","
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список информационных баз
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 3fe97cf..52ccd9d 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"
@@ -82,9 +82,13 @@
// Функция возвращает список кластеров 1С
//
// Параметры:
-// Отбор - Структура - Структура отбора кластеров (<поле>:<значение>)
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// Отбор - Структура - Структура отбора кластеров (<поле>:<значение>)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список кластеров 1С
@@ -100,9 +104,13 @@
// Функция возвращает иерархический список кластеров 1С
//
// Параметры:
-// ПоляИерархии - Строка - Поля для построения иерархии списка кластеров, разделенные ","
-// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ПоляИерархии - Строка - Поля для построения иерархии списка кластеров, разделенные ","
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список кластеров 1С
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\320\270\321\206\320\265\320\275\320\267\320\270\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\320\270\321\206\320\265\320\275\320\267\320\270\320\270.os"
new file mode 100644
index 0000000..7926dda
--- /dev/null
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\320\270\321\206\320\265\320\275\320\267\320\270\320\270.os"
@@ -0,0 +1,230 @@
+// ----------------------------------------------------------
+// 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)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
+//
+// Возвращаемое значение:
+// Массив - список сеансов
+//
+Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
+
+ Лицензии = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия);
+
+ Возврат Лицензии;
+
+КонецФункции // Список()
+
+// Функция возвращает список сеансов
+//
+// Параметры:
+// ПоляИерархии - Строка - Поля для построения иерархии списка сеансов, разделенные ","
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
+//
+// Возвращаемое значение:
+// Соответствие - список сеансов
+//
+Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
+
+ Лицензии = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия);
+
+ Возврат Лицензии;
+
+КонецФункции // ИерархическийСписок()
+
+// Функция возвращает количество сеансов в списке
+//
+// Возвращаемое значение:
+// Число - количество сеансов
+//
+Функция Количество() Экспорт
+
+ Если Элементы = Неопределено Тогда
+ Возврат 0;
+ КонецЕсли;
+
+ Возврат Элементы.Количество();
+
+КонецФункции // Количество()
+
+// Функция возвращает описание сеанса кластера 1С
+//
+// Параметры:
+// ИдВладельца - Строка - номер сеанса в виде <имя информационной базы>:<номер сеанса>
+// или номер процесса в виде <адрес сервера>:<номер процесса ОС (pid))>
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// КакСоответствие - Булево - Истина - результат будет преобразован в соответствие
+//
+// Возвращаемое значение:
+// Соответствие - описание сеанса 1С
+//
+Функция Получить(Знач ИдВладельца, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт
+
+ СеансИлиПроцесс = Владелец.Получить(ИдВладельца);
+
+ Отбор = Новый Соответствие();
+
+ Если ТипЗнч(Владелец) = Тип("РабочиеПроцессы") Тогда
+ Отбор.Вставить("process", СеансИлиПроцесс.Ид());
+ ИначеЕсли ТипЗнч(Владелец) = Тип("Сеансы") Тогда
+ Отбор.Вставить("session", СеансИлиПроцесс.Ид());
+ Иначе
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Лицензии = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие);
+
+ Если Лицензии.Количество() = 0 Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Возврат Лицензии[0];
+
+КонецФункции // Получить()
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 06ca991..3148987 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"
@@ -95,7 +95,11 @@
// Параметры:
// Отбор - Структура - Структура отбора менеджеров (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список менеджеров кластера 1С
@@ -113,7 +117,11 @@
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка менеджеров, разделенные ","
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список менеджеров кластера 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\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 7df66f1..e56d3c6 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"
@@ -104,7 +104,11 @@
// Отбор - Структура - Структура отбора требований
// назначения функциональности (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список требований назначения функциональности сервера 1С
@@ -123,7 +127,11 @@
// ПоляИерархии - Строка - Поля для построения иерархии списка требований
// назначения функциональности, разделенные ","
// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список требований назначения функциональности сервера 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"
index 3e2b651..151f618 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\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"
@@ -25,9 +25,9 @@
// Параметры:
// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
// Кластер - Кластер - ссылка на родительский объект кластера
-// ОбъектКластера - Строка, Соответствие - идентификатор объекта в кластере 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\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\236\320\261\321\212\320\265\320\272\321\202\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
index dd0ece8..4349cea 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\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\321\213\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os"
@@ -84,21 +84,34 @@
// Функция возвращает список объектов кластера
//
// Параметры:
-// Отбор - Структура - Структура отбора объектов (<поле>:<значение>)
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// Отбор - Структура - Структура отбора объектов (<поле>:<значение>)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список объектов кластера 1С
//
-Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
+Функция Список(Знач Отбор = Неопределено
+ , Знач ОбновитьПринудительно = Ложь
+ , Знач ЭлементыКакСоответствия = Ложь) Экспорт
Владелец.ОбновитьДанные(ОбновитьПринудительно);
Результат = Служебный.ПолучитьЭлементыИзМассиваСоответствий(Элементы, Отбор);
+ ИмяПоляКлюча = "Имя";
+
+ Если ТипЗнч(ЭлементыКакСоответствия) = Тип("Строка") Тогда
+ ИмяПоляКлюча = ЭлементыКакСоответствия;
+ ЭлементыКакСоответствия = Истина;
+ КонецЕсли;
+
Если ЭлементыКакСоответствия Тогда
- ПоляЭлемента = Владелец.ПараметрыОбъекта();
+ ПоляЭлемента = Владелец.ПараметрыОбъекта(ИмяПоляКлюча);
Результат = Служебный.МассивОбъектовВМассивСоответствий(Результат, ПоляЭлемента);
КонецЕсли;
@@ -109,22 +122,56 @@
// Функция возвращает список объектов кластера
//
// Параметры:
-// ПоляИерархии - Строка - Поля для построения иерархии списка объектов, разделенные ","
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ПоляИерархии - Строка, - имена полей для построения иерархии списка объектов,
+// Массив разделенные "," или массив имен полей
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список объектов кластера 1С
// <имя поля объекта> - Массив(Соответствие), Соответствие - список объектов кластера или следующий уровень
//
-Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт
+Функция ИерархическийСписок(Знач ПоляИерархии
+ , Знач ОбновитьПринудительно = Ложь
+ , Знач ЭлементыКакСоответствия = Ложь) Экспорт
Владелец.ОбновитьДанные(ОбновитьПринудительно);
ЭлементыДляОбработки = Элементы;
+
+ ИменаПолейКлюча = Новый Массив();
+ ИменаПолейКлюча.Добавить("Имя");
+ ИменаПолейКлюча.Добавить("ИмяРАК");
+
+ Если ТипЗнч(ЭлементыКакСоответствия) = Тип("Строка") Тогда
+ Если ИменаПолейКлюча[1] = ЭлементыКакСоответствия Тогда
+ ИменаПолейКлюча[1] = ИменаПолейКлюча[0];
+ ИменаПолейКлюча[0] = ЭлементыКакСоответствия;
+ КонецЕсли;
+ ЭлементыКакСоответствия = Истина;
+ КонецЕсли;
+
+ ПоляЭлемента0 = Владелец.ПараметрыОбъекта(ИменаПолейКлюча[0]);
+ ПоляЭлемента1 = Владелец.ПараметрыОбъекта(ИменаПолейКлюча[1]);
+
+ Если ТипЗнч(ПоляИерархии) = Тип("Строка") Тогда
+ ПоляИерархии = СтрРазделить(ПоляИерархии, ",", Ложь);
+ КонецЕсли;
+
+ Для й = 0 По ПоляИерархии.ВГраница() Цикл
+ ОписаниеПоля = ПоляЭлемента0.Получить(ПоляИерархии[й]);
+ Если ОписаниеПоля = Неопределено Тогда
+ ОписаниеПоля = ПоляЭлемента1.Получить(ПоляИерархии[й]);
+ КонецЕсли;
+ ПоляИерархии[й] = ОписаниеПоля[ИменаПолейКлюча[0]];
+ КонецЦикла;
+
Если ЭлементыКакСоответствия Тогда
- ПоляЭлемента = Владелец.ПараметрыОбъекта();
- ЭлементыДляОбработки = Служебный.МассивОбъектовВМассивСоответствий(Элементы, ПоляЭлемента);
+ ЭлементыДляОбработки = Служебный.МассивОбъектовВМассивСоответствий(Элементы, ПоляЭлемента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 f047808..c9cd736 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"
@@ -117,7 +117,11 @@
// Параметры:
// Отбор - Структура - Структура отбора объектов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список объектов кластера 1С
@@ -135,7 +139,11 @@
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка объектов, разделенные ","
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список объектов кластера 1С
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"
index 835df10..585a621 100644
--- "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"
@@ -95,7 +95,11 @@
// Параметры:
// Отбор - Структура - Структура отбора ограничений потребления ресурсов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список ограничений потребления ресурсов кластера 1С
@@ -111,10 +115,14 @@
// Функция возвращает ограничений потребления ресурсов кластера 1С
//
// Параметры:
-// ПоляИерархии - Строка - Поля для построения иерархии списка ограничений потребления ресурсов,
-// разделенные ","
-// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ПоляИерархии - Строка - Поля для построения иерархии списка ограничений потребления ресурсов,
+// разделенные ","
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список ограничений потребления ресурсов кластера 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\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 d7d66a7..cd5495e 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"
@@ -95,7 +95,11 @@
// Параметры:
// Отбор - Структура - Структура отбора профилей безопасности (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список профилей безопасности кластера 1С
@@ -114,7 +118,11 @@
// ПоляИерархии - Строка - Поля для построения иерархии списка профилей безопасности,
// разделенные ","
// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список профилей безопасности кластера 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\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 bf0ea4d..49b0902 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"
@@ -11,7 +11,6 @@
Перем Кластер_Владелец;
Перем ПараметрыОбъекта;
-Перем ПараметрыЛицензий;
Перем Элементы;
Перем Лицензии;
@@ -36,7 +35,7 @@
ПараметрыЛицензий = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииПроцессов);
Элементы = Новый ОбъектыКластера(ЭтотОбъект);
- Лицензии = Новый ОбъектыКластера(ЭтотОбъект);
+ Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект);
КонецПроцедуры
@@ -82,43 +81,6 @@
КонецПроцедуры // ОбновитьДанные()
-// Процедура получает данные по лицензиям рабочих процессов от сервиса администрирования кластера 1С
-// и сохраняет в локальных переменных
-//
-// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// - Ложь - данные будут получены если истекло время актуальности
-// или данные не были получены ранее
-//
-Процедура ОбновитьДанныеЛицензий(ОбновитьПринудительно = Ложь) Экспорт
-
- Если НЕ Лицензии.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
- Возврат;
- КонецЕсли;
-
- ПараметрыКоманды = Новый Соответствие();
- ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
- ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
- ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
-
- ПараметрыЛицензий.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
-
- КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыЛицензий.ПараметрыКоманды("Список"));
-
- Если НЕ КодВозврата = 0 Тогда
- ВызватьИсключение СтрШаблон("Ошибка получения лицензий рабочих процессов, КодВозврата = %1: %2",
- КодВозврата,
- Кластер_Агент.ВыводКоманды(Ложь));
- КонецЕсли;
-
- МассивРезультатов = Кластер_Агент.ВыводКоманды();
-
- Лицензии.Заполнить(МассивРезультатов);
-
- Лицензии.УстановитьАктуальность();
-
-КонецПроцедуры // ОбновитьДанныеЛицензий()
-
// Функция возвращает коллекцию параметров объекта
//
// Параметры:
@@ -139,7 +101,11 @@
// Параметры:
// Отбор - Структура - Структура отбора процессов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список рабочих процессов 1С
@@ -157,7 +123,11 @@
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка процессов, разделенные ","
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список рабочих процессов кластера 1С
@@ -217,21 +187,6 @@
КонецФункции // Получить()
-// Функция возвращает коллекцию параметров лицензий
-//
-// Параметры:
-// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
-// в качестве ключа возвращаемого соответствия
-//
-// Возвращаемое значение:
-// Соответствие - коллекция параметров лицензий, для получения/изменения значений
-//
-Функция ПараметрыЛицензий(ИмяПоляКлюча = "Имя") Экспорт
-
- Возврат ПараметрыЛицензий.ОписаниеСвойств(ИмяПоляКлюча);
-
-КонецФункции // ПараметрыОбъекта()
-
// Функция возвращает список лицензий рабочих процессов 1С
//
// Параметры:
@@ -242,8 +197,6 @@
//
Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт
- ОбновитьДанныеЛицензий(ОбновитьПринудительно);
-
Возврат Лицензии;
КонецФункции // Лицензии()
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 5f4e637..db6bccf 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"
@@ -18,7 +18,6 @@
Перем Процесс_Соединения;
Перем ПараметрыОбъекта;
-Перем ПараметрыЛицензий;
Перем ПериодОбновления;
Перем МоментАктуальности;
@@ -59,7 +58,7 @@
ПериодОбновления = 60000;
Процесс_Соединения = Новый Соединения(Кластер_Агент, Кластер_Владелец, ЭтотОбъект);
- Процесс_Лицензии = Новый ОбъектыКластера(ЭтотОбъект);
+ Процесс_Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект);
КонецПроцедуры // ПриСозданииОбъекта()
@@ -120,44 +119,6 @@
КонецПроцедуры // ЗаполнитьПараметрыПроцесса()
-// Процедура получает данные лицензий, выданных рабочим процессом
-// и сохраняет в локальных переменных
-//
-// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// - Ложь - данные будут получены если истекло время актуальности
-// или данные не были получены ранее
-//
-Процедура ОбновитьДанныеЛицензий(ОбновитьПринудительно = Ложь)
-
- Если НЕ Процесс_Лицензии.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
- Возврат;
- КонецЕсли;
-
- ПараметрыКоманды = Новый Соответствие();
- ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
- ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
- ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
- ПараметрыКоманды.Вставить("ИдентификаторПроцесса" , Ид());
-
- ПараметрыЛицензий.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
-
- КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыЛицензий.ПараметрыКоманды("Описание"));
-
- Если НЕ КодВозврата = 0 Тогда
- ВызватьИсключение СтрШаблон("Ошибка получения описания лицензий рабочего процесса, КодВозврата = %1: %2",
- КодВозврата,
- Кластер_Агент.ВыводКоманды(Ложь));
- КонецЕсли;
-
- МассивРезультатов = Кластер_Агент.ВыводКоманды();
-
- Процесс_Лицензии.Заполнить(МассивРезультатов);
-
- Процесс_Лицензии.УстановитьАктуальность();
-
-КонецПроцедуры // ОбновитьДанныеЛицензий()
-
// Функция возвращает коллекцию параметров объекта
//
// Параметры:
@@ -265,21 +226,6 @@
КонецФункции // Соединения()
-// Функция возвращает коллекцию параметров лицензий
-//
-// Параметры:
-// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
-// в качестве ключа возвращаемого соответствия
-//
-// Возвращаемое значение:
-// Соответствие - коллекция параметров лицензий, для получения/изменения значений
-//
-Функция ПараметрыЛицензий(ИмяПоляКлюча = "Имя") Экспорт
-
- Возврат ПараметрыЛицензий.ОписаниеСвойств(ИмяПоляКлюча);
-
-КонецФункции // ПараметрыОбъекта()
-
// Функция возвращает список лицензий, выданных рабочим процессом 1С
//
// Параметры:
@@ -290,8 +236,6 @@
//
Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт
- ОбновитьДанныеЛицензий(ОбновитьПринудительно);
-
Возврат Процесс_Лицензии;
КонецФункции // Лицензии()
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 97a2c22..ad3e2cc 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"
@@ -16,7 +16,6 @@
Перем ИБ_Владелец;
Перем ПараметрыОбъекта;
-Перем ПараметрыЛицензий;
Перем ПериодОбновления;
Перем МоментАктуальности;
@@ -58,7 +57,7 @@
ПериодОбновления = 60000;
- Сеанс_Лицензии = Новый ОбъектыКластера(ЭтотОбъект);
+ Сеанс_Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект, ИБ_Владелец);
КонецПроцедуры // ПриСозданииОбъекта()
@@ -105,44 +104,6 @@
КонецПроцедуры // ОбновитьДанные()
-// Процедура получает данные лицензии, выданной сеансу
-// и сохраняет в локальных переменных
-//
-// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// - Ложь - данные будут получены если истекло время актуальности
-// или данные не были получены ранее
-//
-Процедура ОбновитьДанныеЛицензий(ОбновитьПринудительно = Ложь)
-
- Если НЕ Сеанс_Лицензии.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
- Возврат;
- КонецЕсли;
-
- ПараметрыКоманды = Новый Соответствие();
- ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
- ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
- ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
- ПараметрыКоманды.Вставить("ИдентификаторСеанса" , Ид());
-
- ПараметрыЛицензий.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
-
- КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыЛицензий.ПараметрыКоманды("Описание"));
-
- Если НЕ КодВозврата = 0 Тогда
- ВызватьИсключение СтрШаблон("Ошибка получения описания лицензий сеанса, КодВозврата = %1: %2",
- КодВозврата,
- Кластер_Агент.ВыводКоманды(Ложь));
- КонецЕсли;
-
- МассивРезультатов = Кластер_Агент.ВыводКоманды();
-
- Сеанс_Лицензии.Заполнить(МассивРезультатов);
-
- Сеанс_Лицензии.УстановитьАктуальность();
-
-КонецПроцедуры // ОбновитьДанныеЛицензий()
-
// Функция возвращает коллекцию параметров объекта
//
// Параметры:
@@ -201,21 +162,6 @@
КонецФункции // Получить()
-// Функция возвращает коллекцию параметров лицензий
-//
-// Параметры:
-// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
-// в качестве ключа возвращаемого соответствия
-//
-// Возвращаемое значение:
-// Соответствие - коллекция параметров лицензий, для получения/изменения значений
-//
-Функция ПараметрыЛицензий(ИмяПоляКлюча = "Имя") Экспорт
-
- Возврат ПараметрыЛицензий.ОписаниеСвойств(ИмяПоляКлюча);
-
-КонецФункции // ПараметрыОбъекта()
-
// Функция возвращает список лицензий, выданных сеансу 1С
//
// Параметры:
@@ -226,8 +172,6 @@
//
Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт
- ОбновитьДанныеЛицензий(ОбновитьПринудительно);
-
Возврат Сеанс_Лицензии;
КонецФункции // Лицензии()
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 ec46adc..7de5fa9 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"
@@ -12,7 +12,6 @@
Перем ИБ_Владелец;
Перем ПараметрыОбъекта;
-Перем ПараметрыЛицензий;
Перем Элементы;
Перем Лицензии;
@@ -39,7 +38,7 @@
ПараметрыЛицензий = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ЛицензииСеансов);
Элементы = Новый ОбъектыКластера(ЭтотОбъект);
- Лицензии = Новый ОбъектыКластера(ЭтотОбъект);
+ Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект, ИБ_Владелец);
КонецПроцедуры // ПриСозданииОбъекта()
@@ -89,47 +88,6 @@
КонецПроцедуры // ОбновитьДанные()
-// Процедура получает данные по лицензиям сеансов от сервиса администрирования кластера 1С
-// и сохраняет в локальных переменных
-//
-// Параметры:
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// - Ложь - данные будут получены если истекло время актуальности
-// или данные не были получены ранее
-//
-Процедура ОбновитьДанныеЛицензий(ОбновитьПринудительно = Ложь) Экспорт
-
- Если НЕ Лицензии.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
- Возврат;
- КонецЕсли;
-
- ПараметрыКоманды = Новый Соответствие();
- ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
- ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
- ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
-
- Если НЕ ИБ_Владелец = Неопределено Тогда
- ПараметрыКоманды.Вставить("ИдентификаторИБ", ИБ_Владелец.Ид());
- КонецЕсли;
-
- ПараметрыЛицензий.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
-
- КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыЛицензий.ПараметрыКоманды("Список"));
-
- Если НЕ КодВозврата = 0 Тогда
- ВызватьИсключение СтрШаблон("Ошибка получения списка сеансов, КодВозврата = %1: %2",
- КодВозврата,
- Кластер_Агент.ВыводКоманды(Ложь));
- КонецЕсли;
-
- МассивРезультатов = Кластер_Агент.ВыводКоманды();
-
- Лицензии.Заполнить(МассивРезультатов);
-
- Лицензии.УстановитьАктуальность();
-
-КонецПроцедуры // ОбновитьДанныеЛицензий()
-
// Функция возвращает коллекцию параметров объекта
//
// Параметры:
@@ -150,7 +108,11 @@
// Параметры:
// Отбор - Структура - Структура отбора сеансов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список сеансов
@@ -166,9 +128,13 @@
// Функция возвращает список сеансов
//
// Параметры:
-// ПоляИерархии - Строка - Поля для построения иерархии списка сеансов, разделенные ","
-// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ПоляИерархии - Строка - Поля для построения иерархии списка сеансов, разделенные ","
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список сеансов
@@ -256,21 +222,6 @@
КонецПроцедуры // Удалить()
-// Функция возвращает коллекцию параметров лицензий
-//
-// Параметры:
-// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
-// в качестве ключа возвращаемого соответствия
-//
-// Возвращаемое значение:
-// Соответствие - коллекция параметров лицензий, для получения/изменения значений
-//
-Функция ПараметрыЛицензий(ИмяПоляКлюча = "Имя") Экспорт
-
- Возврат ПараметрыЛицензий.ОписаниеСвойств(ИмяПоляКлюча);
-
-КонецФункции // ПараметрыОбъекта()
-
// Функция возвращает список лицензий сеансов 1С
//
// Параметры:
@@ -281,8 +232,6 @@
//
Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт
- ОбновитьДанныеЛицензий(ОбновитьПринудительно);
-
Возврат Лицензии;
КонецФункции // Лицензии()
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 2887af8..2aa588d 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"
@@ -95,7 +95,11 @@
// Параметры:
// Отбор - Структура - Структура отбора серверов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список серверов кластера 1С
@@ -113,7 +117,11 @@
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка серверов, разделенные ","
// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список серверов кластера 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 31a4fbd..ddd3012 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"
@@ -98,7 +98,11 @@
// Параметры:
// Отбор - Структура - Структура отбора сервисов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список сервисов 1С
@@ -116,7 +120,11 @@
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка сервисов, разделенные ","
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список сервисов кластера 1С
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 c6e2d0a..96146f3 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"
@@ -114,7 +114,11 @@
// Параметры:
// Отбор - Структура - Структура отбора соединений (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список соединений
@@ -132,7 +136,11 @@
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка соединений, разделенные ","
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список соединений
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 54c48e2..5503c46 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"
@@ -95,7 +95,11 @@
// Параметры:
// Отбор - Структура - Структура отбора счетчиков потребления ресурсов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Массив - список счетчиков потребления ресурсов кластера 1С
@@ -114,7 +118,11 @@
// ПоляИерархии - Строка - Поля для построения иерархии списка счетчиков потребления ресурсов,
// разделенные ","
// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
-// ЭлементыКакСоответствия - Булево - Истина - элементы результата будут преобразованы в соответствия
+// ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия
+// Строка с именами свойств в качестве ключей
+// <Имя поля> - элементы результата будут преобразованы в соответствия
+// со значением указанного поля в качестве ключей ("Имя"|"ИмяРАК")
+// Ложь - (по умолчанию) элементы будут возвращены как есть
//
// Возвращаемое значение:
// Соответствие - список счетчиков потребления ресурсов кластера 1С
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\2741\320\241.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\2741\320\241.os"
index 46b3a81..3fa3951 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\2741\320\241.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\2741\320\241.os"
@@ -55,7 +55,7 @@
Агент_ИсполнительКоманд = Новый ИсполнительКоманд(ВерсияИлиПутьКУтилитеАдминистрирования);
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.Агент);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.Агенты);
Если ТипЗнч(Администратор) = Тип("Структура") Тогда
Агент_Администратор = Новый Структура("Администратор, Пароль");
@@ -407,21 +407,35 @@
// Функция возвращает описание центрального сервера 1С в виде соответствия,
// с вложенными описаниями кластеров и всех дочерних объектов
//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
// Возвращаемое значение:
// Соответствие - описание центрального сервера 1С,
// включая описания кластеров и всех дочерних объектов
//
-Функция ОписаниеЦентральногоСервера() Экспорт
+Функция ОписаниеЦентральногоСервера(Знач ИмяПоляКлюча = "Имя") Экспорт
Описание = Новый Соответствие();
- Описание.Вставить("СервисАдминистрирования",
- ПолучитьПоляОбъекта(ЭтотОбъект));
+ ПоляОбъекта = Новый Соответствие();
+
+ Параметры = ПараметрыОбъекта(ИмяПоляКлюча);
+
+ Для Каждого ТекПараметр Из Параметры Цикл
+ ПоляОбъекта.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], ЭтотОбъект.Получить(ТекПараметр.Ключ));
+ КонецЦикла;
+
+ Если ИмяПоляКлюча = "Имя" Тогда
+ Описание.Вставить("СервисАдминистрирования", ПоляОбъекта);
+ Иначе
+ Описание.Вставить("ras", ПоляОбъекта);
+ КонецЕсли;
СписокАдминистраторов = Новый Массив();
Попытка
- СписокАдминистраторов = ПолучитьСписокОбъектов(ЭтотОбъект.Администраторы().Список(),
- ЭтотОбъект.Администраторы().ПараметрыОбъекта());
+ СписокАдминистраторов = ЭтотОбъект.Администраторы().Список(, , ИмяПоляКлюча);
Исключение
ТекстОшибки = СтрШаблон("Ошибка получения списка администраторов агента: %1",
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
@@ -429,15 +443,15 @@
СписокАдминистраторов.Добавить(СтрШаблон("<%1>", ТекстОшибки));
КонецПопытки;
- Описание.Вставить("Администраторы", СписокАдминистраторов);
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Агент.Администратор", ИмяПоляКлюча), СписокАдминистраторов);
- Описание.Вставить("Кластеры", Новый Массив());
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Кластер", ИмяПоляКлюча), Новый Массив());
Кластеры = Кластеры().Список();
Для Каждого ТекКластер Из Кластеры Цикл
- Описание["Кластеры"].Добавить(ОписаниеКластера(ТекКластер));
+ Описание[ПолучитьИмяКоллекцииОбъектов("Кластер", ИмяПоляКлюча)].Добавить(ОписаниеКластера(ТекКластер, ИмяПоляКлюча));
КонецЦикла;
@@ -449,13 +463,15 @@
// с вложенными описаниями всех дочерних объектов
//
// Параметры:
-// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
+// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Соответствие - описание кластера 1С,
// включая описания всех дочерних объектов
//
-Функция ОписаниеКластера(Знач КластерИлиАдрес) Экспорт
+Функция ОписаниеКластера(Знач КластерИлиАдрес, Знач ИмяПоляКлюча = "Имя") Экспорт
Если ТипЗнч(КластерИлиАдрес) = Тип("Строка") Тогда
Кластер = ЭтотОбъект.Кластеры.Получить(КластерИлиАдрес);
@@ -463,80 +479,102 @@
Кластер = КластерИлиАдрес;
КонецЕсли;
- Описание = ПолучитьПоляОбъекта(Кластер);
+ Описание = Новый Соответствие();
+
+ Параметры = Кластер.ПараметрыОбъекта(ИмяПоляКлюча);
- Описание.Вставить("Администраторы",
- ПолучитьСписокОбъектов(Кластер.Администраторы().Список(),
- Кластер.Администраторы().ПараметрыОбъекта()));
+ Для Каждого ТекПараметр Из Параметры Цикл
+ Описание.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], Кластер.Получить(ТекПараметр.Ключ));
+ КонецЦикла;
- Описание.Вставить("Серверы", Новый Массив());
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Кластер.Администратор", ИмяПоляКлюча),
+ Кластер.Администраторы().Список(, , ИмяПоляКлюча));
+
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Сервер", ИмяПоляКлюча), Новый Массив());
Серверы = Кластер.Серверы().Список();
Для Каждого ТекСервер Из Серверы Цикл
- ПоляОбъекта = ПолучитьПоляОбъекта(ТекСервер);
+ ПоляОбъекта = Новый Соответствие();
+
+ Параметры = ТекСервер.ПараметрыОбъекта(ИмяПоляКлюча);
+
+ Для Каждого ТекПараметр Из Параметры Цикл
+ ПоляОбъекта.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], ТекСервер.Получить(ТекПараметр.Ключ));
+ КонецЦикла;
+
ПоляОбъекта.Вставить("НазначенияФункциональности",
- ПолучитьСписокОбъектов(ТекСервер.НазначенияФункциональности().Список()));
- Описание["Серверы"].Добавить(ПоляОбъекта);
+ ТекСервер.НазначенияФункциональности().Список(, , ИмяПоляКлюча));
+ Описание[ПолучитьИмяКоллекцииОбъектов("Сервер", ИмяПоляКлюча)].Добавить(ПоляОбъекта);
КонецЦикла;
- Описание.Вставить("Менеджеры",
- ПолучитьСписокОбъектов(Кластер.Менеджеры().Список()));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("МенеджерКластера", ИмяПоляКлюча),
+ Кластер.Менеджеры().Список(, , ИмяПоляКлюча));
+
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Сервис", ИмяПоляКлюча),
+ Кластер.Сервисы().Список(, , ИмяПоляКлюча));
- Описание.Вставить("Сервисы",
- ПолучитьСписокОбъектов(Кластер.Сервисы().Список()));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("РабочийПроцесс", ИмяПоляКлюча),
+ Кластер.РабочиеПроцессы().Список(, , ИмяПоляКлюча));
+ ИмяСвойства = СтрШаблон("%1.%2",
+ ПолучитьИмяКоллекцииОбъектов("РабочийПроцесс", ИмяПоляКлюча),
+ ПолучитьИмяКоллекцииОбъектов("РабочийПроцесс.Лицензия", ИмяПоляКлюча));
+ Описание.Вставить(ИмяСвойства, Кластер.РабочиеПроцессы().Лицензии().Список(, , ИмяПоляКлюча));
- Описание.Вставить("РабочиеПроцессы",
- ПолучитьСписокОбъектов(Кластер.РабочиеПроцессы().Список()));
- Описание.Вставить("РабочиеПроцессы.Лицензии",
- ПолучитьСписокОбъектов(Кластер.РабочиеПроцессы().Лицензии().Список(),
- Кластер.РабочиеПроцессы().ПараметрыЛицензий()));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("ИнформационнаяБаза", ИмяПоляКлюча),
+ Кластер.ИнформационныеБазы().Список(, , ИмяПоляКлюча));
- Описание.Вставить("ИнформационныеБазы",
- ПолучитьСписокОбъектов(Кластер.ИнформационныеБазы().Список()));
- Описание.Вставить("Соединения", СоединенияКластера(Кластер));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Соединение", ИмяПоляКлюча),
+ СоединенияКластера(Кластер, ИмяПоляКлюча));
- Описание.Вставить("Сеансы", СеансыКластера(Кластер));
- Описание.Вставить("Сеансы.Лицензии",
- ПолучитьСписокОбъектов(Кластер.Сеансы().Лицензии().Список(),
- Кластер.Сеансы().ПараметрыЛицензий()));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Сеанс", ИмяПоляКлюча), СеансыКластера(Кластер, ИмяПоляКлюча));
+ ИмяСвойства = СтрШаблон("%1.%2",
+ ПолучитьИмяКоллекцииОбъектов("Сеанс", ИмяПоляКлюча),
+ ПолучитьИмяКоллекцииОбъектов("Сеанс.Лицензия", ИмяПоляКлюча));
+ Описание.Вставить(ИмяСвойства, Кластер.Сеансы().Лицензии().Список(, , ИмяПоляКлюча));
- Описание.Вставить("Блокировки",
- ПолучитьСписокОбъектов(Кластер.Блокировки().Список()));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("Блокировка", ИмяПоляКлюча),
+ Кластер.Блокировки().Список(, , ИмяПоляКлюча));
- Описание.Вставить("ПрофилиБезопасности", Новый Массив());
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности", ИмяПоляКлюча), Новый Массив());
ПрофилиБезопасности = Кластер.ПрофилиБезопасности().Список();
Для Каждого ТекПрофиль Из ПрофилиБезопасности Цикл
- ПоляОбъекта = ПолучитьПоляОбъекта(ТекПрофиль);
+ ПоляОбъекта = Новый Соответствие();
+
+ Параметры = ТекПрофиль.ПараметрыОбъекта(ИмяПоляКлюча);
+
+ Для Каждого ТекПараметр Из Параметры Цикл
+ ПоляОбъекта.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], ТекПрофиль.Получить(ТекПараметр.Ключ));
+ КонецЦикла;
- ПоляОбъекта.Вставить("Каталоги",
- ПолучитьСписокОбъектов(ТекПрофиль.Каталоги().Список()));
- ПоляОбъекта.Вставить("COMКлассы",
- ПолучитьСписокОбъектов(ТекПрофиль.COMКлассы().Список()));
+ ПоляОбъекта.Вставить(ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности.Каталог", ИмяПоляКлюча),
+ ТекПрофиль.Каталоги().Список(, , ИмяПоляКлюча));
+ ПоляОбъекта.Вставить(ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности.COMКласс", ИмяПоляКлюча),
+ ТекПрофиль.COMКлассы().Список(, , ИмяПоляКлюча));
- ПоляОбъекта.Вставить("ВнешниеКомпоненты",
- ПолучитьСписокОбъектов(ТекПрофиль.ВнешниеКомпоненты().Список()));
+ ПоляОбъекта.Вставить(ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности.ВнешняяКомпонента", ИмяПоляКлюча),
+ ТекПрофиль.ВнешниеКомпоненты().Список(, , ИмяПоляКлюча));
- ПоляОбъекта.Вставить("ВнешниеМодули",
- ПолучитьСписокОбъектов(ТекПрофиль.ВнешниеМодули().Список()));
+ ПоляОбъекта.Вставить(ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности.ВнешнийМодуль", ИмяПоляКлюча),
+ ТекПрофиль.ВнешниеМодули().Список(, , ИмяПоляКлюча));
- ПоляОбъекта.Вставить("Приложения",
- ПолучитьСписокОбъектов(ТекПрофиль.Приложения().Список()));
+ ПоляОбъекта.Вставить(ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности.Приложение", ИмяПоляКлюча),
+ ТекПрофиль.Приложения().Список(, , ИмяПоляКлюча));
- ПоляОбъекта.Вставить("ИнтернетРесурсы",
- ПолучитьСписокОбъектов(ТекПрофиль.ИнтернетРесурсы().Список()));
+ ПоляОбъекта.Вставить(ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности.ИнтернетРесурс", ИмяПоляКлюча),
+ ТекПрофиль.ИнтернетРесурсы().Список(, , ИмяПоляКлюча));
- Описание["ПрофилиБезопасности"].Добавить(ПоляОбъекта);
+ Описание[ПолучитьИмяКоллекцииОбъектов("ПрофильБезопасности", ИмяПоляКлюча)].Добавить(ПоляОбъекта);
КонецЦикла;
- Описание.Вставить("СчетчикиРесурсов",
- ПолучитьСписокОбъектов(Кластер.СчетчикиРесурсов().Список()));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("СчетчикРесурсов", ИмяПоляКлюча),
+ Кластер.СчетчикиРесурсов().Список(, , ИмяПоляКлюча));
- Описание.Вставить("ОграниченияРесурсов",
- ПолучитьСписокОбъектов(Кластер.ОграниченияРесурсов().Список()));
+ Описание.Вставить(ПолучитьИмяКоллекцииОбъектов("ОграничениеРесурсов", ИмяПоляКлюча),
+ Кластер.ОграниченияРесурсов().Список(, , ИмяПоляКлюча));
Возврат Описание;
@@ -544,10 +582,14 @@
// Функция возвращает список сеансов всех кластеров центрального сервера 1С в виде массива
//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
// Возвращаемое значение:
// Массив (Соответствие) - список сеансов
//
-Функция ВсеСеансы() Экспорт
+Функция ВсеСеансы(Знач ИмяПоляКлюча = "Имя") Экспорт
ВсеКластеры = Кластеры.Список();
@@ -569,11 +611,13 @@
//
// Параметры:
// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Массив (Соответствие) - список сеансов кластера 1С
//
-Функция СеансыКластера(Знач КластерИлиАдрес = Неопределено) Экспорт
+Функция СеансыКластера(Знач КластерИлиАдрес = Неопределено, Знач ИмяПоляКлюча = "Имя") Экспорт
Если НЕ ЗначениеЗаполнено(КластерИлиАдрес) Тогда
Возврат ВсеСеансы();
@@ -585,16 +629,20 @@
Кластер = КластерИлиАдрес;
КонецЕсли;
- Возврат ПолучитьСписокОбъектов(Кластер.Сеансы().Список());
+ Возврат Кластер.Сеансы().Список(, , ИмяПоляКлюча);
КонецФункции // СеансыКластера()
// Функция возвращает список соединений всех кластеров центрального сервера 1С в виде массива
//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
// Возвращаемое значение:
// Массив (Соответствие) - список соединений
//
-Функция ВсеСоединения() Экспорт
+Функция ВсеСоединения(Знач ИмяПоляКлюча = "Имя") Экспорт
ВсеКластеры = Кластеры.Список();
@@ -615,12 +663,14 @@
// Функция возвращает список соединений кластера 1С в виде массива
//
// Параметры:
-// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
+// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Массив (Соответствие) - список соединений кластера 1С
//
-Функция СоединенияКластера(Знач КластерИлиАдрес = Неопределено) Экспорт
+Функция СоединенияКластера(Знач КластерИлиАдрес = Неопределено, Знач ИмяПоляКлюча = "Имя") Экспорт
Если НЕ ЗначениеЗаполнено(КластерИлиАдрес) Тогда
Возврат ВсеСоединения();
@@ -632,7 +682,7 @@
Кластер = КластерИлиАдрес;
КонецЕсли;
- Возврат ПолучитьСписокОбъектов(Кластер.Соединения().Список());
+ Возврат Кластер.Соединения().Список(, , ИмяПоляКлюча);
КонецФункции // СоединенияКластера()
@@ -640,38 +690,24 @@
#Область СлужебныеМетоды
-Функция ПолучитьСписокОбъектов(Знач Список, Знач Параметры = Неопределено)
-
- СписокОбъектов = Новый Массив();
-
- Для Каждого ТекОбъект Из Список Цикл
- СписокОбъектов.Добавить(ПолучитьПоляОбъекта(ТекОбъект, Параметры));
- КонецЦикла;
-
- Возврат СписокОбъектов;
-
-КонецФункции // ПолучитьСписокОбъектов()
-
-Функция ПолучитьПоляОбъекта(Знач ОбъектКластера, Знач Параметры = Неопределено)
-
- ПоляОбъекта = Новый Соответствие();
+// Функция возвращает имя коллекции объектов по имени типа, из указанного поля ключа
+//
+// Параметры:
+// ИмяТипа - Строка - имя типа объектов кластера
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет возвращено
+// в качестве имени коллекции
+//
+// Возвращаемое значение:
+// Строка - имя коллекции объектов
+//
+Функция ПолучитьИмяКоллекцииОбъектов(Знач ИмяТипа, Знач ИмяПоляКлюча = "Имя")
- ИспользоватьПараметрыОбъекта = (Параметры = Неопределено);
- Если ИспользоватьПараметрыОбъекта Тогда
- Параметры = ОбъектКластера.ПараметрыОбъекта();
+ Если ИмяПоляКлюча = "Имя" Тогда
+ ИмяПоляКлюча = "ИмяКоллекции";
КонецЕсли;
- Для Каждого ТекПараметр Из Параметры Цикл
- Если ИспользоватьПараметрыОбъекта Тогда
- Ключ = ТекПараметр.Ключ;
- Иначе
- Ключ = ТекПараметр.Значение.ИмяРАК;
- КонецЕсли;
- ПоляОбъекта.Вставить(ТекПараметр.Значение.ИмяРАК, ОбъектКластера.Получить(Ключ));
- КонецЦикла;
-
- Возврат ПоляОбъекта;
+ Возврат ТипыОбъектовКластера.ТипОбъекта(ИмяТипа)[ИмяПоляКлюча];
-КонецФункции // ПолучитьПоляОбъекта()
+КонецФункции // ПолучитьИмяКоллекцииОбъектов()
#КонецОбласти // СлужебныеМетоды
\ No newline at end of file
diff --git "a/src/\320\234\320\260\320\272\320\265\321\202\321\213/package-loader.os" "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/package-loader.os"
new file mode 100644
index 0000000..18a5cd4
--- /dev/null
+++ "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/package-loader.os"
@@ -0,0 +1,7 @@
+Процедура ПриЗагрузкеБиблиотеки(Знач Путь, СтандартнаяОбработка, Отказ)
+
+ СтандартнаяОбработка = Ложь;
+ ДобавитьМакет(ОбъединитьПути(Путь, "Перечисления.json"), "/Макеты/Перечисления");
+ ДобавитьМакет(ОбъединитьПути(Путь, "ТипыОбъектовКластера.json"), "/Макеты/ТипыОбъектовКластера");
+
+КонецПроцедуры
\ No newline at end of file
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 7200ece..856cf0d 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"
@@ -1,5 +1,5 @@
{
- "Агент":{
+ "Агенты":{
"Имя" : "Агент",
"РежимАдминистрирования" : "agent",
"Свойства":{
@@ -637,8 +637,8 @@
}
}
},
- "ИБ":{
- "Имя" : "ИБ",
+ "ИнформационныеБазы":{
+ "Имя" : "ИнформационнаяБаза",
"РежимАдминистрирования" : "infobase",
"Свойства":{
"Ид":{
@@ -1607,7 +1607,7 @@
}
},
"МодулиПрофиля":{
- "Имя" : "Модуль",
+ "Имя" : "ВнешнийМодуль",
"РежимАдминистрирования" : "module",
"Свойства":{
"Имя":{
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 4c94dc3..cb8ffa7 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"
@@ -14,8 +14,8 @@
#Использовать 1commands
#Использовать v8runner
#Использовать 1connector
+#Использовать "../Макеты"
-Перем ЭтоПриложениеEXE;
Перем Лог;
// Функция - читает указанный макет JSON и возвращает содержимое в виде структуры/массива
@@ -28,17 +28,12 @@
//
Функция ПрочитатьДанныеИзМакетаJSON(ИмяМакета) Экспорт
- Если ЭтоСборкаEXE() Тогда
- КаталогЗапуска = КаталогПрограммы();
- Иначе
- КаталогЗапуска = ТекущийСценарий().Каталог;
- КонецЕсли;
-
Чтение = Новый ЧтениеJSON();
-
- Чтение.ОткрытьФайл(СтрШаблон("%1/../Макеты/%2.json", КаталогЗапуска, ИмяМакета),
- КодировкаТекста.UTF8);
+ ПутьКМакету = ПолучитьМакет(СтрШаблон("/Макеты/%1", ИмяМакета));
+
+ Чтение.ОткрытьФайл(ПутьКМакету, КодировкаТекста.UTF8);
+
Возврат ПрочитатьJSON(Чтение, Ложь);
КонецФункции // ПрочитатьДанныеИзМакетаJSON()
@@ -112,9 +107,10 @@
// копирования данных не происходят, в результирующее соответствие помещаются исходные элементы массива
//
// Параметры:
-// МассивСоответствий - Массив(Соответствие) - Данные для преобразования
-// <имя поля> - Произвольный - Значение элемента соответствия
-// ПоляИерархии - Строка - Поля для построения иерархии списка объектов, разделенные ","
+// МассивСоответствий - Массив(Соответствие) - Данные для преобразования
+// <имя поля> - Произвольный - Значение элемента соответствия
+// ПоляИерархии - Строка, Массив - имена полей для построения иерархии списка объектов,
+// разделенные "," или массив имен полей
//
// Возвращаемое значение:
// Соответствие - иерархия соответствий по значениям полей упорядочивания
@@ -125,7 +121,11 @@
//
Функция ИерархическоеПредставлениеМассиваСоответствий(МассивСоответствий, ПоляИерархии) Экспорт
- МассивУпорядочивания = СтрРазделить(ПоляИерархии, ",", Ложь);
+ МассивУпорядочивания = ПоляИерархии;
+
+ Если ТипЗнч(ПоляИерархии) = Тип("Строка") Тогда
+ МассивУпорядочивания = СтрРазделить(ПоляИерархии, ",", Ложь);
+ КонецЕсли;
Если МассивУпорядочивания.Количество() = 0 Тогда
Возврат МассивСоответствий;
@@ -208,6 +208,14 @@
//
Функция МассивОбъектовВМассивСоответствий(МассивЭлементов, ПоляЭлемента) Экспорт
+ Если НЕ ТипЗнч(МассивЭлементов) = Тип("Массив") Тогда
+ Возврат МассивЭлементов;
+ КонецЕсли;
+
+ Если МассивЭлементов.Количество() = 0 Тогда
+ Возврат МассивЭлементов;
+ КонецЕсли;
+
Если ТипЗнч(МассивЭлементов[0]) = Тип("Соответствие") Тогда
Возврат МассивЭлементов;
КонецЕсли;
@@ -345,21 +353,6 @@
КонецПроцедуры // ВывестиПоляОбъекта()
-// Функция признак того, что выполняется скрипт, собранный в приложение
-//
-// Возвращаемое значение:
-// Булево - Истина - выполняется скрипт, собранный в приложение
-//
-Функция ЭтоСборкаEXE() Экспорт
-
- Если ЭтоПриложениеEXE = Неопределено Тогда
- ЭтоПриложениеEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE";
- КонецЕсли;
-
- Возврат ЭтоПриложениеEXE;
-
-КонецФункции // ЭтоСборкаEXE()
-
// Функция возвращает лог библиотеки
//
// Возвращаемое значение:
diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\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.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\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.os"
index 4629928..925a4e6 100644
--- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\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.os"
+++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\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.os"
@@ -79,13 +79,13 @@
//
Функция ТипОбъекта(Знач ТипОбъектов) Экспорт
- ИмяТипа = ТипыОбъектов.Получить(ВРег(ТипОбъектов));
+ ОписаниеТипа = ТипыОбъектов.Получить(ВРег(ТипОбъектов));
- Если ИмяТипа = Неопределено Тогда
+ Если ОписаниеТипа = Неопределено Тогда
ВызватьИсключение СтрШаблон("Не найден тип объектов ""%1""", ТипОбъектов);
КонецЕсли;
- Возврат ИмяТипа;
+ Возврат ОписаниеТипа;
КонецФункции // ТипОбъекта()
@@ -404,6 +404,8 @@
ОписаниеТипа = Новый Структура();
ОписаниеТипа.Вставить("Имя" , ИменаТипа[0]);
+ ОписаниеТипа.Вставить("ИмяКоллекции" , ИмяТипа);
+ ОписаниеТипа.Вставить("ИмяРАК" , ОписаниеТипаОбъектов.РежимАдминистрирования);
ОписаниеТипа.Вставить("РежимАдминистрирования", ОписаниеТипаОбъектов.РежимАдминистрирования);
Если ТипЗнч(ИменаРодителя) = Тип("Массив") И ИменаРодителя.Количество() > 0 Тогда
ОписаниеТипа.Вставить("Владелец" , ТипОбъекта(ИменаРодителя[0]));
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 979adc2..4e75cec 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"
@@ -503,7 +503,7 @@
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ, ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы, ПараметрыКоманды);
ВыводКоманды = "";
@@ -533,7 +533,8 @@
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
ПараметрыКоманды.Вставить("ИдентификаторИБ" , ТекИБ["infobase"]);
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ, ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы,
+ ПараметрыКоманды);
ВыводКоманды = СокращенныйТекстОписанияИБ(ТекИБ["ТекстОбъекта"]);
@@ -562,7 +563,8 @@
ПараметрыКоманды.Вставить("ИдентификаторИБ" , ТекИБ["infobase"]);
ПараметрыКоманды.Вставить("СтрокаАвторизацииИБ" , ИБ_СтрокаАвторизации());
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ, ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы,
+ ПараметрыКоманды);
ВыводКоманды = ТекИБ["ТекстОбъекта"];
@@ -591,7 +593,8 @@
ПараметрыКоманды.Вставить("ИдентификаторИБ" , ТекИБ["infobase"]);
ПараметрыКоманды.Вставить("СтрокаАвторизацииИБ" , "");
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ, ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы,
+ ПараметрыКоманды);
ВыводКоманды = СтрШаблон("Недостаточно прав пользователя для доступа к базе %1", ТекИБ["name"]);
@@ -612,7 +615,8 @@
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ, ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы,
+ ПараметрыКоманды);
ВыводКоманды = "";
@@ -652,7 +656,7 @@
ПараметрыКоманды.Вставить("БлокировкаРегламентныхЗаданийВключена", Перечисления.СостоянияВыключателя.Выключено);
ПараметрыКоманды.Вставить("ВыдачаЛицензийСервером" , Перечисления.ПраваДоступа.Разрешено);
- ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИБ, ПараметрыКоманды);
+ ПараметрыОбъекта = Новый КомандыОбъекта(Перечисления.РежимыАдминистрирования.ИнформационныеБазы, ПараметрыКоманды);
ВремТекст = Новый ТекстовыйДокумент();
ВремТекст.УстановитьТекст(ВозвращаемыеЗначения["ИнформационныеБазы.Добавление"]);
diff --git a/tests/irac-test.os b/tests/irac-test.os
index f91a340..d1458bc 100644
--- a/tests/irac-test.os
+++ b/tests/irac-test.os
@@ -775,7 +775,7 @@
ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "Сеансы.Список");
- Сеансы = Кластер.Сеансы().ИерархическийСписок("host,user-name");
+ Сеансы = Кластер.Сеансы().ИерархическийСписок("host,Пользователь");
СеансыКомпьютера = Сеансы["Sport1"];