Skip to content

Commit

Permalink
Merge branch 'release/v.1.2.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
Artem Kuznetsov authored and Artem Kuznetsov committed Apr 15, 2022
2 parents 78fdc71 + 70e1851 commit 07e10b5
Show file tree
Hide file tree
Showing 13 changed files with 141 additions and 83 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

Описание.Имя("irac")
.Версия("1.2.0")
.Версия("1.2.1")
.Автор("Artem Kuznetsov")
.АдресАвтора("ArKuznetsov@gmail.com")
.Описание("Библиотека администрирования кластера серверов 1С")
Expand Down
8 changes: 8 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@

Библиотека подключается, как отдельный класс и используется для вызова команд утилиты RAC для взаимодействия с одним экземпляром сервера администрирования кластера 1С.

## Используемая кодировка

В некоторых случаях консольная утилита RAC может выводить результат в некорректной кодировке.

Для указания кодировки можно использовать переменную среды **RAC_ENCODING**. Возможные значения _OEM_, _ANSI_, _UTF8_. По умолчанию используется кодировка **UTF8**.

В известных случаях для **Windows** проблему устраняет установка кодировки в значение **OEM**.

### Пример получения списка кластеров, параметров серверов и информационных баз

```bsl
Expand Down
12 changes: 10 additions & 2 deletions src/Классы/ИсполнительКоманд.os
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,16 @@
Приложение = Служебный.ОбернутьВКавычки(ПутьКУтилитеАдминистрирования());

КодировкаВывода = КодировкаТекста.UTF8;
Если ЭтоWindows Тогда
КодировкаВывода = КодировкаТекста.OEM;

НастройкаКодировки = ПолучитьПеременнуюСреды("RAC_ENCODING");
Если ЗначениеЗаполнено(НастройкаКодировки) Тогда
Попытка
КодировкаВывода = КодировкаТекста[НастройкаКодировки];
Исключение
Лог.Ошибка("В переменной среды ""RAC_ENCODING"" указана некорректная
| кодировка ""%1"", ожидается ""UTF8"", ""OEM"", ""ANSI"".",
НастройкаКодировки);
КонецПопытки;
КонецЕсли;

Команда = Новый Команда;
Expand Down
3 changes: 2 additions & 1 deletion src/Классы/Лицензии.os
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@
Возврат Перечисления.РежимыАдминистрирования.ЛицензииСеансов;
Иначе
ВызватьИсключение СтрШаблон("Некорректный тип ""%1"" владельца лицензий,
|ожидались ""РабочиеПроцессы"" или ""Сеансы""!");
| ожидались ""РабочиеПроцессы"" или ""Сеансы""!",
Владелец);
КонецЕсли;

КонецФункции // ТипЛицензий()
Expand Down
8 changes: 4 additions & 4 deletions src/Классы/МенеджерКластера.os
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,13 @@
ЗначениеПоля = Неопределено;

Если НЕ Найти("ИД, MANAGER", ВРег(ИмяПоля)) = 0 Тогда
Возврат Менеджер_Ид;
ЗначениеПоля = Менеджер_Ид;
ИначеЕсли НЕ Найти("ИДПРОЦЕССА, PID", ВРег(ИмяПоля)) = 0 Тогда
Возврат Менеджер_ИдПроцесса;
ЗначениеПоля = Менеджер_ИдПроцесса;
ИначеЕсли НЕ Найти("СЕРВЕР, HOST", ВРег(ИмяПоля)) = 0 Тогда
Возврат Менеджер_Адрес;
ЗначениеПоля = Менеджер_Адрес;
ИначеЕсли НЕ Найти("ПОРТ, PORT", ВРег(ИмяПоля)) = 0 Тогда
Возврат Менеджер_Порт;
ЗначениеПоля = Менеджер_Порт;
Иначе
ЗначениеПоля = Менеджер_Свойства.Получить(ИмяПоля);
КонецЕсли;
Expand Down
27 changes: 5 additions & 22 deletions src/Классы/ОбъектКластера.os
Original file line number Diff line number Diff line change
Expand Up @@ -11,48 +11,34 @@
Перем Объект_Свойства;

Перем Кластер_Агент;
Перем Кластер_Владелец;

Перем ПараметрыОбъекта;

Перем ПериодОбновления;
Перем МоментАктуальности;

Перем Лог;

// Конструктор
//
// Параметры:
// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
// Кластер - Кластер - ссылка на родительский объект кластера
// ТипОбъекта - Перечисления. - имя типа объекта кластера
// РежимыАдминистрирования
// ТипОбъекта - Перечисления - имя типа объекта кластера
// .РежимыАдминистрирования
// ОбъектКластера - Строка, Соответствие - идентификатор объекта в кластере 1С или параметры объекта
//
Процедура ПриСозданииОбъекта(АгентКластера, Кластер, ТипОбъекта, ОбъектКластера)

Лог = Служебный.Лог();

Если НЕ ЗначениеЗаполнено(ОбъектКластера) Тогда
Возврат;
КонецЕсли;

Объект_Тип = ТипОбъекта;

ПараметрыОбъекта = Новый КомандыОбъекта(Кластер_Агент, Объект_Тип);

Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;

ПараметрыОбъекта = Новый КомандыОбъекта(Кластер_Агент, Объект_Тип);

Если ТипЗнч(ОбъектКластера) = Тип("Соответствие") Тогда
Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Объект_Свойства, ОбъектКластера);
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах();
Иначе
МоментАктуальности = 0;
КонецЕсли;

ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект);

КонецПроцедуры // ПриСозданииОбъекта()

// Функция возвращает описание параметров объекта
Expand Down Expand Up @@ -81,14 +67,11 @@
//
// Параметры:
// ИмяПоля - Строка - Имя параметра кластера
// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC)
// 0 - обновить данные только по таймеру
// -1 - не обновлять данные
//
// Возвращаемое значение:
// Произвольный - значение параметра объекта кластера 1С
//
Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт
Функция Получить(ИмяПоля) Экспорт

ЗначениеПоля = Неопределено;

Expand Down
8 changes: 2 additions & 6 deletions src/Классы/ОграничениеРесурсов.os
Original file line number Diff line number Diff line change
Expand Up @@ -225,18 +225,14 @@
КонецПроцедуры // Изменить()

// Процедура удаляет ограничение потребления ресурсов из кластера 1С
//
// Параметры:
// Имя - Строка - Имя ограничения потребления ресурсов
//
Процедура Удалить(Имя) Экспорт
Процедура Удалить() Экспорт

ПараметрыКоманды = Новый Соответствие();
ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
ПараметрыКоманды.Вставить("ПараметрыАвторизацииКластера", Кластер_Владелец.ПараметрыАвторизации());

ПараметрыКоманды.Вставить("ИмОграничения" , Имя());
ПараметрыКоманды.Вставить("ИмяОграничения" , Имя());

ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);

Expand Down
6 changes: 3 additions & 3 deletions src/Классы/ОграниченияРесурсов.os
Original file line number Diff line number Diff line change
Expand Up @@ -186,13 +186,13 @@
Отбор.Вставить("name", ИмяИлиИд);
КонецЕсли;

Списокограничений = Элементы.Список(Отбор, РежимОбновления, КакСоответствие);
СписокОграничений = Элементы.Список(Отбор, РежимОбновления, КакСоответствие);

Если НЕ ЗначениеЗаполнено(Списокограничений) Тогда
Если НЕ ЗначениеЗаполнено(СписокОграничений) Тогда
Возврат Неопределено;
КонецЕсли;

Возврат Списокограничений[0];
Возврат СписокОграничений[0];

КонецФункции // Получить()

Expand Down
7 changes: 1 addition & 6 deletions src/Классы/РабочиеПроцессы.os
Original file line number Diff line number Diff line change
Expand Up @@ -205,16 +205,11 @@
КонецФункции // Получить()

// Функция возвращает список лицензий рабочих процессов 1С
//
// Параметры:
// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC)
// 0 - обновить данные только по таймеру
// -1 - не обновлять данные
//
// Возвращаемое значение:
// ОбъектыКластера - список лицензий рабочих процессов 1С
//
Функция Лицензии(РежимОбновления = 0) Экспорт
Функция Лицензии() Экспорт

Возврат Лицензии;

Expand Down
7 changes: 1 addition & 6 deletions src/Классы/Сеансы.os
Original file line number Diff line number Diff line change
Expand Up @@ -246,16 +246,11 @@
КонецПроцедуры // Удалить()

// Функция возвращает список лицензий сеансов 1С
//
// Параметры:
// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC)
// 0 - обновить данные только по таймеру
// -1 - не обновлять данные
//
// Возвращаемое значение:
// ОбъектыКластера - список лицензий сеансов 1С
//
Функция Лицензии(РежимОбновления = 0) Экспорт
Функция Лицензии() Экспорт

Возврат Лицензии;

Expand Down
8 changes: 2 additions & 6 deletions src/Классы/СчетчикРесурсов.os
Original file line number Diff line number Diff line change
Expand Up @@ -279,17 +279,13 @@

// Процедура удаляет счетчик потребления ресурсов из кластера 1С
//
// Параметры:
// Имя - Строка - Имя счетчик потребления ресурсов
//
Процедура Удалить(Имя) Экспорт
Процедура Удалить() Экспорт

ПараметрыКоманды = Новый Соответствие();
ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения());
ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид());
ПараметрыКоманды.Вставить("ПараметрыАвторизацииКластера", Кластер_Владелец.ПараметрыАвторизации());

ПараметрыКоманды.Вставить("ИмяСчетчика" , Имя());
ПараметрыКоманды.Вставить("ИмяСчетчика" , Имя());

ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды);

Expand Down
20 changes: 10 additions & 10 deletions src/Классы/УправлениеКластером1С.os
Original file line number Diff line number Diff line change
Expand Up @@ -635,7 +635,7 @@
// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Массив (Соответствие) - список сеансов
// Массив Из Соответствие - список сеансов
//
Функция ВсеСеансы(Знач ИмяПоляКлюча = "Имя") Экспорт

Expand All @@ -644,7 +644,7 @@
ВсеСеансы = Новый Массив();

Для Каждого ТекКластер Из ВсеКластеры Цикл
СеансыКластера = СеансыКластера(ТекКластер);
СеансыКластера = СеансыКластера(ТекКластер, ИмяПоляКлюча);

Для Каждого ТекСеанс Из СеансыКластера Цикл
ВсеСеансы.Добавить(ТекСеанс);
Expand All @@ -658,12 +658,12 @@
// Функция возвращает список сеансов кластера 1С в виде массива
//
// Параметры:
// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Массив (Соответствие) - список сеансов кластера 1С
// Массив Из Соответствие - список сеансов кластера 1С
//
Функция СеансыКластера(Знач КластерИлиАдрес = Неопределено, Знач ИмяПоляКлюча = "Имя") Экспорт

Expand All @@ -688,7 +688,7 @@
// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Массив (Соответствие) - список соединений
// Массив Из Соответствие - список соединений
//
Функция ВсеСоединения(Знач ИмяПоляКлюча = "Имя") Экспорт

Expand All @@ -697,7 +697,7 @@
ВсеСоединения = Новый Массив();

Для Каждого ТекКластер Из ВсеКластеры Цикл
СоединенияКластера = СоединенияКластера(ТекКластер);
СоединенияКластера = СоединенияКластера(ТекКластер, ИмяПоляКлюча);

Для Каждого ТекСеанс Из СоединенияКластера Цикл
ВсеСоединения.Добавить(ТекСеанс);
Expand All @@ -711,12 +711,12 @@
// Функция возвращает список соединений кластера 1С в виде массива
//
// Параметры:
// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
// КластерИлиАдрес - Кластер, Строка - объект или адрес кластера 1С
// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Массив (Соответствие) - список соединений кластера 1С
// Массив Из Соответствие - список соединений кластера 1С
//
Функция СоединенияКластера(Знач КластерИлиАдрес = Неопределено, Знач ИмяПоляКлюча = "Имя") Экспорт

Expand Down
Loading

0 comments on commit 07e10b5

Please sign in to comment.