diff --git a/lib.config b/lib.config
index a764183..702695e 100644
--- a/lib.config
+++ b/lib.config
@@ -23,6 +23,8 @@
+
+
diff --git a/src/lib.config b/src/lib.config
index 17f61b9..e26e1f3 100644
--- a/src/lib.config
+++ b/src/lib.config
@@ -23,6 +23,8 @@
+
+
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os"
index 70237b6..36c89a4 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200.os"
@@ -16,6 +16,7 @@
Перем Кластер_Блокировки;
Перем Кластер_ИБ;
Перем Кластер_Профили;
+Перем Кластер_Счетчики;
Перем ПараметрыОбъекта;
@@ -67,7 +68,8 @@
Кластер_Соединения = Новый Соединения(Кластер_Агент, ЭтотОбъект);
Кластер_Блокировки = Новый Блокировки(Кластер_Агент, ЭтотОбъект);
Кластер_Профили = Новый ПрофилиБезопасности(Кластер_Агент, ЭтотОбъект);
-
+ Кластер_Счетчики = Новый СчетчикиПотребленияРесурсов(Кластер_Агент, ЭтотОбъект);
+
Кластер_Параметры = Неопределено;
КонецПроцедуры // ПриСозданииОбъекта()
@@ -382,7 +384,13 @@
Возврат Кластер_Профили;
КонецФункции // ПрофилиБезопасности()
+
+Функция СчетчикиПотребленияРесурсов() Экспорт
+ Возврат Кластер_Счетчики;
+
+КонецФункции // СчетчикиПотребленияРесурсов()
+
// Функция возвращает значение параметра кластера 1С
//
// Параметры:
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\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\232\320\273\320\260\321\201\321\202\320\265\321\200\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
new file mode 100644
index 0000000..d18f5b7
--- /dev/null
+++ "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\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
@@ -0,0 +1,215 @@
+Перем Кластер_Агент;
+Перем Кластер_Владелец;
+Перем ПараметрыОбъекта;
+Перем Элементы;
+
+Перем Лог;
+
+// Конструктор
+//
+// Параметры:
+// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
+// Кластер - Кластер - ссылка на родительский объект кластера
+//
+Процедура ПриСозданииОбъекта(АгентКластера, Кластер)
+
+ Кластер_Агент = АгентКластера;
+ Кластер_Владелец = Кластер;
+
+ ПараметрыОбъекта = Новый ПараметрыОбъекта("counter");
+
+ Элементы = Новый ОбъектыКластера(ЭтотОбъект);
+
+КонецПроцедуры // ПриСозданииОбъекта()
+
+// Процедура получает данные от сервиса администрирования кластера 1С
+// и сохраняет в локальных переменных
+//
+// Параметры:
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// - Ложь - данные будут получены если истекло время актуальности
+// или данные не были получены ранее
+//
+Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
+
+ Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыЗапуска = Новый Массив();
+ ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());
+
+ ПараметрыЗапуска.Добавить("counter");
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
+ ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());
+
+ ПараметрыЗапуска.Добавить("list");
+
+ Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);
+
+ МассивРезультатов = Кластер_Агент.ВыводКоманды();
+
+ МассивСчетчиков = Новый Массив();
+ Для Каждого ТекОписание Из МассивРезультатов Цикл
+ МассивСчетчиков.Добавить(Новый СчетчикПотребленияРесурсов(Кластер_Агент, Кластер_Владелец, ТекОписание));
+ КонецЦикла;
+
+ Элементы.Заполнить(МассивСчетчиков);
+
+ Элементы.УстановитьАктуальность();
+
+КонецПроцедуры // ОбновитьДанные()
+
+// Функция возвращает коллекцию параметров объекта
+//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
+// Возвращаемое значение:
+// Соответствие - коллекция параметров объекта, для получения/изменения значений
+//
+Функция ПараметрыОбъекта(ИмяПоляКлюча = "ИмяПараметра") Экспорт
+
+ Возврат ПараметрыОбъекта.Получить(ИмяПоляКлюча);
+
+КонецФункции // ПараметрыОбъекта()
+
+// Функция возвращает список счетчиков потребления ресурсов кластера 1С
+//
+// Параметры:
+// Отбор - Структура - Структура отбора счетчиков потребления ресурсов (<поле>:<значение>)
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+//
+// Возвращаемое значение:
+// Массив - список счетчиков потребления ресурсов кластера 1С
+//
+Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь) Экспорт
+
+ СписокСчетчиков = Элементы.Список(Отбор, ОбновитьПринудительно);
+
+ Возврат СписокСчетчиков;
+
+КонецФункции // Список()
+
+// Функция возвращает счетчиков потребления ресурсов кластера 1С
+//
+// Параметры:
+// ПоляИерархии - Строка - Поля для построения иерархии списка счетчиков потребления ресурсов,
+// разделенные ","
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+//
+// Возвращаемое значение:
+// Соответствие - список счетчиков потребления ресурсов кластера 1С
+// <имя поля объекта> - Массив(Соответствие), Соответствие - список счетчиков потребления ресурсов
+// или следующий уровень
+//
+Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь) Экспорт
+
+ СписокСчетчиков = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно);
+
+ Возврат СписокСчетчиков;
+
+КонецФункции // ИерархическийСписок()
+
+// Функция возвращает количество счетчиков потребления ресурсов в списке
+//
+// Возвращаемое значение:
+// Число - количество счетчиков потребления ресурсов
+//
+Функция Количество() Экспорт
+
+ Если Элементы = Неопределено Тогда
+ Возврат 0;
+ КонецЕсли;
+
+ Возврат Элементы.Количество();
+
+КонецФункции // Количество()
+
+// Функция возвращает описание счетчика потребления ресурсов кластера 1С
+//
+// Параметры:
+// Имя - Строка - Имя счетчика потребления ресурсов
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+//
+// Возвращаемое значение:
+// Соответствие - описание счетчика потребления ресурсов кластера 1С
+//
+Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь) Экспорт
+
+ Отбор = Новый Соответствие();
+ Отбор.Вставить("name", Имя);
+
+ СписокСчетчиков = Элементы.Список(Отбор, ОбновитьПринудительно);
+
+ Если СписокСчетчиков.Количество() = 0 Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Возврат СписокСчетчиков[0];
+
+КонецФункции // Получить()
+
+// Процедура добавляет новый счетчик потребления ресурсов в кластер 1С
+//
+// Параметры:
+// Имя - Строка - имя счетчика потребления ресурсов 1С
+// ПараметрыСчетчика - Структура - параметры счетчика потребления ресурсов 1С
+//
+Процедура Добавить(Имя, ПараметрыСчетчика = Неопределено) Экспорт
+
+ ПараметрыЗапуска = Новый Массив();
+ ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());
+
+ ПараметрыЗапуска.Добавить("counter");
+ ПараметрыЗапуска.Добавить("insert");
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
+ ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--counter=%1", Имя));
+
+ ВремПараметры = ПараметрыОбъекта();
+
+ Для Каждого ТекЭлемент Из ВремПараметры Цикл
+ ЗначениеПараметра = Служебный.ПолучитьЗначениеИзСтруктуры(ПараметрыСчетчика, ТекЭлемент.Ключ, 0);
+ ПараметрыЗапуска.Добавить(СтрШаблон(ТекЭлемент.Значение.ПараметрКоманды + "=%1", ЗначениеПараметра));
+ КонецЦикла;
+
+ Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);
+
+ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
+
+ ОбновитьДанные(Истина);
+
+КонецПроцедуры // Добавить()
+
+// Процедура удаляет счетчик потребления ресурсов из кластера 1С
+//
+// Параметры:
+// Имя - Строка - Имя счетчикf потребления ресурсов
+//
+Процедура Удалить(Имя) Экспорт
+
+ ПараметрыЗапуска = Новый Массив();
+ ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());
+
+ ПараметрыЗапуска.Добавить("counter");
+ ПараметрыЗапуска.Добавить("remove");
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--сounter=%1", Имя));
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
+ ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());
+
+ Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);
+
+ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
+
+ ОбновитьДанные(Истина);
+
+КонецПроцедуры // Удалить()
+
+Лог = Логирование.ПолучитьЛог("ktb.lib.irac");
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os"
index ec54ebd..7345bf6 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os"
@@ -829,6 +829,125 @@
#КонецОбласти // ИнформационныеБазы
+#Область СчетчикиПотребленияРесурсов
+
+// Процедура заполняет массив описаний параметров рабочего процесса
+//
+Процедура Параметры_СчетчикПотребленияРесурсов_Свойства() Экспорт
+
+ ДобавитьОписаниеСвойстваОбъекта("Имя" , "name");
+ ДобавитьОписаниеСвойстваОбъекта("ДлительностьСбора" , "collection-time");
+ ДобавитьОписаниеСвойстваОбъекта("ДлительностьСбораМс" , "duration");
+ ДобавитьОписаниеСвойстваОбъекта("Группировка" , "group");
+ ДобавитьОписаниеСвойстваОбъекта("ТипОтбора" , "filter-type");
+ ДобавитьОписаниеСвойстваОбъекта("Отбор" , "filter");
+ ДобавитьОписаниеСвойстваОбъекта("ПроцессорноеВремя" , "cpu-time");
+ ДобавитьОписаниеСвойстваОбъекта("ДлительностьВызововСУБД" , "duration-dbms");
+ ДобавитьОписаниеСвойстваОбъекта("ДлительностьВызововСервисов" , "service");
+ ДобавитьОписаниеСвойстваОбъекта("ПотреблениеПамяти" , "memory");
+ ДобавитьОписаниеСвойстваОбъекта("ОбъемИнформацииСчитаннойСДиска" , "read");
+ ДобавитьОписаниеСвойстваОбъекта("ОбъемИнформацииЗаписаннойНаДиск" , "write");
+ ДобавитьОписаниеСвойстваОбъекта("ОбъемИнформацииПереданнойСУБД" , "dbms-bytes");
+ ДобавитьОписаниеСвойстваОбъекта("КоличествоСерверныхВызовов" , "call");
+ ДобавитьОписаниеСвойстваОбъекта("КоличествоАктивныхСеансов" , "number-of-active-sessions");
+ ДобавитьОписаниеСвойстваОбъекта("КоличествоСеансов" , "number-of-sessions");
+ ДобавитьОписаниеСвойстваОбъекта("Описание" , "descr");
+
+КонецПроцедуры // Параметры_СчетчикПотребленияРесурсов_Свойства()
+
+// Процедура заполняет общие параметры запуска команд счетчиков потребления ресурсов
+//
+Процедура Параметры_СчетчикПотребленияРесурсов_Общие()
+
+ ПараметрыЗапуска = Новый Массив();
+
+ ДобавитьПараметрПоИмени("СтрокаПодключенияАгента");
+
+ ДобавитьПараметрСтроку("counter");
+
+ ДобавитьПараметрПоШаблону("--cluster=%1", "ИдентификаторКластера");
+ ДобавитьПараметрПоИмени("СтрокаАвторизацииКластера");
+
+КонецПроцедуры // Параметры_СчетчикПотребленияРесурсов_Общие()
+
+// Процедура заполняет параметры команды получения списка счетчиков потребления ресурсов
+//
+Процедура Параметры_СчетчикПотребленияРесурсов_Список() Экспорт
+
+ Параметры_СчетчикПотребленияРесурсов_Общие();
+
+ ДобавитьПараметрСтроку("list");
+
+КонецПроцедуры // Параметры_СчетчикПотребленияРесурсов_Список()
+
+// Процедура заполняет параметры команды изменения счетчика потребления ресурсов
+//
+Процедура Параметры_СчетчикПотребленияРесурсов_Изменить() Экспорт
+
+ Параметры_СчетчикПотребленияРесурсов_Общие();
+
+ ДобавитьПараметрСтроку("update");
+
+ ДобавитьПараметрПоШаблону("--name=%1", "Имя");
+ ДобавитьПараметрПоШаблону("--collection-time=%1", "ДлительностьСбора");
+ ДобавитьПараметрПоШаблону("--group=%1", "Группировка");
+ ДобавитьПараметрПоШаблону("--filter-type=%1", "ТипОтбора");
+ ДобавитьПараметрПоШаблону("--filter=%1", "Отбор");
+ ДобавитьПараметрПоШаблону("--duration=%1", "ДлительностьСбораМс");
+ ДобавитьПараметрПоШаблону("--cpu-time=%1", "ПроцессорноеВремя");
+ ДобавитьПараметрПоШаблону("--memory=%1", "ПотреблениеПамяти");
+ ДобавитьПараметрПоШаблону("--read=%1", "ОбъемИнформацииСчитаннойСДиска");
+ ДобавитьПараметрПоШаблону("--write=%1", "ОбъемИнформацииЗаписаннойНаДиск");
+ ДобавитьПараметрПоШаблону("--duration-dbms=%1", "ДлительностьВызововСУБД");
+ ДобавитьПараметрПоШаблону("--dbms-bytes=%1", "ОбъемИнформацииПереданнойСУБД");
+ ДобавитьПараметрПоШаблону("--service=%1", "ДлительностьВызововСервисов");
+ ДобавитьПараметрПоШаблону("--call=%1", "КоличествоСерверныхВызовов");
+ ДобавитьПараметрПоШаблону("--number-of-active-sessions=%1", "КоличествоАктивныхСеансов");
+ ДобавитьПараметрПоШаблону("--number-of-sessions=%1", "КоличествоСеансов");
+ ДобавитьПараметрПоШаблону("--descr=%1", "Описание");
+
+ ДобавитьПрочиеПараметрыКоманды("Изменение");
+
+КонецПроцедуры // Параметры_СчетчикПотребленияРесурсов_Изменить()
+
+// Процедура заполняет параметры команды получения описания счетчика потребления ресурсов
+//
+Процедура Параметры_СчетчикПотребленияРесурсов_Описание() Экспорт
+
+ Параметры_СчетчикПотребленияРесурсов_Общие();
+
+ ДобавитьПараметрСтроку("info");
+ ДобавитьПараметрПоШаблону("--counter=%1", "ИмяСчетчика");
+
+КонецПроцедуры // Параметры_СчетчикПотребленияРесурсов_Описание()
+
+// Процедура заполняет параметры команды удаления сервера
+//
+Процедура Параметры_СчетчикПотребленияРесурсов_Значения() Экспорт
+
+ Параметры_СчетчикПотребленияРесурсов_Общие();
+
+ ДобавитьПараметрСтроку("values");
+
+ ДобавитьПараметрПоШаблону("--counter=%1", "ИмяСчетчика");
+ ДобавитьПараметрПоШаблону("--object=%1", "Отбор");
+
+КонецПроцедуры // Параметры_СчетчикПотребленияРесурсов_Значения()
+
+// Процедура заполняет параметры команды удаления счетчика потребления ресурсов
+//
+Процедура Параметры_СчетчикПотребленияРесурсов_Удалить() Экспорт
+
+ Параметры_СчетчикПотребленияРесурсов_Общие();
+
+ ДобавитьПараметрСтроку("remove");
+
+ ДобавитьПараметрПоШаблону("--name=%1", "ИмяСчетчика");
+
+КонецПроцедуры // Параметры_СчетчикПотребленияРесурсов_Удалить()
+
+#КонецОбласти // СчетчикиПотребленияРесурсов
+
#КонецОбласти // ПроцедурыЗаполненияПараметровОбъектов
#Область СлужебныеПроцедуры
@@ -925,6 +1044,11 @@
|Изменить:update,
|Удалить:remove");
+ ОписанияОбъектов.Вставить("СчетчикПотребленияРесурсов:counter" , "Список:list,
+ |Изменить:update,
+ |Значения:values,
+ |Удалить:remove");
+
Для Каждого ТекОписание Из ОписанияОбъектов Цикл
ДобавитьПолучениеПараметровОбъекта(ТекОписание.Ключ, ТекОписание.Значение);
КонецЦикла;
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os"
index 42e2852..2816510 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\260.os"
@@ -19,6 +19,7 @@
// profile.module - Профиль.Модуль
// profile.app - Профиль.Приложение
// profile.inet - Профиль.ИнтернетРесурс
+// counter - СчетчикПотребленияРесурсов
Перем ТипОбъекта;
Перем Параметры;
@@ -61,7 +62,9 @@
ПроцедурыЗаполнения.Вставить(ВРег("Профиль.Приложение") , "ЗаполнитьПараметрыПриложенияПрофиля");
ПроцедурыЗаполнения.Вставить(ВРег("profile.inet") , "ЗаполнитьПараметрыИнтернетРесурсаПрофиля");
ПроцедурыЗаполнения.Вставить(ВРег("Профиль.ИнтернетРесурс") , "ЗаполнитьПараметрыИнтернетРесурсаПрофиля");
-
+ ПроцедурыЗаполнения.Вставить(ВРег("counter") , "ЗаполнитьПараметрыСчетчикаПотребленияРесурсов");
+ ПроцедурыЗаполнения.Вставить(ВРег("Счетчик") , "ЗаполнитьПараметрыСчетчикаПотребленияРесурсов");
+
ПроцедураЗаполнения = ПроцедурыЗаполнения[ВРег(ИмяТипаОбъекта)];
Если НЕ ПроцедураЗаполнения = Неопределено Тогда
@@ -403,4 +406,25 @@
КонецПроцедуры // ЗаполнитьПараметрыИнтернетРесурсаПрофиля()
+Процедура ЗаполнитьПараметрыСчетчикаПотребленияРесурсов() Экспорт
+
+ ДобавитьПараметрОписанияОбъекта("Имя" , "name");
+ ДобавитьПараметрОписанияОбъекта("ДлительностьСбора" , "collection-time" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ДлительностьСбораМс" , "duration" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("Группировка" , "group" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ТипОтбора" , "filter-type" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("Отбор" , "filter" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ПроцессорноеВремя" , "cpu-time" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ДлительностьВызововСУБД" , "duration-dbms" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ДлительностьВызововСервисов" , "service" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ПотреблениеПамяти" , "memory" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ОбъемИнформацииСчитаннойСДиска" , "read" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ОбъемИнформацииЗаписаннойНаДиск" , "write" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("ОбъемИнформацииПереданнойСУБД" , "dbms-bytes" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("КоличествоСерверныхВызовов" , "call" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("Описание" , "descr" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("КоличествоАктивныхСеансов" , "number-of-active-sessions" , "", "Чтение, Добавление, Изменение");
+ ДобавитьПараметрОписанияОбъекта("КоличествоСеансов" , "number-of-sessions" , "", "Чтение, Добавление, Изменение");
+КонецПроцедуры // ЗаполнитьПараметрыСчетчикаПотребленияРесурсов()
+
Лог = Логирование.ПолучитьЛог("ktb.lib.irac");
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\237\320\276\321\202\321\200\320\265\320\261\320\273\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\241\321\207\320\265\321\202\321\207\320\270\320\272\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
new file mode 100644
index 0000000..86a73de
--- /dev/null
+++ "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\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os"
@@ -0,0 +1,212 @@
+Перем Счетчик_Имя;
+Перем Счетчик_Параметры;
+Перем Счетчик_ДлительностьСбора;
+Перем Счетчик_Значения;
+
+Перем Кластер_Агент;
+Перем Кластер_Владелец;
+
+Перем ПараметрыОбъекта;
+Перем ПериодОбновления;
+Перем МоментАктуальности;
+
+Перем Лог;
+
+// Конструктор
+//
+// Параметры:
+// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
+// Кластер - Кластер - ссылка на родительский объект кластера
+// Счетчик - Строка, Соответствие - имя счетчика потребления ресурсов в кластере 1С
+// или параметры счетчика потребления ресурсов
+//
+Процедура ПриСозданииОбъекта(АгентКластера, Кластер, Счетчик)
+
+ Если НЕ ЗначениеЗаполнено(Счетчик) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыОбъекта = Новый КомандыОбъекта("counter");
+
+ Кластер_Агент = АгентКластера;
+ Кластер_Владелец = Кластер;
+
+ Если ТипЗнч(Счетчик) = Тип("Соответствие") Тогда
+ Счетчик_Имя = Счетчик["name"];
+ ЗаполнитьПараметрыСчетчика(Счетчик);
+ МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
+ Иначе
+ Счетчик_Имя = Счетчик;
+ МоментАктуальности = 0;
+ КонецЕсли;
+
+ ПериодОбновления = 60000;
+
+ Счетчик_Значения = Новый ОбъектыКластера(ЭтотОбъект);
+
+КонецПроцедуры // ПриСозданииОбъекта()
+
+// Процедура получает данные от сервиса администрирования кластера 1С
+// и сохраняет в локальных переменных
+//
+// Параметры:
+// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
+// - Ложь - данные будут получены если истекло время актуальности
+// или данные не были получены ранее
+//
+Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт
+
+ Если НЕ Служебный.ТребуетсяОбновление(Счетчик_Параметры,
+ МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыЗапуска = Новый Массив();
+ ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());
+
+ ПараметрыЗапуска.Добавить("counter");
+ ПараметрыЗапуска.Добавить("info");
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--counter=%1", Имя()));
+ ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
+ ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());
+
+ Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);
+
+ МассивРезультатов = Кластер_Агент.ВыводКоманды();
+ Если МассивРезультатов.Количество() = 0 Тогда
+ Возврат;
+ КонецЕсли;
+ ЗаполнитьПараметрыСчетчика(МассивРезультатов[0]);
+ МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
+
+КонецПроцедуры // ОбновитьДанные()
+
+// Процедура заполняет параметры счетчика потребления ресурсов
+//
+// Параметры:
+// ДанныеЗаполнения - Соответствие - данные, из которых будут заполнены параметры счетчика потребления ресурсов
+//
+Процедура ЗаполнитьПараметрыСчетчика(ДанныеЗаполнения)
+
+ Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Счетчик_Параметры, ДанныеЗаполнения);
+
+КонецПроцедуры // ЗаполнитьПараметрыСчетчика()
+
+// Функция возвращает коллекцию параметров объекта
+//
+// Параметры:
+// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
+// в качестве ключа возвращаемого соответствия
+//
+// Возвращаемое значение:
+// Соответствие - коллекция параметров объекта, для получения/изменения значений
+//
+Функция ПараметрыОбъекта(ИмяПоляКлюча = "ИмяПараметра") Экспорт
+
+ Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча);
+
+КонецФункции // ПараметрыОбъекта()
+
+// Функция возвращает имя счетчика потребления ресурсов
+//
+// Возвращаемое значение:
+// Строка - имя счетчика потребления ресурсов
+//
+Функция Имя() Экспорт
+
+ Возврат Счетчик_Имя;
+
+КонецФункции // Имя()
+
+// Функция возвращает значение параметра счетчика потребления ресурсов кластера 1С
+//
+// Параметры:
+// ИмяПоля - Строка - Имя параметра кластера
+// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
+//
+// Возвращаемое значение:
+// Произвольный - значение параметра счетчика потребления ресурсов кластера 1С
+//
+Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт
+
+ ОбновитьДанные(ОбновитьПринудительно);
+
+ Если НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда
+ Возврат Счетчик_Имя;
+ КонецЕсли;
+
+ ЗначениеПоля = Счетчик_Параметры.Получить(ИмяПоля);
+
+ Если ЗначениеПоля = Неопределено Тогда
+
+ ОписаниеПараметра = ПараметрыОбъекта("ИмяПоляРАК").Получить(ИмяПоля);
+
+ Если НЕ ОписаниеПараметра = Неопределено Тогда
+ ЗначениеПоля = Счетчик_Параметры.Получить(ОписаниеПараметра["ИмяПараметра"]);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат ЗначениеПоля;
+
+КонецФункции // Получить()
+
+
+// Процедура изменяет параметры счетчика потребления ресурсов
+//
+// Параметры:
+// ПараметрыСчетчика - Структура - новые параметры счетчика потребления ресурсов
+//
+Процедура Изменить(Знач ПараметрыСчетчика = Неопределено) Экспорт
+
+ Если НЕ ТипЗнч(ПараметрыСчетчика) = Тип("Соответствие") Тогда
+ ПараметрыСчетчика = Новый Соответствие();
+ КонецЕсли;
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_Владелец.СтрокаАвторизации());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
+ ПараметрыКоманды.Вставить("Имя", Счетчик_Имя);
+
+ Для Каждого ТекЭлемент Из ПараметрыСчетчика Цикл
+ ПараметрыКоманды.Вставить(ТекЭлемент.Ключ, ТекЭлемент.Значение);
+ КонецЦикла;
+
+ ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);
+
+ КодВозврата = Кластер_Агент.ВыполнитьКоманду(ПараметрыОбъекта.ПараметрыКоманды("Изменить"));
+
+ Если НЕ КодВозврата = 0 Тогда
+ ВызватьИсключение СтрШаблон("Ошибка изменения параметров счетчика, КодВозврата = %1: %2",
+ Имя(),
+ Кластер_Агент.ВыводКоманды(Ложь));
+ КонецЕсли;
+
+ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));
+ ОбновитьДанные(Истина);
+
+КонецПроцедуры // Изменить()
+
+Функция Значения() Экспорт
+
+ ПараметрыЗапуска = Новый Массив();
+ ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());
+
+ ПараметрыЗапуска.Добавить("counter");
+ ПараметрыЗапуска.Добавить(СтрШаблон("--counter=%1", Имя()));
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
+ ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());
+
+ ПараметрыЗапуска.Добавить("values");
+
+ Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);
+
+ Счетчик_Значения.Заполнить(Кластер_Агент.ВыводКоманды());
+
+ Возврат Счетчик_Значения;
+
+КонецФункции
+
+Лог = Логирование.ПолучитьЛог("ktb.lib.irac");
diff --git "a/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.txt" "b/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.txt"
new file mode 100644
index 0000000..077b1d1
--- /dev/null
+++ "b/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.txt"
@@ -0,0 +1,54 @@
+name : CounterAll
+collection-time : 3600000
+group : users
+filter-type : all-selected
+filter : infobase=ut11
+duration : analyze
+cpu-time : analyze
+memory : analyze
+read : analyze
+write : analyze
+duration-dbms : analyze
+dbms-bytes : analyze
+service : analyze
+call : analyze
+number-of-active-sessions : analyze
+number-of-sessions : analyze
+descr :
+
+name : serverCalls
+collection-time : 3600000
+group : users
+filter-type : all
+filter :
+duration : analyze
+cpu-time : not-analyze
+memory : not-analyze
+read : not-analyze
+write : not-analyze
+duration-dbms : not-analyze
+dbms-bytes : not-analyze
+service : not-analyze
+call : analyze
+number-of-active-sessions : not-analyze
+number-of-sessions : not-analyze
+descr :
+
+name : CallInfo
+collection-time : current-call
+group : users
+filter-type : all
+filter :
+duration : not-analyze
+cpu-time : not-analyze
+memory : analyze
+read : analyze
+write : analyze
+duration-dbms : not-analyze
+dbms-bytes : analyze
+service : not-analyze
+call : not-analyze
+number-of-active-sessions : not-analyze
+number-of-sessions : not-analyze
+descr :
+
diff --git "a/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.txt" "b/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.txt"
new file mode 100644
index 0000000..c284e53
--- /dev/null
+++ "b/tests/fixtures/\320\234\320\260\320\272\320\265\321\202_\320\241\321\207\320\265\321\202\321\207\320\270\320\272\320\270\320\237\320\276\321\202\321\200\320\265\320\261\320\273\320\265\320\275\320\270\321\217\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.txt"
@@ -0,0 +1,27 @@
+object : infobase=ut11;userName=DefUser
+collection-time : 3600000
+duration : 143047
+cpu-time : 2562
+memory : 0
+read : 5989394
+write : 5038969
+duration-dbms : 4306
+dbms-bytes : 2632378
+service : 92
+call : 0
+number-of-active-sessions : 0
+number-of-sessions : 95
+
+object : infobase=ut11;userName=user1
+collection-time : 3600000
+duration : 28000
+cpu-time : 872
+memory : 0
+read : 1390767
+write : 1392297
+duration-dbms : 799
+dbms-bytes : 1586071
+service : 30
+call : 0
+number-of-active-sessions : 0
+number-of-sessions : 9
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 a49b414..ddbc00e 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"
@@ -909,6 +909,44 @@
КонецФункции // Вывод_ПрофилиБезопасностиИнтернетРесурсыСписок()
+Функция Вывод_СчетчикиПотребленияРесурсовСписок()
+
+ ПараметрыКоманды = Новый Соответствие();
+ ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Агент_СтрокаПодключения());
+ ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Ид());
+ ПараметрыКоманды.Вставить("СтрокаАвторизацииКластера", Кластер_СтрокаАвторизации());
+
+ ПараметрыОбъекта = Новый КомандыОбъекта("counter", ПараметрыКоманды);
+
+ ВыводКоманды = ВозвращаемыеЗначения["СчетчикиПотребленияРесурсов"];
+
+ Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды);
+
+КонецФункции // Вывод_СчетчикиПотребленияРесурсовСписок()
+
+
+Функция Вывод_СчетчикиПотребленияРесурсовЗначения()
+
+ Счетчики = РазобратьВыводКоманды(ВозвращаемыеЗначения["СчетчикиПотребленияРесурсов"]);
+
+ ПараметрыЗапуска = Новый Массив();
+ ПараметрыЗапуска.Добавить(Агент_СтрокаПодключения());
+
+ ПараметрыЗапуска.Добавить("counter");
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--counter=%1", Счетчики[0]["name"]));
+
+ ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Ид()));
+ ПараметрыЗапуска.Добавить(Кластер_СтрокаАвторизации());
+
+ ПараметрыЗапуска.Добавить("values");
+
+ ВыводКоманды = ВозвращаемыеЗначения["СчетчикиПотребленияРесурсов.Значения"];
+
+ Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыЗапуска, ВыводКоманды);
+
+КонецФункции // Вывод_СчетчикиПотребленияРесурсовЗначения()
+
Процедура Инициализация()
Лог = Логирование.ПолучитьЛог("ktb.lib.irac");
@@ -1022,6 +1060,11 @@
ПараметрыКластера.Вставить("ПрофилиБезопасности", СтруктураПрофилей);
+ ПараметрыКластера.Вставить("СчетчикиПотребленияРесурсов",
+ Новый Структура("Список, Значения"));
+ ПараметрыКластера.СчетчикиПотребленияРесурсов.Список = Вывод_СчетчикиПотребленияРесурсовСписок();
+ ПараметрыКластера.СчетчикиПотребленияРесурсов.Значения = Вывод_СчетчикиПотребленияРесурсовЗначения();
+
КонецПроцедуры // Инициализация()
Функция ПрочитатьМакетыОбъектовСервера(Знач ПутьККаталогу)
diff --git a/tests/irac-test.os b/tests/irac-test.os
index bb1e4cd..722a37a 100644
--- a/tests/irac-test.os
+++ b/tests/irac-test.os
@@ -106,6 +106,10 @@
СписокТестов.Добавить("ТестДолжен_ПолучитьСписокПриложенийПрофиля");
СписокТестов.Добавить("ТестДолжен_ПолучитьСписокИнтернетРесурсовПрофиля");
+ СписокТестов.Добавить("ТестДолжен_ПолучитьСписокСчетчиковПотребленияРесурсов");
+ СписокТестов.Добавить("ТестДолжен_ПолучитьПараметрыСчетчиковПотребленияРесурсов");
+ СписокТестов.Добавить("ТестДолжен_ПолучитьЗначенияСчетчикаПотребленияРесурсов");
+
Возврат СписокТестов;
КонецФункции // ПолучитьСписокТестов()
@@ -1200,3 +1204,79 @@
КонецПроцедуры // ТестДолжен_ПолучитьСписокИнтернетРесурсовПрофиля()
+Процедура ТестДолжен_ПолучитьСписокСчетчиковПотребленияРесурсов() Экспорт
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "Кластеры.Список");
+
+ Кластеры = АгентКластера.Кластеры();
+ Кластер = Кластеры.Получить(ПараметрыТестирования.Параметры().Кластер_АдресПорт);
+
+ Кластер.УстановитьАдминистратора(ПараметрыТестирования.Параметры().Кластер_Администратор,
+ ПараметрыТестирования.Параметры().Кластер_Пароль);
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "СчетчикиПотребленияРесурсов.Список");
+
+ СчетчикиПотребленияРесурсов = Кластер.СчетчикиПотребленияРесурсов().Список();
+
+ Утверждения.ПроверитьБольше(СчетчикиПотребленияРесурсов.Количество(), 0, "Не удалось получить список счетчиков потребления ресурсов");
+
+КонецПроцедуры // ТестДолжен_ПолучитьСписокСчетчиковПотребленияРесурсов()
+
+// Процедура - тест
+//
+Процедура ТестДолжен_ПолучитьПараметрыСчетчиковПотребленияРесурсов() Экспорт
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "Кластеры.Список");
+
+ Кластеры = АгентКластера.Кластеры();
+
+ Кластер = Кластеры.Получить(ПараметрыТестирования.Параметры().Кластер_АдресПорт);
+
+ Кластер.УстановитьАдминистратора(ПараметрыТестирования.Параметры().Кластер_Администратор,
+ ПараметрыТестирования.Параметры().Кластер_Пароль);
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(),
+ "СчетчикиПотребленияРесурсов.Список");
+
+ СчетчикиПотребленияРесурсов = Кластер.СчетчикиПотребленияРесурсов();
+
+ Счетчик = СчетчикиПотребленияРесурсов.Получить("CounterAll");
+
+ ИмяСчетчика = Счетчик.Получить("Имя");
+ ДлительностьСбора = Счетчик.Получить("ДлительностьСбора");
+ ПотреблениеПамяти = Счетчик.Получить("ПотреблениеПамяти");
+
+ Утверждения.ПроверитьРавенство(ИмяСчетчика, "CounterAll", "Ошибка проверки имени счетчика потребления ресурсов");
+ Утверждения.ПроверитьРавенство(ДлительностьСбора, "3600000", "Ошибка проверки длительности сбора счетчика потребления ресурсов");
+ Утверждения.ПроверитьРавенство(ПотреблениеПамяти, "analyze", "Ошибка проверки анализа потребления памяти счетчика потребления ресурсов");
+
+КонецПроцедуры // ТестДолжен_ПолучитьПараметрыСчетчиковПотребленияРесурсов()
+
+// Процедура - тест
+//
+Процедура ТестДолжен_ПолучитьЗначенияСчетчикаПотребленияРесурсов() Экспорт
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "Кластеры.Список");
+
+ Кластеры = АгентКластера.Кластеры();
+
+ Кластер = Кластеры.Получить(ПараметрыТестирования.Параметры().Кластер_АдресПорт);
+
+ Кластер.УстановитьАдминистратора(ПараметрыТестирования.Параметры().Кластер_Администратор,
+ ПараметрыТестирования.Параметры().Кластер_Пароль);
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(),
+ "СчетчикиПотребленияРесурсов.Список");
+
+ СчетчикиПотребленияРесурсов = Кластер.СчетчикиПотребленияРесурсов();
+
+ Счетчик = СчетчикиПотребленияРесурсов.Получить("CounterAll");
+
+ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(),
+ "СчетчикиПотребленияРесурсов.Значения");
+
+ ЗначенияСчетчика = Счетчик.Значения();
+
+ Утверждения.ПроверитьБольше(ЗначенияСчетчика.Количество(), 0, "Не удалось получить значения счетчика потребления ресурсов");
+
+КонецПроцедуры // ТестДолжен_ПолучитьЗначенияСчетчикаПотребленияРесурсов()
\ No newline at end of file