-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from otymko/develop
Соединение как Класс
- Loading branch information
Showing
6 changed files
with
206 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,10 @@ | ||
.vscode/launch.json | ||
.vscode/launch.json | ||
sonarlint.json | ||
|
||
\.sonar/ | ||
test-reports/ | ||
coverage/ | ||
*.ospx | ||
tests/fixtures/ПараметрыТестирования.txt | ||
|
||
oscript_modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,193 @@ | ||
Перем Объект_Ид; | ||
Перем Объект_Параметры; | ||
Перем ПараметрыОбъекта; | ||
|
||
Перем Кластер_Агент; | ||
Перем Кластер_Владелец; | ||
Перем Процесс_Владелец; | ||
Перем ИБ_Владелец; | ||
|
||
Перем ПериодОбновления; | ||
Перем МоментАктуальности; | ||
|
||
Перем Лог; | ||
|
||
// Конструктор | ||
// | ||
// Параметры: | ||
// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера | ||
// Кластер - Кластера - ссылка на родительский объект кластера | ||
// Процесс - Процесс - ссылка на родительский объект процесса | ||
// ИБ - ИнформационнаяБаза - ссылка на родительский объект информационной базы | ||
// Соединение - Строка, Соответствие - идентификатор или параметры соединения | ||
// | ||
Процедура ПриСозданииОбъекта(АгентКластера, Кластер, ИБ, Соединение, Процесс = Неопределено) | ||
|
||
Кластер_Агент = АгентКластера; | ||
Кластер_Владелец = Кластер; | ||
ИБ_Владелец = ИБ; | ||
Процесс_Владелец = Процесс; | ||
|
||
ПараметрыОбъекта = Новый ПараметрыОбъекта("connection"); | ||
|
||
Если ТипЗнч(Соединение) = Тип("Соответствие") Тогда | ||
Объект_Ид = Соединение["connection"]; | ||
Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Объект_Параметры, Соединение); | ||
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); | ||
Иначе | ||
Объект_Ид = Соединение; | ||
МоментАктуальности = 0; | ||
КонецЕсли; | ||
|
||
ПериодОбновления = 60000; | ||
|
||
КонецПроцедуры // ПриСозданииОбъекта() | ||
|
||
// Функция возвращает ИД объекта | ||
// | ||
// Возвращаемое значение: | ||
// Строка - идентификатор объекта | ||
// | ||
Функция Ид() Экспорт | ||
|
||
Возврат Объект_Ид; | ||
|
||
КонецФункции // Ид() | ||
|
||
// Процедура получает данные от сервиса администрирования кластера 1С | ||
// и сохраняет в локальных переменных | ||
// | ||
// Параметры: | ||
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) | ||
// - Ложь - данные будут получены если истекло время актуальности | ||
// или данные не были получены ранее | ||
// | ||
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт | ||
|
||
Если Служебный.ТребуетсяОбновление(Объект_Параметры, | ||
МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда | ||
|
||
ОбновитьДанныеОбъекта(); | ||
|
||
КонецЕсли; | ||
|
||
МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); | ||
|
||
КонецПроцедуры // ОбновитьДанные() | ||
|
||
// Процедура получает данные соединения от сервиса администрирования кластера 1С | ||
// и сохраняет в локальных переменных | ||
// | ||
Процедура ОбновитьДанныеОбъекта() Экспорт | ||
|
||
ПараметрыЗапуска = Новый Массив(); | ||
ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения()); | ||
|
||
ПараметрыЗапуска.Добавить("connection"); | ||
ПараметрыЗапуска.Добавить("list"); | ||
|
||
ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид())); | ||
ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации()); | ||
|
||
Если НЕ Процесс_Владелец = Неопределено Тогда | ||
ПараметрыЗапуска.Добавить(СтрШаблон("--process=%1", Процесс_Владелец.Получить("process"))); | ||
КонецЕсли; | ||
|
||
Если НЕ ИБ_Владелец = Неопределено Тогда | ||
ПараметрыЗапуска.Добавить(СтрШаблон("--infobase=%1", ИБ_Владелец.Ид())); | ||
ПараметрыЗапуска.Добавить(СтрШаблон(ИБ_Владелец.СтрокаАвторизации())); | ||
КонецЕсли; | ||
|
||
Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска); | ||
|
||
МассивРезультатов = Кластер_Агент.ВыводКоманды(); | ||
|
||
Если МассивРезультатов.Количество() = 0 Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
Служебный.ЗаполнитьПараметрыОбъекта(ЭтотОбъект, Объект_Параметры, МассивРезультатов[0]); | ||
|
||
КонецПроцедуры // ОбновитьДанныеОбъекта() | ||
|
||
// Функция возвращает коллекцию параметров объекта | ||
// | ||
// Параметры: | ||
// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано | ||
// в качестве ключа возвращаемого соответствия | ||
// | ||
// Возвращаемое значение: | ||
// Соответствие - коллекция параметров объекта, для получения/изменения значений | ||
// | ||
Функция ПараметрыОбъекта(ИмяПоляКлюча = "ИмяПараметра") Экспорт | ||
|
||
Возврат ПараметрыОбъекта.Получить(ИмяПоляКлюча); | ||
|
||
КонецФункции // ПараметрыОбъекта() | ||
|
||
// Функция возвращает значение параметра соединения 1С | ||
// | ||
// Параметры: | ||
// ИмяПоля - Строка - Имя параметра соединения | ||
// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) | ||
// | ||
// Возвращаемое значение: | ||
// Произвольный - значение параметра соединения 1С | ||
// | ||
Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт | ||
|
||
ОбновитьДанные(ОбновитьПринудительно); | ||
|
||
Если НЕ Найти(ВРег("Ид, process"), ВРег(ИмяПоля)) = 0 Тогда | ||
Возврат Объект_Ид; | ||
КонецЕсли; | ||
|
||
ЗначениеПоля = Объект_Параметры.Получить(ИмяПоля); | ||
|
||
Если ЗначениеПоля = Неопределено Тогда | ||
|
||
ОписаниеПараметра = ПараметрыОбъекта("ИмяПоляРАК").Получить(ИмяПоля); | ||
|
||
Если НЕ ОписаниеПараметра = Неопределено Тогда | ||
ЗначениеПоля = Объект_Параметры.Получить(ОписаниеПараметра["ИмяПараметра"]); | ||
КонецЕсли; | ||
КонецЕсли; | ||
|
||
Возврат ЗначениеПоля; | ||
|
||
КонецФункции // Получить() | ||
|
||
// Процедура отключает соединение в кластере 1С | ||
// | ||
Процедура Отключить() Экспорт | ||
|
||
ПараметрыЗапуска = Новый Массив(); | ||
ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения()); | ||
|
||
ПараметрыЗапуска.Добавить("connection"); | ||
ПараметрыЗапуска.Добавить("list"); | ||
|
||
ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид())); | ||
ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации()); | ||
|
||
Если НЕ Процесс_Владелец = Неопределено Тогда | ||
ПараметрыЗапуска.Добавить(СтрШаблон("--process=%1", Процесс_Владелец.Получить("process"))); | ||
КонецЕсли; | ||
|
||
ОтборИБ = Новый Соответствие(); | ||
ОтборИБ.Вставить("infobase", ИБ_Владелец.Ид()); | ||
|
||
СписокИБ = Кластер_Владелец.ИнформационныеБазы().Список(ОтборИБ); | ||
Если НЕ СписокИБ.Количество() = 0 Тогда | ||
ПараметрыЗапуска.Добавить(СтрШаблон(СписокИБ[0].СтрокаАвторизации())); | ||
КонецЕсли; | ||
|
||
Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска); | ||
|
||
Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); | ||
|
||
ОбновитьДанные(Истина); | ||
|
||
КонецПроцедуры // Отключить() | ||
|
||
Лог = Логирование.ПолучитьЛог("ktb.lib.irac"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters