From 066f8330a944bd3b8a8f9b4e63a3cab3bc708e72 Mon Sep 17 00:00:00 2001 From: Oleg Tymko Date: Sun, 4 Nov 2018 17:58:54 +0700 Subject: [PATCH 1/4] =?UTF-8?q?=D0=98=D0=B3=D0=BD=D0=BE=D1=80=20oscript=5F?= =?UTF-8?q?modules?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5ddbfac..736e1d7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.vscode/launch.json +.vscode/launch.json sonarlint.json \.sonar/ @@ -6,3 +6,5 @@ test-reports/ coverage/ *.ospx tests/fixtures/ПараметрыТестирования.txt + +oscript_modules \ No newline at end of file From 00e98c65815ca662447a7a1ce350a875b1cd3530 Mon Sep 17 00:00:00 2001 From: Oleg Tymko Date: Sun, 4 Nov 2018 19:06:47 +0700 Subject: [PATCH 2/4] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20=D0=A1?= =?UTF-8?q?=D0=BE=D0=B5=D0=B4=D0=B8=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Замена соответствия в соединении на класс соединение --- lib.config | 1 + src/lib.config | 1 + ...20\275\320\265\320\275\320\270\320\265.os" | 148 ++++++++++++++++++ ...20\275\320\265\320\275\320\270\321\217.os" | 8 +- 4 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" diff --git a/lib.config b/lib.config index a764183..7327750 100644 --- a/lib.config +++ b/lib.config @@ -16,6 +16,7 @@ + diff --git a/src/lib.config b/src/lib.config index 17f61b9..1a71e72 100644 --- a/src/lib.config +++ b/src/lib.config @@ -16,6 +16,7 @@ + diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" new file mode 100644 index 0000000..5d11c8e --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" @@ -0,0 +1,148 @@ +Перем Объект_Ид; +Перем Объект_Параметры; +Перем ПараметрыОбъекта; + +Перем Кластер_Агент; +Перем Кластер_Владелец; +Перем Процесс_Владелец; +Перем ИБ_Владелец; + +Перем ПериодОбновления; +Перем МоментАктуальности; + +Перем Лог; + +Процедура ПриСозданииОбъекта(АгентКластера, Кластер, Процесс, ИБ, Соединение) + + Кластер_Агент = АгентКластера; + Кластер_Владелец = Кластер; + ИБ_Владелец = ИБ; + Процесс_Владелец = Процесс; + + ПараметрыОбъекта = Новый ПараметрыОбъекта("connection"); + + Если ТипЗнч(Соединение) = Тип("Соответствие") Тогда + Объект_Ид = Соединение["connection"]; + Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Объект_Параметры, Соединение); + МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); + Иначе + Объект_Ид = Соединение; + МоментАктуальности = 0; + КонецЕсли; + + ПериодОбновления = 60000; + +КонецПроцедуры // ПриСозданииОбъекта() + +Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт + + Если Служебный.ТребуетсяОбновление(Объект_Параметры, + МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + + ОбновитьДанныеОбъекта(); + + КонецЕсли; + + МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); + +КонецПроцедуры // ОбновитьДанные() + +Процедура ОбновитьДанныеОбъекта() Экспорт + + ПараметрыЗапуска = Новый Массив(); + ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения()); + + ПараметрыЗапуска.Добавить("connection"); + ПараметрыЗапуска.Добавить("list"); + + ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид())); + ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации()); + + Если НЕ Процесс_Владелец = Неопределено Тогда + ПараметрыЗапуска.Добавить(СтрШаблон("--process=%1", Процесс_Владелец.Получить("process"))); + КонецЕсли; + + Если НЕ ИБ_Владелец = Неопределено Тогда + ПараметрыЗапуска.Добавить(СтрШаблон("--infobase=%1", ИБ_Владелец.Ид())); + ПараметрыЗапуска.Добавить(СтрШаблон(ИБ_Владелец.СтрокаАвторизации())); + КонецЕсли; + + Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска); + + МассивРезультатов = Кластер_Агент.ВыводКоманды(); + + Если МассивРезультатов.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Объект_Параметры, МассивРезультатов[0]); + +КонецПроцедуры // ОбновитьДанныеОбъекта() + +Функция ПараметрыОбъекта(ИмяПоляКлюча = "ИмяПараметра") Экспорт + + Возврат ПараметрыОбъекта.Получить(ИмяПоляКлюча); + +КонецФункции // ПараметрыОбъекта() + +Функция Ид() Экспорт + + Возврат Объект_Ид; + +КонецФункции // Ид() + +Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт + + ОбновитьДанные(ОбновитьПринудительно); + + Если НЕ Найти(ВРег("Ид, process"), ВРег(ИмяПоля)) = 0 Тогда + Возврат Объект_Ид; + КонецЕсли; + + ЗначениеПоля = Объект_Параметры.Получить(ИмяПоля); + + Если ЗначениеПоля = Неопределено Тогда + + ОписаниеПараметра = ПараметрыОбъекта("ИмяПоляРАК").Получить(ИмяПоля); + + Если НЕ ОписаниеПараметра = Неопределено Тогда + ЗначениеПоля = Объект_Параметры.Получить(ОписаниеПараметра["ИмяПараметра"]); + КонецЕсли; + КонецЕсли; + + Возврат ЗначениеПоля; + +КонецФункции // Получить() + +Процедура Отключить() Экспорт + + ПараметрыЗапуска = Новый Массив(); + ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения()); + + ПараметрыЗапуска.Добавить("connection"); + ПараметрыЗапуска.Добавить("list"); + + ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид())); + ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации()); + + Если НЕ Процесс_Владелец = Неопределено Тогда + ПараметрыЗапуска.Добавить(СтрШаблон("--process=%1", Процесс_Владелец.Получить("process"))); + КонецЕсли; + + ОтборИБ = Новый Соответствие(); + ОтборИБ.Вставить("infobase", ИБ_Владелец.Ид()); + + СписокИБ = Кластер_Владелец.ИнформационныеБазы().Список(ОтборИБ); + Если НЕ СписокИБ.Количество() = 0 Тогда + ПараметрыЗапуска.Добавить(СтрШаблон(СписокИБ[0].СтрокаАвторизации())); + КонецЕсли; + + Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска); + + Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); + + ОбновитьДанные(Истина); + +КонецПроцедуры // Отключить() + +Лог = Логирование.ПолучитьЛог("ktb.lib.irac"); \ No newline at end of file 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 8f3000a..8540798 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" @@ -63,7 +63,13 @@ Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска); - Элементы.Заполнить(Кластер_Агент.ВыводКоманды()); + МассивРезультатов = Кластер_Агент.ВыводКоманды(); + + МассивПроцессов = Новый Массив(); + Для Каждого ТекОписание Из МассивРезультатов Цикл + МассивПроцессов.Добавить(Новый Соединение(Кластер_Агент, Кластер_Владелец, Процесс_Владелец, ИБ_Владелец, ТекОписание)); + КонецЦикла; + Элементы.Заполнить(МассивПроцессов); Элементы.УстановитьАктуальность(); From d10a5beea1fb834655279b4483fdf9ed66b940bd Mon Sep 17 00:00:00 2001 From: Oleg Tymko Date: Sun, 4 Nov 2018 19:50:00 +0700 Subject: [PATCH 3/4] =?UTF-8?q?=D0=9D=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BD=D0=B0=20=D0=BD=D0=B5=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Не понятно почему так, временно добавлено значение неопределено --- ...\320\275\320\260\321\217\320\221\320\260\320\267\320\260.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6748c10..5122544 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" @@ -87,7 +87,7 @@ ЗаполнитьПараметрыИБ(ТекОписание); ИБ_Сеансы = Новый Сеансы(Кластер_Агент, Кластер_Владелец, ЭтотОбъект); - ИБ_Соединения = Новый Соединения(Кластер_Агент, Кластер_Владелец, , ЭтотОбъект); + ИБ_Соединения = Новый Соединения(Кластер_Агент, Кластер_Владелец, Неопределено, ЭтотОбъект); МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); From d1aac25509f643b6ad4bc4ca71cae5990e457c5d Mon Sep 17 00:00:00 2001 From: Oleg Tymko Date: Sun, 4 Nov 2018 19:51:49 +0700 Subject: [PATCH 4/4] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20=D0=A1=D0=BE?= =?UTF-8?q?=D0=B5=D0=B4=D0=B8=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + передача процесса владельца --- ...20\275\320\265\320\275\320\270\320\265.os" | 59 ++++++++++++++++--- ...20\275\320\265\320\275\320\270\321\217.os" | 2 +- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" index 5d11c8e..43f49d9 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\265.os" @@ -12,7 +12,16 @@ Перем Лог; -Процедура ПриСозданииОбъекта(АгентКластера, Кластер, Процесс, ИБ, Соединение) +// Конструктор +// +// Параметры: +// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера +// Кластер - Кластера - ссылка на родительский объект кластера +// Процесс - Процесс - ссылка на родительский объект процесса +// ИБ - ИнформационнаяБаза - ссылка на родительский объект информационной базы +// Соединение - Строка, Соответствие - идентификатор или параметры соединения +// +Процедура ПриСозданииОбъекта(АгентКластера, Кластер, ИБ, Соединение, Процесс = Неопределено) Кластер_Агент = АгентКластера; Кластер_Владелец = Кластер; @@ -34,6 +43,25 @@ КонецПроцедуры // ПриСозданииОбъекта() +// Функция возвращает ИД объекта +// +// Возвращаемое значение: +// Строка - идентификатор объекта +// +Функция Ид() Экспорт + + Возврат Объект_Ид; + +КонецФункции // Ид() + +// Процедура получает данные от сервиса администрирования кластера 1С +// и сохраняет в локальных переменных +// +// Параметры: +// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// - Ложь - данные будут получены если истекло время актуальности +// или данные не были получены ранее +// Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт Если Служебный.ТребуетсяОбновление(Объект_Параметры, @@ -47,6 +75,9 @@ КонецПроцедуры // ОбновитьДанные() +// Процедура получает данные соединения от сервиса администрирования кластера 1С +// и сохраняет в локальных переменных +// Процедура ОбновитьДанныеОбъекта() Экспорт ПараметрыЗапуска = Новый Массив(); @@ -79,18 +110,30 @@ КонецПроцедуры // ОбновитьДанныеОбъекта() +// Функция возвращает коллекцию параметров объекта +// +// Параметры: +// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано +// в качестве ключа возвращаемого соответствия +// +// Возвращаемое значение: +// Соответствие - коллекция параметров объекта, для получения/изменения значений +// Функция ПараметрыОбъекта(ИмяПоляКлюча = "ИмяПараметра") Экспорт Возврат ПараметрыОбъекта.Получить(ИмяПоляКлюча); КонецФункции // ПараметрыОбъекта() -Функция Ид() Экспорт - - Возврат Объект_Ид; - -КонецФункции // Ид() - +// Функция возвращает значение параметра соединения 1С +// +// Параметры: +// ИмяПоля - Строка - Имя параметра соединения +// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// +// Возвращаемое значение: +// Произвольный - значение параметра соединения 1С +// Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт ОбновитьДанные(ОбновитьПринудительно); @@ -114,6 +157,8 @@ КонецФункции // Получить() +// Процедура отключает соединение в кластере 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 8540798..326fbb5 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" @@ -67,7 +67,7 @@ МассивПроцессов = Новый Массив(); Для Каждого ТекОписание Из МассивРезультатов Цикл - МассивПроцессов.Добавить(Новый Соединение(Кластер_Агент, Кластер_Владелец, Процесс_Владелец, ИБ_Владелец, ТекОписание)); + МассивПроцессов.Добавить(Новый Соединение(Кластер_Агент, Кластер_Владелец, ИБ_Владелец, ТекОписание, Процесс_Владелец)); КонецЦикла; Элементы.Заполнить(МассивПроцессов);