diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml new file mode 100644 index 0000000..335369b --- /dev/null +++ b/.github/workflows/qa.yml @@ -0,0 +1,81 @@ +# MIT License +# Copyright (C) 2020 Tymko Oleg and contributors +# All rights reserved. + +name: Контроль качества +# Любой пуш и pr в проекте но с фильтром по основному проекту +on: [push, pull_request] + +env: + # отключение безопасности установки, от 2020-10-01 + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + +jobs: + build: + if: github.repository == 'arkuznetsov/irac' + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + oscript_version: ['1.4.0'] + + steps: + # Загрузка проекта + - name: Актуализация + uses: actions/checkout@v2 + with: + # Disabling shadow clone is recomended + fetch-depth: 0 + + # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions + - name: Извлечение имени текущей ветки + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + id: extract_branch + + # Установка OneScript конкретной версии + - name: Установка OneScript + uses: otymko/setup-onescript@v1.1 + with: + version: ${{ matrix.oscript_version }} + + # Установка зависимостей пакета + - name: Установка зависимостей + run: | + opm install opm + opm install --dev + + # Запуск тестов и сбор покрытия кода + - name: Тестирование и расчет покрытия кода + run: oscript ./tasks/coverage.os + + - name: Извлечение версии пакета + shell: bash + run: echo "##[set-output name=version;]`cat packagedef | grep ".Версия(" | sed 's|[^"]*"||' | sed -r 's/".+//'`" + id: extract_version + + - name: Установка Sonar-scanner + uses: warchant/setup-sonar-scanner@v1 + + # Анализ проекта в SonarQube (ветка) + - name: Анализ в SonarQube (branch) + if: github.event_name == 'push' + run: sonar-scanner + -Dsonar.login=${{ secrets.SONARQUBE_TOKEN }} + -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} + -Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }} + -Dsonar.projectVersion=${{ steps.extract_version.outputs.version }} + + # Анализ проекта в SonarQube (PR) + # https://docs.sonarqube.org/latest/analysis/pull-request/ + - name: Анализ в SonarQube (pull-request) + if: github.event_name == 'pull_request' + run: sonar-scanner + -Dsonar.login=${{ secrets.SONARQUBE_TOKEN }} + -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} + -Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }} + -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} + -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} + -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} + -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..0d008ab --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,59 @@ +# MIT License +# Copyright (C) 2020 Tymko Oleg and contributors +# All rights reserved. + +name: Подготовка релиза и публикация в хабе +# Только события создания и изменения релиза +on: + release: + types: [published, edited] + +env: + PACKAGE_MASK: irac-*.ospx + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + oscript_version: ['1.4.0'] + + steps: + # Загрузка проекта + - name: Актуализация + uses: actions/checkout@v2 + + # Установка OneScript конкретной версии + - name: Установка OneScript + uses: otymko/setup-onescript@v1.1 + with: + version: ${{ matrix.oscript_version }} + + # Установка зависимостей пакета + - name: Установка зависимостей + run: | + opm install opm + opm install + + - name: Сборка пакета + run: opm build + + - name: Заливка артифактов + uses: actions/upload-artifact@v2 + with: + name: package.zip + path: ./${{ env.PACKAGE_MASK }} + + - name: Заливка в релиз + uses: AButler/upload-release-assets@v1.0 + with: + files: ./${{ env.PACKAGE_MASK }} + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Публикация в hub.oscript.io + shell: bash + run: opm push -f ./${{ env.PACKAGE_MASK }} --token ${{ env.TOKEN }} -c stable + env: + TOKEN: ${{ secrets.OSHUB_TOKEN }} \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index b36d35b..e12cdd0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ pipeline { ]]] withVault([configuration: [timeout: 60], vaultSecrets: secrets ]){ withDockerContainer(args: "--network ${BUILD_TAG}_onec-net", image: 'registry.oskk.1solution.ru/docker-images/onec-oscript:8.3.14.1993-1.3.0') { - sh '''1bdd exec -junit-out tests_bdd.xml ./features ''' + sh '1bdd exec -junit-out tests_bdd.xml ./features ' } } } diff --git a/doc/rac.server.txt b/doc/rac.server.txt index c56ebb2..da3fe67 100644 --- a/doc/rac.server.txt +++ b/doc/rac.server.txt @@ -143,4 +143,7 @@ connections-limit safe-working-processes-memory-limit safe-call-memory-limit + critical-total-memory + temporary-allowed-total-memory + temporary-allowed-total-memory-time-limit cluster-port diff --git a/doc/rac.session.txt b/doc/rac.session.txt index 8365cfb..1dfbb7a 100644 --- a/doc/rac.session.txt +++ b/doc/rac.session.txt @@ -92,6 +92,24 @@ duration-current-dbms duration-last-5min duration-last-5min-dbms + memory-current + memory-last-5min + memory-total + read-current + read-last-5min + read-total + write-current + write-last-5min + write-total + duration-current-service + duration-last-5min-service + duration-all-service + current-service-name + cpu-time-current + cpu-time-last-5min + cpu-time-total + data-separation + client-ip Поля лицензий: session - ID diff --git "a/features/integration/step_definitions/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.os" "b/features/integration/step_definitions/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.os" index cd77e34..da39ad6 100644 --- "a/features/integration/step_definitions/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.os" +++ "b/features/integration/step_definitions/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.os" @@ -3,6 +3,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd +Перем Лог; // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -10,6 +11,7 @@ ВсеШаги = Новый Массив; + ВсеШаги.Добавить("ЯПодключаюсьССервисуАдминистрированияКластераПоАдресу"); ВсеШаги.Добавить("ЯВызываюФункциюСозданияИнформационнойБазыСИменемВКластере"); Возврат ВсеШаги; @@ -30,20 +32,19 @@ КонецПроцедуры -//получаю список информационных баз -Процедура ПолучаюСписокИнформационныхБаз() Экспорт - ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ПолучаюСписокИнформационныхБаз> не реализован", "Не реализовано."); -КонецПроцедуры -//в списке информационных баз существует база с именем "IRAC_TEST" -Процедура ВСпискеИнформационныхБазСуществуетБазаСИменем(Знач ПарамСтрока1) Экспорт - ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ВСпискеИнформационныхБазСуществуетБазаСИменем> не реализован", "Не реализовано."); +//Я подключаюсь с сервису администрирования кластера по адресу "ras" +Процедура ЯПодключаюсьССервисуАдминистрированияКластераПоАдресу(Знач АдресСервераАдминистрирования) Экспорт + + + БДД.СохранитьВКонтекст("АдресСервераАдминистрирования", Новый УправлениеКластером1С(, АдресСервераАдминистрирования)); + КонецПроцедуры //Я вызываю функцию создания информационной базы с именем "IRAC_TEST" в кластере "server" Процедура ЯВызываюФункциюСозданияИнформационнойБазыСИменемВКластере(Знач ИмяБазы, Знач АдресКластера) Экспорт - АгентКластера = Новый УправлениеКластером1С(, АдресКластера); + АгентКластера = БДД.ПолучитьИзКонтекста("АдресСервераАдминистрирования"); Кластеры = АгентКластера.Кластеры(); @@ -61,7 +62,7 @@ ПараметрыИБ.Вставить("БлокировкаРегламентныхЗаданийВключена", Перечисления.СостоянияВыключателя.Выключено); ПараметрыИБ.Вставить("ВыдачаЛицензийСервером" , Перечисления.ПраваДоступа.Разрешено); - ИБ.ОбновитьДанные(Истина); + ИБ.ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КоличествоИБ = ИБ.Количество(); ИБ.Добавить(ИмяБазы, , Истина, ПараметрыИБ); diff --git "a/features/integration/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.feature" "b/features/integration/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.feature" index c3fe827..a3fccc4 100644 --- "a/features/integration/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.feature" +++ "b/features/integration/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\241\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\276\320\274.feature" @@ -6,5 +6,8 @@ Я хочу програмно управлять кластером серверов Чтобы что бы автоматизировать развертывание инфраструктуры 1С +Контекст: + Когда Я подключаюсь с сервису администрирования кластера по адресу "ras" + Сценарий: Создание информационной базы - Когда Я вызываю функцию создания информационной базы с именем "IRAC_TEST1" в кластере "ras" \ No newline at end of file + Когда Я вызываю функцию создания информационной базы с именем "IRAC_TEST1" в кластере "server" diff --git a/lib.config b/lib.config index d1bbcbb..d908d83 100644 --- a/lib.config +++ b/lib.config @@ -1,6 +1,5 @@  - diff --git a/packagedef b/packagedef index eb9c83a..690b710 100644 --- a/packagedef +++ b/packagedef @@ -1,6 +1,6 @@  Описание.Имя("irac") - .Версия("0.14.0") + .Версия("1.0.0") .Автор("Artem Kuznetsov") .АдресАвтора("ArKuznetsov@gmail.com") .Описание("Библиотека администрирования кластера серверов 1С") @@ -15,6 +15,9 @@ .ЗависитОт("v8find") .ЗависитОт("v8runner") .ЗависитОт("1connector") + .РазработкаЗависитОт("1testrunner") + .РазработкаЗависитОт("v8runner") + .РазработкаЗависитОт("moskito") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("lib.config") diff --git a/readme.md b/readme.md index a6f141c..d80af1f 100644 --- a/readme.md +++ b/readme.md @@ -2,10 +2,10 @@ [![GitHub release](https://img.shields.io/github/release/ArKuznetsov/irac.svg?style=flat-square)](https://github.com/ArKuznetsov/irac/releases) [![GitHub license](https://img.shields.io/github/license/ArKuznetsov/irac.svg?style=flat-square)](https://github.com/ArKuznetsov/irac/blob/develop/LICENSE) -[![Build Status](https://travis-ci.org/arkuznetsov/irac.svg?branch=develop)](https://travis-ci.org/arkuznetsov/irac) -[![Quality Gate](https://oskk-sonar.1solution.ru/api/badges/gate?key=irac)](https://oskk-sonar.1solution.ru/dashboard/index/irac) -[![Coverage](https://oskk-sonar.1solution.ru/api/badges/measure?key=irac&metric=coverage)](https://oskk-sonar.1solution.ru/dashboard/index/irac) -[![Tech debt](https://oskk-sonar.1solution.ru/api/badges/measure?key=irac&metric=sqale_debt_ratio)](https://oskk-sonar.1solution.ru/dashboard/index/irac) +[![Build Status](https://img.shields.io/github/workflow/status/ArKuznetsov/irac/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%20%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0)](https://github.com/arkuznetsov/irac/actions/) +[![Quality Gate](https://img.shields.io/sonar/quality_gate/irac?server=https%3A%2F%2Fopen.checkbsl.org&sonarVersion=8.6)](https://open.checkbsl.org/dashboard/index/irac) +[![Coverage](https://img.shields.io/sonar/coverage/irac?server=https%3A%2F%2Fopen.checkbsl.org&sonarVersion=8.6)](https://open.checkbsl.org/dashboard/index/irac) +[![Tech debt](https://img.shields.io/sonar/tech_debt/irac?server=https%3A%2F%2Fopen.checkbsl.org&sonarVersion=8.6)](https://open.checkbsl.org/dashboard/index/irac) ## Назначение @@ -17,7 +17,7 @@ ```bsl #Использовать irac -Админка = Новый АдминистрированиеКластера("localhost", 1545, "8.3"); +Админка = Новый УправлениеКластером1С("localhost", 1545, "8.3"); Кластеры = Админка.Кластеры(); @@ -35,7 +35,7 @@ Сообщить(Сервер.Имя() + " (" + Сервер.АдресСервера() + ":" + Сервер.ПортСервера() + ")"); - Для Каждого ТекАтрибут Из Серверы.ПараметрыОбъекта() Цикл + Для Каждого ТекАтрибут Из Серверы.ПараметрыОбъекта().ОписаниеСвойств() Цикл Сообщить(ТекАтрибут.Ключ + " : " + Сервер.Получить(ТекАтрибут.Значение.Имя)); КонецЦикла; @@ -50,7 +50,7 @@ Сообщить(ТекИБ.Имя() + " (" + ?(ТекИБ.ПолноеОписание(), "Полное", "Сокращенное") + " " + ТекИБ.Описание() + ")"); - Для Каждого ТекАтрибут Из ИБ.ПараметрыОбъекта() Цикл + Для Каждого ТекАтрибут Из ИБ.ПараметрыОбъекта().ОписаниеСвойств() Цикл Сообщить(ТекАтрибут.Ключ + " : " + ТекИБ.Получить(ТекАтрибут.Значение.Имя)); КонецЦикла; @@ -60,7 +60,7 @@ ## Структура основных объектов -АдминистрированиеКластера +УправлениеКластером1С ```txt |-Администраторы @@ -83,12 +83,12 @@ ## Объекты и методы -### АдминистрированиеКластера +### УправлениеКластером1С Основной класс библиотеки. Предоставляет интерфейс управления серверами 1С. ```bsl - АдминистрированиеКластера = Новый АдминистрированиеКластера("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); + УправлениеКластером = Новый УправлениеКластером1С("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); ``` | Параметры конструктора ||| @@ -117,8 +117,8 @@ Вспомогательный объект для выполнения команд. Непосредственно вызывает утилиту RAC. ```bsl - АдминистрированиеКластера = Новый АдминистрированиеКластера("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); - АдминистрированиеКластера.УстановитьИсполнительКоманд(Новый ИсполнительКоманд("8.3")); + УправлениеКластером = Новый УправлениеКластером1С("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); + УправлениеКластером.УстановитьИсполнительКоманд(Новый ИсполнительКоманд("8.3")); ``` | Параметры конструктора ||| @@ -139,24 +139,24 @@ Объект предоставляет доступ к списку кластеров, доступных для администрирования. ```bsl - АдминистрированиеКластера = Новый АдминистрированиеКластера("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); - СписокКластеров = Новый Кластеры(АдминистрированиеКластера); + УправлениеКластером = Новый УправлениеКластером1С("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); + СписокКластеров = Новый Кластеры(УправлениеКластером); ``` ```bsl - АдминистрированиеКластера = Новый АдминистрированиеКластера("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); - СписокКластеров = АдминистрированиеКластера.Кластеры(); + УправлениеКластером = Новый УправлениеКластером1С("localhost", 1545, "8.3.10", "admin", "P@ssw0rd"); + СписокКластеров = УправлениеКластером.Кластеры(); ``` | Параметры конструктора ||| |-|-|-| -| **АгентКластера** |АдминистрированиеКластера|ссылка на родительский объект агент кластера| +| **АгентКластера** |УправлениеКластером1С|ссылка на родительский объект агент кластера| | Методы ||| |-|-|-| -| **ОбновитьДанные(ОбновитьПринудительно)** ||обновляет список кластеров вызывая утилиту RAC| -| **ПараметрыОбъекта(ИмяПоляКлюча)** |Соответствие|список возможных параметров кластера| -| **Список(Отбор, ОбновитьПринудительно)** ||возвращает список кластеров, соответствующих отбору| +| **ОбновитьДанные(РежимОбновления)** ||обновляет список кластеров вызывая утилиту RAC| +| **ПараметрыОбъекта()** |Соответствие|список параметров объекта кластера| +| **Список(Отбор, РежимОбновления)** ||возвращает список кластеров, соответствующих отбору| | **ВыполнитьКоманду(ПараметрыКоманды)** |Массив(Соответствие)|выполняет команду и возвращает код возврата| | **ВыводКоманды(РазобратьВывод)** |Строка/Массив(Соответствие)|возвращает вывод команды| | **КодВозврата()** |Число|возвращает код возврата выполнения команды| diff --git a/src/lib.config b/src/lib.config index 93277e6..176ee9c 100644 --- a/src/lib.config +++ b/src/lib.config @@ -1,6 +1,5 @@  - 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 6642fc2..8276f8e 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" @@ -34,13 +34,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -75,18 +75,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -94,7 +106,9 @@ // // Параметры: // Отбор - Структура - Структура отбора администраторов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -104,11 +118,9 @@ // Возвращаемое значение: // Массив - список администраторов агента кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - АдминистраторыАгента = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат АдминистраторыАгента; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -116,7 +128,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка администраторов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -127,11 +141,9 @@ // Соответствие - список администраторов агента кластеров 1С // <имя поля объекта> - Массив(Соответствие), Соответствие - список администраторов или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - АдминистраторыАгента = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат АдминистраторыАгента; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -153,21 +165,23 @@ // Функция возвращает описание администратора агента кластеров 1С // // Параметры: -// Имя - Строка - Имя администраторов агента -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// КакСоответствие - Булево - Истина - результат будет преобразован в соответствие +// Имя - Строка - Имя администраторов агента +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание администратора агента кластеров 1С // -Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач Имя, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); Отбор.Вставить("name", Имя); - АдминистраторыАгента = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + АдминистраторыАгента = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если АдминистраторыАгента.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(АдминистраторыАгента) Тогда Возврат Неопределено; КонецЕсли; @@ -226,7 +240,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -262,7 +276,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\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 1c63822..c68ce68 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" @@ -37,13 +37,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -79,18 +79,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -98,7 +110,9 @@ // // Параметры: // Отбор - Структура - Структура отбора администраторов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -108,11 +122,9 @@ // Возвращаемое значение: // Массив - список администраторов кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - АдминистраторыКластера = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат АдминистраторыКластера; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -120,7 +132,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка администраторов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -131,11 +145,9 @@ // Соответствие - список администраторов кластеров 1С // <имя поля объекта> - Массив(Соответствие), Соответствие - список администраторов или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - АдминистраторыКластера = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат АдминистраторыКластера; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -158,20 +170,22 @@ // // Параметры: // Имя - Строка - Имя администраторов кластера -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание администратора кластера 1С // -Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач Имя, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); Отбор.Вставить("name", Имя); - АдминистраторыКластера = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + АдминистраторыКластера = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если АдминистраторыКластера.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(АдминистраторыКластера) Тогда Возврат Неопределено; КонецЕсли; @@ -228,7 +242,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -265,6 +279,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\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\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" deleted file mode 100644 index 37f2066..0000000 --- "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\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" +++ /dev/null @@ -1,350 +0,0 @@ -// ---------------------------------------------------------- -// 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/ -// ---------------------------------------------------------- - -Перем Админ_АдресСервера; -Перем Админ_ПортСервера; -Перем Агент_ИсполнительКоманд; -Перем Агент_Администраторы; -Перем Агент_Администратор; -Перем Кластеры_Администраторы; -Перем ВыводКоманды; -Перем Кластеры; - -Перем ПараметрыОбъекта; - -Перем ОбработчикОшибок; - -Перем Лог; - -// Конструктор -// -// Параметры: -// АдресСервера - Строка - имя сервера агента администрирования (RAS) -// ПортСервера - Число - порт сервера агента администрирования (RAS) -// ВерсияИлиПутьКРАК - Строка - маска версии 1С или путь к утилите RAC -// Администратор - Строка - администратор агента сервера 1С -// ПарольАдминистратора - Строка - пароль администратора агента сервера 1С -// -Процедура ПриСозданииОбъекта(АдресСервера - , ПортСервера - , ВерсияИлиПутьКРАК = "8.3" - , Администратор = "" - , ПарольАдминистратора = "") - - Лог = Служебный.Лог(); - - Лог.Предупреждение("[DEPRICATED] Класс ""АдминистрированиеКластера"" устарел, - |используйте класс ""УправлениеКластером1С""!"); - - Админ_АдресСервера = АдресСервера; - Админ_ПортСервера = ПортСервера; - - Агент_ИсполнительКоманд = Новый ИсполнительКоманд(ВерсияИлиПутьКРАК); - - ПараметрыОбъекта = Новый КомандыОбъекта(ЭтотОбъект, Перечисления.РежимыАдминистрирования.Агент); - - Если ЗначениеЗаполнено(Администратор) Тогда - Агент_Администратор = Новый Структура("Администратор, Пароль", Администратор, ПарольАдминистратора); - Иначе - Агент_Администратор = Неопределено; - КонецЕсли; - - Агент_Администраторы = Новый АдминистраторыАгента(ЭтотОбъект); - Кластеры = Новый Кластеры(ЭтотОбъект); - -КонецПроцедуры // ПриСозданииОбъекта() - -// Функция возвращает строку параметров подключения к агенту администрирования (RAS) -// -// Возвращаемое значение: -// Строка - строка параметров подключения к агенту администрирования (RAS) -// -Функция СтрокаПодключения() Экспорт - - Сервер = ""; - Если Не ПустаяСтрока(Админ_АдресСервера) Тогда - Сервер = Админ_АдресСервера; - Если Не ПустаяСтрока(Админ_ПортСервера) Тогда - Сервер = Сервер + ":" + Админ_ПортСервера; - КонецЕсли; - КонецЕсли; - - Возврат Сервер; - -КонецФункции // СтрокаПодключения() - -// Функция возвращает строку параметров авторизации на агенте кластера 1С -// -// Возвращаемое значение: -// Строка - строка параметров авторизации на агенте кластера 1С -// -Функция СтрокаАвторизации() Экспорт - - ПараметрыАвторизации = Служебный.ПараметрыАвторизации(Перечисления.РежимыАдминистрирования.Агенты, - Агент_Администратор); - - Возврат Служебный.СтрокаАвторизации(ПараметрыАвторизации); - -КонецФункции // СтрокаАвторизации() - -// Процедура устанавливает параметры авторизации на агенте кластера 1С -// -// Параметры: -// Администратор - Строка - администратор агента сервера 1С -// Пароль - Строка - пароль администратора агента сервера 1С -// -Процедура УстановитьАдминистратора(Администратор, Пароль) Экспорт - - Агент_Администратор = Новый Структура("Администратор, Пароль", Администратор, Пароль); - -КонецПроцедуры // УстановитьАдминистратора() - -// Процедура добавляет параметры авторизации для указанного кластера -// -// Параметры: -// Кластер_Ид - Строка - идентификатор кластера 1С -// Администратор - Строка - администратор кластера 1С -// Пароль - Строка - пароль администратора кластера 1С -// -Процедура ДобавитьАдминистратораКластера(Кластер_Ид, Администратор, Пароль) Экспорт - - Если НЕ ТипЗнч(Кластеры_Администраторы) = Тип("Соответствие") Тогда - Кластеры_Администраторы = Новый Соответствие(); - КонецЕсли; - - Кластеры_Администраторы.Вставить(Кластер_Ид, Новый Структура("Администратор, Пароль", Администратор, Пароль)); - -КонецПроцедуры // ДобавитьАдминистратораКластера() - -// Функция возвращает параметры авторизации для указанного кластера -// -// Параметры: -// Кластер_Ид - Строка - идентификатор кластера 1С -// -// Возвращаемое значение: -// Структура - параметры администратора -// Администратор - Строка - администратор кластера 1С -// Пароль - Строка - пароль администратора кластера 1С -// -Функция ПолучитьАдминистратораКластера(Кластер_Ид) Экспорт - - Если НЕ ТипЗнч(Кластеры_Администраторы) = Тип("Соответствие") Тогда - Возврат Неопределено; - КонецЕсли; - - Возврат Кластеры_Администраторы.Получить(Кластер_Ид); - -КонецФункции // ПолучитьАдминистратораКластера() - -// Функция возвращает текущий объект-исполнитель команд -// -// Возвращаемое значение: -// ИсполнительКоманд - текущее значение объекта-исполнителя команд -// -Функция ИсполнительКоманд() Экспорт - - Возврат Агент_ИсполнительКоманд; - -КонецФункции // ИсполнительКоманд() - -// Процедура устанавливает объект-исполнитель команд -// -// Параметры: -// НовыйИсполнитель - ИсполнительКоманд - новый объект-исполнитель команд -// -Процедура УстановитьИсполнительКоманд(Знач НовыйИсполнитель = Неопределено) Экспорт - - Агент_ИсполнительКоманд = НовыйИсполнитель; - -КонецПроцедуры // УстановитьИсполнительКоманд() - -// Устанавливает объект-обработчик, который будет вызываться в случае неудачи вызова ИсполнителяКоманд. -// Объект обработчик должен определить метод ОбработатьОшибку с параметрами: -// * ПараметрыКоманды - передадутся параметры вызванной команды -// * АгентАдминистрирования - объект АдминистрированиеКластера у которого вызывалась команда -// * КодВозврата - на входе - полученный код возврата команды. В качестве выходного параметра -// можно присвоить новое значение кода возврата -// -// Параметры: -// НовыйОбработчикОшибок - Произвольный - объект-обработчик -// -Процедура УстановитьОбработчикОшибокКоманд(Знач НовыйОбработчикОшибок) Экспорт - - ОбработчикОшибок = НовыйОбработчикОшибок; - -КонецПроцедуры // УстановитьОбработчикОшибокКоманд() - -// Функция выполняет команду и возвращает код возврата команды -// -// Параметры: -// ПараметрыКоманды - Массив - параметры выполнения команды -// -// Возвращаемое значение: -// Число - Код возврата команды -// -Функция ВыполнитьКоманду(ПараметрыКоманды) Экспорт - - ВыводКоманды = Агент_ИсполнительКоманд.ВыполнитьКоманду(ПараметрыКоманды); - ПолученныйКод = Агент_ИсполнительКоманд.КодВозврата(); - - Если НЕ ПолученныйКод = 0 И НЕ ОбработчикОшибок = Неопределено Тогда - ОбработчикОшибок.ОбработатьОшибку(ПараметрыКоманды, ЭтотОбъект, ПолученныйКод); - КонецЕсли; - - Возврат ПолученныйКод; - -КонецФункции // ВыполнитьКоманду() - -// Функция возвращает текст результата выполнения команды -// -// Параметры: -// РазобратьВывод - Булево - Истина - выполнить преобразование вывода команды в структуру -// Ложь - вернуть текст вывода команды как есть -// -// Возвращаемое значение: -// Структура, Строка - вывод команды -// -Функция ВыводКоманды(РазобратьВывод = Истина) Экспорт - - Если РазобратьВывод Тогда - Возврат Служебный.РазобратьВыводКоманды(ВыводКоманды); - КонецЕсли; - - Возврат ВыводКоманды; - -КонецФункции // ВыводКоманды() - -// Функция возвращает код возврата выполнения команды -// -// Возвращаемое значение: -// Число - код возврата команды -// -Функция КодВозврата() Экспорт - - Возврат Агент_ИсполнительКоманд.КодВозврата(); - -КонецФункции // КодВозврата() - -// Функция возвращает строку описания подключения к серверу администрирования кластера 1С -// -// Возвращаемое значение: -// Строка - описание подключения к серверу администрирования кластера 1С -// -Функция ОписаниеПодключения() Экспорт - - Возврат СокрЛП(Админ_АдресСервера) + ":" + СокрЛП(Админ_ПортСервера) + - " (v." + СокрЛП(Агент_ИсполнительКоманд.ВерсияУтилитыАдминистрирования()) + ")"; - -КонецФункции // ОписаниеПодключения() - -// Функция возвращает адрес сервера RAS -// -// Возвращаемое значение: -// Строка - адрес сервера RAS -// -Функция АдресСервераАдминистрирования() Экспорт - - Возврат Админ_АдресСервера; - -КонецФункции // АдресСервераАдминистрирования() - -// Функция возвращает порт сервера RAS -// -// Возвращаемое значение: -// Строка - порт сервера RAS -// -Функция ПортСервераАдминистрирования() Экспорт - - Возврат Админ_ПортСервера; - -КонецФункции // ПортСервераАдминистрирования() - -// Функция возвращает версию утилиты администрирования RAC -// -// Возвращаемое значение: -// Строка - версия утилиты администрирования RAC -// -Функция ВерсияУтилитыАдминистрирования() Экспорт - - Возврат СокрЛП(Агент_ИсполнительКоманд.ВерсияУтилитыАдминистрирования()); - -КонецФункции // ВерсияУтилитыАдминистрирования() - -// Функция возвращает список администраторов агента кластера 1С -// -// Возвращаемое значение: -// Агент_Администраторы - список администраторов агента кластера 1С -// -Функция Администраторы() Экспорт - - Возврат Агент_Администраторы; - -КонецФункции // Администраторы() - -// Функция возвращает список кластеров 1С -// -// Возвращаемое значение: -// Кластеры - список кластеров 1С -// -Функция Кластеры() Экспорт - - Возврат Кластеры; - -КонецФункции // Кластеры() - -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия -// -// Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений -// -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт - - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); - -КонецФункции // ПараметрыОбъекта() - -// Функция возвращает значение параметра администрирования кластера 1С -// -// Параметры: -// ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) -// -// Возвращаемое значение: -// Произвольный - значение параметра кластера 1С -// -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт - - Если НЕ Найти(ВРЕг("АдресСервераАдминистрирования, ras-host"), ВРег(ИмяПоля)) = 0 Тогда - Возврат АдресСервераАдминистрирования(); - ИначеЕсли НЕ Найти(ВРЕг("ПортСервераАдминистрирования, ras-port"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ПортСервераАдминистрирования(); - ИначеЕсли НЕ Найти(ВРЕг("ВерсияУтилитыАдминистрирования, rac-version"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ВерсияУтилитыАдминистрирования(); - Иначе - ЗначениеПоля = Неопределено; - КонецЕсли; - - Возврат ЗначениеПоля; - -КонецФункции // Получить() - -// Функция возвращает лог библиотеки -// -// Возвращаемое значение: -// Логгер - лог библиотеки -// -Функция Лог() Экспорт - - Возврат Лог; - -КонецФункции // Лог() 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 123b32b..d5e87e2 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" @@ -47,13 +47,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -101,18 +101,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -120,7 +132,9 @@ // // Параметры: // Отбор - Структура - Структура отбора блокировок (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -130,11 +144,9 @@ // Возвращаемое значение: // Массив - список блокировок // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Блокировки = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат Блокировки; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -142,7 +154,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка блокировок, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -152,11 +166,9 @@ // Возвращаемое значение: // Соответствие - список блокировок // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт - - Блокировки = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Возврат Блокировки; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() 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 b8a7fbc..e357437 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" @@ -7,23 +7,25 @@ // Codebase: https://github.com/ArKuznetsov/irac/ // ---------------------------------------------------------- -Перем ИБ_Ид; // infobase -Перем ИБ_Имя; // name -Перем ИБ_Описание; // descr -Перем ИБ_ПолноеОписание; // Истина - получено полное описание; Ложь - сокращенное -Перем ИБ_Сеансы; -Перем ИБ_Соединения; -Перем ИБ_Свойства; +Перем ИБ_Ид; // (infobase) - идентификатор информационной базы +Перем ИБ_Имя; // (name) - имя информационной базы +Перем ИБ_Описание; // (descr) - краткое описание информационной базы +Перем ИБ_ПолноеОписание; // Истина - получено полное описание; Ложь - сокращенное +Перем ИБ_ОшибкаАвторизации; // признак, что при попытке получения полных данных ИБ возникла ошибка авторизации +Перем ИБ_Сеансы; // объект-список сеансов этой информационной базы +Перем ИБ_Соединения; // объект-список соединений этой информационной базы +Перем ИБ_Блокировки; // объект-список блокировок этой информационной базы +Перем ИБ_Свойства; // значения свойств этого объекта-информационной базы -Перем Кластер_Агент; -Перем Кластер_Владелец; +Перем Кластер_Агент; // объект-агент управления кластером +Перем Кластер_Владелец; // объект-кластер, которому принадлежит текущая информационная база -Перем ПараметрыОбъекта; +Перем ПараметрыОбъекта; // параметры этого объекта управления информационной базой -Перем ПериодОбновления; -Перем МоментАктуальности; +Перем ПериодОбновления; // период обновления данных (повторный вызов RAC) +Перем МоментАктуальности; // последний момент времени обновления данных (время последнего вызова RAC) -Перем Лог; +Перем Лог; // логгер // Конструктор // @@ -63,7 +65,7 @@ Кластер_Владелец.ДобавитьАдминистратораИБ(ИБ_Ид, Администратор, ПарольАдминистратора); КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); КонецПроцедуры // ПриСозданииОбъекта() @@ -71,18 +73,28 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// 2 - обновить только основную информацию (вызов RAC) // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(ИБ_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; - ТекОписание = ПолучитьПолноеОписаниеИБ(); + ИБ_ОшибкаАвторизации = Ложь; + + ТекОписание = Неопределено; + + Если НЕ РежимОбновления = Перечисления.РежимыОбновленияДанных.ТолькоОсновные Тогда + Попытка + ТекОписание = ПолучитьПолноеОписаниеИБ(); + Исключение + ТекОписание = Неопределено; + КонецПопытки; + КонецЕсли; Если ТекОписание = Неопределено Тогда ИБ_ПолноеОписание = Ложь; @@ -99,11 +111,30 @@ ИБ_Сеансы = Новый Сеансы(Кластер_Агент, Кластер_Владелец, ЭтотОбъект); ИБ_Соединения = Новый Соединения(Кластер_Агент, Кластер_Владелец, Неопределено, ЭтотОбъект); + ИБ_Блокировки = Новый Блокировки(Кластер_Агент, Кластер_Владелец, ЭтотОбъект); МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); КонецПроцедуры // ОбновитьДанные() +// Функция признак необходимости обновления данных +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// 2 - обновить только основную информацию (вызов RAC) +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(ИБ_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + // Процедура заполняет параметры информационной базы // // Параметры: @@ -118,18 +149,14 @@ КонецПроцедуры // ЗаполнитьПараметрыИБ() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -152,18 +179,21 @@ КодВозврата = ПараметрыОбъекта.ВыполнитьКоманду("ПолноеОписание"); Если НЕ КодВозврата = 0 Тогда - Если Найти(Кластер_Агент.ВыводКоманды(Ложь), "Недостаточно прав пользователя") = 0 Тогда - ВызватьИсключение Кластер_Агент.ВыводКоманды(Ложь); + ВыводКоманды = Кластер_Агент.ВыводКоманды(Ложь); + Если Найти(ВыводКоманды, "Недостаточно прав пользователя") = 0 + И Найти(ВыводКоманды, "Превышено допустимое количество ошибок при вводе имени и пароля") = 0 Тогда + ВызватьИсключение ВыводКоманды; Иначе + ИБ_ОшибкаАвторизации = Истина; ВызватьИсключение СтрШаблон("Ошибка получения полного описания информационной базы ""%1"": %2", Имя(), - Кластер_Агент.ВыводКоманды(Ложь)); + ВыводКоманды); КонецЕсли; КонецЕсли; МассивРезультатов = Кластер_Агент.ВыводКоманды(); - Если МассивРезультатов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда Возврат Неопределено; КонецЕсли; @@ -196,7 +226,7 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); - Если МассивРезультатов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда Возврат Неопределено; КонецЕсли; @@ -212,7 +242,7 @@ Функция ПараметрыАвторизации() Экспорт Возврат Служебный.ПараметрыАвторизации(Перечисления.РежимыАдминистрирования.ИнформационныеБазы, - Кластер_Владелец.ПолучитьАдминистратораИБ(Ид())); + Кластер_Агент.ПолучитьАдминистратораИБ(Ид())); КонецФункции // ПараметрыАвторизации() @@ -235,7 +265,7 @@ // Процедура УстановитьАдминистратора(Администратор, Пароль) Экспорт - Кластер_Владелец.ДобавитьАдминистратораИБ(Ид(), Администратор, Пароль); + Кластер_Агент.ДобавитьАдминистратораИБ(Ид(), Администратор, Пароль); КонецПроцедуры // УстановитьАдминистратора() @@ -257,10 +287,6 @@ // Функция Имя() Экспорт - Если Служебный.ТребуетсяОбновление(ИБ_Имя, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); - КонецЕсли; - Возврат ИБ_Имя; КонецФункции // Имя() @@ -272,10 +298,6 @@ // Функция Описание() Экспорт - Если Служебный.ТребуетсяОбновление(ИБ_Описание, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); - КонецЕсли; - Возврат ИБ_Описание; КонецФункции // Описание() @@ -287,14 +309,40 @@ // Функция ПолноеОписание() Экспорт - Если Служебный.ТребуетсяОбновление(ИБ_ПолноеОписание, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); - КонецЕсли; - - Возврат ИБ_ПолноеОписание; + Возврат (ИБ_ПолноеОписание = Истина); КонецФункции // ПолноеОписание() +// Функция возвращает признак ошибки авторизации в ИБ при предыдущей попытке получения полных параметров +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// 2 - обновить только основную информацию (вызов RAC) +// +// Возвращаемое значение: +// Булево - Истина - при предыдущей попытке получения полных параметров ИБ возникла ошибка авторизации +// +Функция ОшибкаАвторизации(РежимОбновления = 0) Экспорт + + ОбновитьДанные(РежимОбновления); + + Возврат (ИБ_ОшибкаАвторизации = Истина); + +КонецФункции // ОшибкаАвторизации() + +// Функция возвращает признак ошибки авторизации в ИБ при предыдущей попытке получения полных параметров +// +// Параметры: +// НовоеЗначение - Булево - новое значение флага ошибки авторизации в ИБ +// +Процедура УстановитьОшибкуАвторизации(НовоеЗначение) Экспорт + + ИБ_ОшибкаАвторизации = НовоеЗначение; + +КонецПроцедуры // УстановитьОшибкуАвторизации() + // Функция возвращает сеансы информационной базы 1С // // Возвращаемое значение: @@ -303,13 +351,13 @@ Функция Сеансы() Экспорт Если Служебный.ТребуетсяОбновление(ИБ_Сеансы, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат ИБ_Сеансы; КонецФункции // Сеансы() - + // Функция возвращает соединения информационной базы 1С // // Возвращаемое значение: @@ -318,51 +366,76 @@ Функция Соединения() Экспорт Если Служебный.ТребуетсяОбновление(ИБ_Соединения, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат ИБ_Соединения; КонецФункции // Соединения() + +// Функция возвращает блокировки информационной базы 1С +// +// Возвращаемое значение: +// Блокировки - блокировки информационной базы 1С +// +Функция Блокировки() Экспорт + Если Служебный.ТребуетсяОбновление(ИБ_Блокировки, МоментАктуальности, ПериодОбновления) Тогда + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); + КонецЕсли; + + Возврат ИБ_Блокировки; + +КонецФункции // Блокировки() + // Функция возвращает значение параметра информационной базы 1С // // Параметры: // ИмяПоля - Строка - Имя параметра информационной базы -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// 2 - обновить только основную информацию (вызов RAC) // // Возвращаемое значение: // Произвольный - значение параметра кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); ЗначениеПоля = Неопределено; - Если НЕ Найти(ВРЕг("Ид, infobase"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ИБ_Ид; - ИначеЕсли НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ИБ_Имя; - ИначеЕсли НЕ Найти(ВРЕг("Описание, descr"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ИБ_Описание; - ИначеЕсли НЕ Найти(ВРЕг("ПолноеОписание"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ИБ_ПолноеОписание; + Если НЕ Найти("ИД, INFOBASE", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ИБ_Ид; + ИначеЕсли НЕ Найти("ИМЯ, NAME", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ИБ_Имя; + ИначеЕсли НЕ Найти("ОПИСАНИЕ, DESCK", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ИБ_Описание; + ИначеЕсли НЕ Найти("ПОЛНОЕОПИСАНИЕ", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ИБ_ПолноеОписание; + ИначеЕсли НЕ Найти("СЕАНСЫ, SESSIONS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ИБ_Сеансы; + ИначеЕсли НЕ Найти("СОЕДИНЕНИЯ, CONNECTIONS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ИБ_Соединения; + ИначеЕсли НЕ Найти("БЛОКИРОВКИ, LOCKS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ИБ_Блокировки; Иначе ЗначениеПоля = ИБ_Свойства.Получить(ИмяПоля); КонецЕсли; Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = ИБ_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; - + КонецФункции // Получить() // Процедура изменяет параметры информационной базы @@ -400,7 +473,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 d900227..6636ce5 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" @@ -37,13 +37,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -75,18 +75,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -94,7 +106,9 @@ // // Параметры: // Отбор - Структура - Структура отбора информационных баз (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -104,11 +118,9 @@ // Возвращаемое значение: // Массив - список информационных баз // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокИБ = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокИБ; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -116,7 +128,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка информационных баз, разделенные "," -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -128,11 +142,9 @@ // <имя поля объекта> - Массив(Соответствие), - список информационных баз // Соответствие или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокИБ = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокИБ; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -154,21 +166,28 @@ // Функция возвращает описание информационной базы 1С // // Параметры: -// Имя - Строка - Имя информационной базы 1С -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// ИмяИлиИд - Строка - Имя или идентификатор информационной базы 1С +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание информационной базы 1С // -Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач ИмяИлиИд, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); - Отбор.Вставить("name", Имя); - СписокИБ = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Если Служебный.ЭтоGUID(ИмяИлиИд) Тогда + Отбор.Вставить("infobase", ИмяИлиИд); + Иначе + Отбор.Вставить("name", ИмяИлиИд); + КонецЕсли; + + СписокИБ = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если СписокИБ.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(СписокИБ) Тогда Возврат Неопределено; КонецЕсли; @@ -215,7 +234,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -236,6 +255,6 @@ ИБ.Удалить(ДействияСБазойСУБД); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" index f961cf1..fbf068d 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -193,18 +193,6 @@ Приложение = Служебный.ОбернутьВКавычки(ПутьКУтилитеАдминистрирования()); - СтрокаДляЛога = ""; - - Для Каждого Параметр Из ПараметрыКоманды Цикл - Если Найти(Параметр, "-pwd") = 0 Тогда - СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; - КонецЕсли; - КонецЦикла; - - КодВозврата = 0; - - Лог.Отладка("%1 %2", Приложение, СтрокаДляЛога); - Команда = Новый Команда; Команда.УстановитьКоманду(Приложение); @@ -238,22 +226,20 @@ // Функция ВыполнитьКомандуУдаленно(Знач ПараметрыКоманды) - СтрокаКоманды = ""; - Для Каждого ТекПараметр Из ПараметрыКоманды Цикл - Если ЗначениеЗаполнено(СтрокаКоманды) Тогда - СтрокаКоманды = СтрокаКоманды + " "; - КонецЕсли; - СтрокаКоманды = СтрокаКоманды + ТекПараметр; - КонецЦикла; - Параметры = Новый Структура(); Параметры.Вставить("version", ВерсияУтилитыАдминистрирования()); - Параметры.Вставить("cmd", СтрокаКоманды); + Параметры.Вставить("cmd", ПараметрыКоманды); + + Запись = Новый ЗаписьJSON(); + Запись.УстановитьСтроку(); - Ответ = КоннекторHTTP.Get(ПутьКУтилитеАдминистрирования, Параметры).Json(); + ЗаписатьJSON(Запись, Параметры); + Данные = ПолучитьДвоичныеДанныеИзСтроки(Запись.Закрыть()); + + Ответ = КоннекторHTTP.Post(СтрШаблон("%1/command/run", ПутьКУтилитеАдминистрирования), Данные).Json(); - КодВозврата = Ответ["КодВозврата"]; - ВыводКоманды = Ответ["ВыводКоманды"]; + КодВозврата = Ответ["returnCode"]; + ВыводКоманды = Ответ["output"]; Возврат ВыводКоманды(); @@ -275,8 +261,8 @@ // Функция СпособПодключенияВАдресе(ВерсияИлиПутьКУтилитеАдминистрирования) - Если ВРег(Лев(ВерсияИлиПутьКУтилитеАдминистрирования, "5")) = ВРег("http:") - ИЛИ ВРег(Лев(ВерсияИлиПутьКУтилитеАдминистрирования, "6")) = ВРег("https:") Тогда + Если ВРег(Лев(ВерсияИлиПутьКУтилитеАдминистрирования, "5")) = "HTTP:" + ИЛИ ВРег(Лев(ВерсияИлиПутьКУтилитеАдминистрирования, "6")) = "HTTPS:" Тогда Возврат Перечисления.СпособыПодключения.Удаленно; Иначе Возврат Перечисления.СпособыПодключения.Локально; @@ -320,12 +306,9 @@ // Функция ПолучитьВерсиюУтилитыАдминистрированияУдаленно(Знач Путь) - Параметры = Новый Структура(); - Параметры.Вставить("cmd", "--version"); - - Ответ = КоннекторHTTP.Get(Путь, Параметры).Json(); + Ответ = КоннекторHTTP.Get(СтрШаблон("%1/command/version", Путь)).Json(); - Возврат Ответ["Версия"]; + Возврат СокрЛП(Ответ["output"]); КонецФункции // ПолучитьВерсиюУтилитыАдминистрированияУдаленно() 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 8071ecd..36825da 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" @@ -7,33 +7,32 @@ // Codebase: https://github.com/ArKuznetsov/irac/ // ---------------------------------------------------------- -Перем Кластер_Ид; // cluster -Перем Кластер_Имя; // name -Перем Кластер_АдресСервера; // host -Перем Кластер_ПортСервера; // port -Перем Кластер_Свойства; - -Перем Кластер_Агент; -Перем Кластер_Администраторы; -Перем ИБ_Администраторы; -Перем Кластер_Серверы; -Перем Кластер_Менеджеры; -Перем Кластер_Процессы; -Перем Кластер_Сервисы; -Перем Кластер_Сеансы; -Перем Кластер_Соединения; -Перем Кластер_Блокировки; -Перем Кластер_ИБ; -Перем Кластер_Профили; -Перем Кластер_Счетчики; -Перем Кластер_Ограничения; - -Перем ПараметрыОбъекта; - -Перем ПериодОбновления; -Перем МоментАктуальности; - -Перем Лог; +Перем Кластер_Ид; // (cluster) - идентификатор кластера +Перем Кластер_Имя; // (name) - имя кластера +Перем Кластер_АдресСервера; // (host) - адрес сервера кластера +Перем Кластер_ПортСервера; // (port) - порт сервера кластера +Перем Кластер_Свойства; // значения свойств этого объекта-кластера + +Перем Кластер_Агент; // объект-агент управления кластером +Перем Кластер_Администраторы; // объект-список администраторов кластера +Перем Кластер_Серверы; // объект-список серверов кластера +Перем Кластер_Менеджеры; // объект-список менеджеров кластера +Перем Кластер_Процессы; // объект-список рабочих процессов кластера +Перем Кластер_Сервисы; // объект-список сервисов кластера +Перем Кластер_Сеансы; // объект-список сеансов кластера +Перем Кластер_Соединения; // объект-список соединений кластера +Перем Кластер_Блокировки; // объект-список блокировок кластера +Перем Кластер_ИБ; // объект-список информационных баз кластера +Перем Кластер_Профили; // объект-список профилей кластера +Перем Кластер_Счетчики; // объект-список счетчиков потребления ресурсов кластера +Перем Кластер_Ограничения; // объект-список ограничений потребления ресурсов кластера + +Перем ПараметрыОбъекта; // параметры этого объекта управления кластером + +Перем ПериодОбновления; // период обновления данных (повторный вызов RAC) +Перем МоментАктуальности; // последний момент времени обновления данных (время последнего вызова RAC) + +Перем Лог; // логгер // Конструктор // @@ -68,7 +67,7 @@ Кластер_Агент.ДобавитьАдминистратораКластера(Кластер_Ид, Администратор, ПарольАдминистратора); КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); Кластер_Администраторы = Новый АдминистраторыКластера(Кластер_Агент, ЭтотОбъект); Кластер_Серверы = Новый СерверыКластера(Кластер_Агент, ЭтотОбъект); @@ -83,22 +82,19 @@ Кластер_Счетчики = Новый СчетчикиРесурсов(Кластер_Агент, ЭтотОбъект); Кластер_Ограничения = Новый ОграниченияРесурсов(Кластер_Агент, ЭтотОбъект); - Кластер_Свойства = Неопределено; - КонецПроцедуры // ПриСозданииОбъекта() // Процедура получает данные от сервиса администрирования кластера 1С // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Кластер_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -112,7 +108,15 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); - Если МассивРезультатов.Количество() = 0 Тогда + Если НЕ Кластер_Агент.КодВозврата() = 0 Тогда + ТекстОшибки = СтрШаблон("Ошибка получения данных кластера ""%1"":", Кластер_Агент.СтрокаПодключения()); + Для Каждого ТекРезультат Из МассивРезультатов[0] Цикл + ТекстОшибки = СтрШаблон("%1%2%3", ТекстОшибки, Символы.ПС, ТекРезультат.Ключ); + КонецЦикла; + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда Возврат; КонецЕсли; @@ -122,6 +126,23 @@ КонецПроцедуры // ОбновитьДанные() +// Функция признак необходимости обновления данных +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Кластер_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + // Процедура заполняет параметры кластера 1С // // Параметры: @@ -130,25 +151,21 @@ Процедура ЗаполнитьПараметрыКластера(ДанныеЗаполнения) Кластер_АдресСервера = ДанныеЗаполнения.Получить("host"); - Кластер_ПортСервера = ДанныеЗаполнения.Получить("port"); + Кластер_ПортСервера = Число(ДанныеЗаполнения.Получить("port")); Кластер_Имя = ДанныеЗаполнения.Получить("name"); Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Кластер_Свойства, ДанныеЗаполнения); КонецПроцедуры // ЗаполнитьПараметрыКластера() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -187,43 +204,6 @@ КонецПроцедуры // УстановитьАдминистратора() -// Процедура добавляет параметры авторизации для указанной информационной базы -// -// Параметры: -// ИБ_Ид - Строка - идентификатор информационной базы в кластере -// Администратор - Строка - администратор информационной базы -// Пароль - Строка - пароль администратора информационной базы -// -Процедура ДобавитьАдминистратораИБ(ИБ_Ид, Администратор, Пароль) Экспорт - - Если НЕ ТипЗнч(ИБ_Администраторы) = Тип("Соответствие") Тогда - ИБ_Администраторы = Новый Соответствие(); - КонецЕсли; - - ИБ_Администраторы.Вставить(ИБ_Ид, Новый Структура("Администратор, Пароль", Администратор, Пароль)); - -КонецПроцедуры // ДобавитьАдминистратораИБ() - -// Функция возвращает параметры авторизации для указанной информационной базы -// -// Параметры: -// ИБ_Ид - Строка - идентификатор информационной базы в кластере -// -// Возвращаемое значение: -// Структура - параметры администратора -// Администратор - Строка - администратор информационной базы -// Пароль - Строка - пароль администратора информационной базы -// -Функция ПолучитьАдминистратораИБ(ИБ_Ид) Экспорт - - Если НЕ ТипЗнч(ИБ_Администраторы) = Тип("Соответствие") Тогда - Возврат Неопределено; - КонецЕсли; - - Возврат ИБ_Администраторы.Получить(ИБ_Ид); - -КонецФункции // ПолучитьАдминистратораИБ() - // Функция возвращает идентификатор кластера 1С // // Возвращаемое значение: @@ -243,7 +223,7 @@ Функция Имя() Экспорт Если Служебный.ТребуетсяОбновление(Кластер_Имя, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Кластер_Имя; @@ -258,7 +238,7 @@ Функция АдресСервера() Экспорт Если Служебный.ТребуетсяОбновление(Кластер_АдресСервера, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Кластер_АдресСервера; @@ -273,7 +253,7 @@ Функция ПортСервера() Экспорт Если Служебный.ТребуетсяОбновление(Кластер_ПортСервера, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Кластер_ПортСервера; @@ -413,47 +393,72 @@ КонецФункции // ОграниченияРесурсов() // Функция возвращает значение параметра кластера 1С -// +// // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); ЗначениеПоля = Неопределено; - Если НЕ Найти(ВРЕг("Ид, cluster"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Кластер_Ид; - ИначеЕсли НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Кластер_Имя; - ИначеЕсли НЕ Найти(ВРЕг("АдресСервера, host"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Кластер_АдресСервера; - ИначеЕсли НЕ Найти(ВРЕг("ПортСервера, port"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Кластер_ПортСервера; + Если НЕ Найти("ИД, CLUSTER", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Ид; + ИначеЕсли НЕ Найти("ИМЯ, NAME", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Имя; + ИначеЕсли НЕ Найти("АДРЕССЕРВЕРА, HOST", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_АдресСервера; + ИначеЕсли НЕ Найти("ПОРТСЕРВЕРА, PORT", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_ПортСервера; + ИначеЕсли НЕ Найти("АДМИНИСТРАТОРЫ, ADMINISTRATORS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Администраторы; + ИначеЕсли НЕ Найти("СЕРВЕРЫ, SERVERS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Серверы; + ИначеЕсли НЕ Найти("МЕНЕДЖЕРЫ, MANAGERS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Менеджеры; + ИначеЕсли НЕ Найти("ПРОЦЕССЫ, PROCESSES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Процессы; + ИначеЕсли НЕ Найти("СЕАНСЫ, SESSIONS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Сеансы; + ИначеЕсли НЕ Найти("СОЕДИНЕНИЯ, CONNECTIONS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Соединения; + ИначеЕсли НЕ Найти("БЛОКИРОВКИ, LOCKS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Блокировки; + ИначеЕсли НЕ Найти("ИБ, ИНФОРМАЦИОННЫЕБАЗЫ, IB, INFOBASES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_ИБ; + ИначеЕсли НЕ Найти("ПРОФИЛИ, PROFILES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Профили; + ИначеЕсли НЕ Найти("СЧЕТЧИКИ, COUNTERS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Счетчики; + ИначеЕсли НЕ Найти("ОГРАНИЧЕНИЯ, LIMITS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Кластер_Ограничения; Иначе ЗначениеПоля = Кластер_Свойства.Получить(ИмяПоля); КонецЕсли; Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Кластер_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; - -КонецФункции // Получить() +КонецФункции // Получить() + // Процедура изменяет параметры кластера -// +// // Параметры: // Имя - Строка - новое имя кластера // ПараметрыКластера - Структура - новые параметры кластера 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 2f002c2..0132bfe 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" @@ -16,7 +16,7 @@ // Конструктор // // Параметры: -// АгентКластера - АдминистрированиеКластера - ссылка на родительский объект агента кластера +// АгентКластера - УправлениеКластером1С - ссылка на родительский объект агента кластера // Процедура ПриСозданииОбъекта(АгентКластера) @@ -34,13 +34,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -53,6 +53,18 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); + Если НЕ Кластер_Агент.КодВозврата() = 0 Тогда + ТекстОшибки = СтрШаблон("Ошибка получения данных кластера ""%1"":", Кластер_Агент.СтрокаПодключения()); + Для Каждого ТекРезультат Из МассивРезультатов[0] Цикл + ТекстОшибки = СтрШаблон("%1%2%3", ТекстОшибки, Символы.ПС, ТекРезультат.Ключ); + КонецЦикла; + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда + Возврат; + КонецЕсли; + МассивКластеров = Новый Массив(); Для Каждого ТекОписание Из МассивРезультатов Цикл МассивКластеров.Добавить(Новый Кластер(Кластер_Агент, ТекОписание)); @@ -64,18 +76,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -83,7 +107,9 @@ // // Параметры: // Отбор - Структура - Структура отбора кластеров (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -93,11 +119,9 @@ // Возвращаемое значение: // Массив - список кластеров 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокКластеров = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокКластеров; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -105,7 +129,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка кластеров, разделенные "," -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -116,11 +142,9 @@ // Соответствие - список кластеров 1С // <имя поля объекта> - Массив(Соответствие), Соответствие - список кластеров или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокКластеров = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокКластеров; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -143,34 +167,35 @@ // // Параметры: // Кластер - Строка - Адрес кластера в виде <сервер>:<порт> -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// или идентификатор кластера +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание кластера 1С // -Функция Получить(Знач Кластер, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт - - АдресКластера = СтрРазделить(Кластер, ":"); - - Если АдресКластера.Количество() = 1 Тогда - ПортКластера = "1541"; - АдресКластера.Добавить(ПортКластера); - КонецЕсли; +Функция Получить(Знач Кластер, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); - Сообщить("АдресКластера[0] " + АдресКластера[0]); - Сообщить("АдресКластера[1] " + АдресКластера[1]); - - Отбор.Вставить("host", АдресКластера[0]); - Отбор.Вставить("port", АдресКластера[1]); - - Список = Элементы.Список(); + Если Служебный.ЭтоGUID(Кластер) Тогда + Отбор.Вставить("cluster", Кластер); + Иначе + АдресКластера = СтрРазделить(Кластер, ":", Ложь); + Отбор.Вставить("host", СокрЛП(АдресКластера[0])); + + Если АдресКластера.Количество() = 1 Тогда + Отбор.Вставить("port", 1541); + Иначе + Отбор.Вставить("port", Число(СокрЛП(АдресКластера[1]))); + КонецЕсли; + КонецЕсли; - СписокКластеров = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + СписокКластеров = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если СписокКластеров.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(СписокКластеров) Тогда Возврат Неопределено; КонецЕсли; @@ -209,7 +234,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -231,6 +256,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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 18b7657..1c3e173 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" @@ -90,8 +90,8 @@ Возврат СтруктураОписаний; КонецЕсли; - Для Каждого ТекОписание Из ОписаниеСвойств Цикл - СтруктураОписаний.Вставить(ТекОписание[ИмяПоляКлюча], ТекОписание); + Для й = 0 По ОписаниеСвойств.ВГраница() Цикл + СтруктураОписаний.Вставить(ОписаниеСвойств[й][ИмяПоляКлюча], ОписаниеСвойств[й]); КонецЦикла; Возврат СтруктураОписаний; @@ -134,7 +134,7 @@ КонецЕсли; Если Команда.Кластер Тогда - ДобавитьПараметрПоШаблону("--cluster=%1", "ИдентификаторКластера", Истина); + ДобавитьИменованныйПараметр("cluster", "ИдентификаторКластера", Истина); ДобавитьПараметрыАвторизации(Перечисления.РежимыАдминистрирования.Кластеры, "ПараметрыАвторизацииКластера", ЗначенияПараметров["ИдентификаторКластера"]); @@ -160,9 +160,13 @@ Для Каждого ТекЭлемент Из КэшПараметровАвторизации Цикл Для й = 0 По ПараметрыЗапуска.ВГраница() Цикл - ПараметрыЗапуска[й] = СтрЗаменить(ПараметрыЗапуска[й], - ТекЭлемент.Ключ, - Служебный.ОбернутьВКавычки(ТекЭлемент.Значение)); + Если НЕ (ТипЗнч(ПараметрыЗапуска[й]) = Тип("Структура") + И ПараметрыЗапуска[й].Свойство("Значение")) Тогда + Продолжить; + КонецЕсли; + ПараметрыЗапуска[й].Значение = СтрЗаменить(ПараметрыЗапуска[й].Значение, + ТекЭлемент.Ключ, + Служебный.ОбернутьВКавычки(ТекЭлемент.Значение)); КонецЦикла; КонецЦикла; @@ -170,6 +174,42 @@ КонецФункции // ПараметрыКоманды() +// Функция возвращает строку параметров запуска команды с заменой значений "приватных" параметров +// на символы подстановки и соответствие параметров подстановки и значений +// +// Параметры: +// ИмяКоманды - Строка - имя команды для которой выпоняется заполнение +// Подстановки - Соответствие - (Возвр.) соответствие символов подстановки и значений +// +// Возвращаемое значение: +// Строка - строка параметров запуска команды +// +Функция ПараметрыКомандыСтрокойСПодстановками(ИмяКоманды, Подстановки = Неопределено) Экспорт + + ПараметрыКоманды = ПараметрыКоманды(ИмяКоманды); + + Возврат Служебный.ПараметрыКомандыВСтрокуСПодстановками(ПараметрыКоманды, Подстановки); + +КонецФункции // ПараметрыКомандыСтрокойСПодстановками() + +// Функция возвращает строку параметров запуска команды +// +// Параметры: +// ИмяКоманды - Строка - имя команды для которой выпоняется заполнение +// ДляЛога - Булево - Истина - приватные значения параметров (пользватель / пароль и т.п.) +// будут скрыты символами "******" +// +// Возвращаемое значение: +// Строка - строка параметров запуска команды +// +Функция ПараметрыКомандыСтрокой(ИмяКоманды, ДляЛога = Ложь) Экспорт + + ПараметрыКоманды = ПараметрыКоманды(ИмяКоманды); + + Возврат Служебный.ПараметрыКомандыВСтроку(ПараметрыКоманды, ДляЛога); + +КонецФункции // ПараметрыКомандыСтрокой() + Функция ВыполнитьКоманду(Знач ИмяКоманды) Экспорт Возврат Кластер_Агент.ВыполнитьКоманду(ПараметрыКоманды(ИмяКоманды)); @@ -177,15 +217,15 @@ КонецФункции // ВыполнитьКоманду() // Функция возвращает описание текущего типа объекта -// +// // Возвращаемое значение: // Структура - описание типа объектов // *Имя - Строка - имя типа объектов // *РежимАдминистрирования - Строка - режим утилиты RAC (agent, cluster, infobase и т.п.) -// *Владелец - Струткура - описание типа объекта, владельца +// *Владелец - Структура - описание типа объекта, владельца // (например: для типа "Кластер.Администратор" // будет содержать описание типа "Кластер") -// +// Функция ТипОбъекта() Экспорт Возврат ТипОбъекта; @@ -216,8 +256,8 @@ Если Параметр.Свойство("Авторизация") Тогда ДобавитьПараметрыАвторизации(Параметр.Авторизация, Параметр.Параметр, ЗначенияПараметров[Параметр.ПараметрИд]); - ИначеЕсли Параметр.Свойство("Шаблон") Тогда - ДобавитьПараметрПоШаблону(Параметр.Шаблон, Параметр.Параметр, Обязательный); + ИначеЕсли Параметр.Свойство("ПараметрРАК") Тогда + ДобавитьИменованныйПараметр(Параметр.ПараметрРАК, Параметр.Параметр, Обязательный); ИначеЕсли Параметр.Свойство("Флаг") Тогда ДобавитьПараметрФлаг(Параметр.Флаг, Параметр.Параметр); Иначе @@ -257,12 +297,12 @@ Для Каждого ТекЭлемент Из ВсеПараметры Цикл - Если ВключаяПараметры.Количество() > 0 + Если ЗначениеЗаполнено(ВключаяПараметры) И ВключаяПараметры.Найти(ТекЭлемент.Ключ) = Неопределено Тогда Продолжить; КонецЕсли; - Если ИсключаяПараметры.Количество() > 0 + Если ЗначениеЗаполнено(ИсключаяПараметры) И НЕ ИсключаяПараметры.Найти(ТекЭлемент.Ключ) = Неопределено Тогда Продолжить; КонецЕсли; @@ -276,7 +316,7 @@ ЗначенияПараметров.Вставить(ТекЭлемент.Ключ, ТекЭлемент.Значение.ПоУмолчанию); КонецЕсли; - ДобавитьПараметрПоШаблону(ТекЭлемент.Значение.ПараметрКоманды + "=%1", ТекЭлемент.Ключ); + ДобавитьИменованныйПараметр(ТекЭлемент.Значение.ИмяРАК, ТекЭлемент.Ключ); КонецЦикла; @@ -297,7 +337,7 @@ КонецЕсли; Если УстановитьФлаг Тогда - ПараметрыЗапуска.Добавить(Флаг); + ПараметрыЗапуска.Добавить(Новый Структура("Параметр, Флаг", Флаг, Истина)); КонецЕсли; КонецПроцедуры // ДобавитьПараметрФлаг() @@ -379,16 +419,18 @@ КэшПараметровАвторизации.Вставить(СтрШаблон("%1_user", Ид), ПараметрыАвторизации.Администратор); - ПараметрыЗапуска.Добавить(СтрШаблон("--%1-user=%2", - ПараметрыАвторизации.Тип, - СтрШаблон("%1_user", Ид))); + ПараметрыЗапуска.Добавить(Новый Структура("Параметр, Значение, Приватный", + СтрШаблон("%1-user", ПараметрыАвторизации.Тип), + СтрШаблон("%1_user", Ид), + Истина)); Если НЕ ПустаяСтрока(ПараметрыАвторизации.Пароль) Тогда КэшПараметровАвторизации.Вставить(СтрШаблон("%1_pwd", Ид), ПараметрыАвторизации.Пароль); - ПараметрыЗапуска.Добавить(СтрШаблон("--%1-pwd=%2", - ПараметрыАвторизации.Тип, - СтрШаблон("%1_pwd", Ид))); + ПараметрыЗапуска.Добавить(Новый Структура("Параметр, Значение, Приватный", + СтрШаблон("%1-pwd", ПараметрыАвторизации.Тип), + СтрШаблон("%1_pwd", Ид), + Истина)); КонецЕсли; КонецПроцедуры // ДобавитьПараметрыАвторизации() @@ -397,26 +439,26 @@ // и добавляет результат в массив параметров запуска команды // // Параметры: -// ШаблонПараметра - Строка - шаблон, в который будет выполнена подстановка -// Имя - Строка - имя параметра в структуре значений параметров +// ПараметрРАК - Строка - имя добавляемого параметра командной строки RAC +// ИмяЗначения - Строка - имя значения параметра в структуре значений параметров // Обязательный - Булево - Истина - если значение параметра не найдено // или не заполнено будет выдано исключение // -Процедура ДобавитьПараметрПоШаблону(Знач ШаблонПараметра, Знач Имя, Знач Обязательный = Ложь) +Процедура ДобавитьИменованныйПараметр(Знач ПараметрРАК, Знач ИмяЗначения, Знач Обязательный = Ложь) - ЗначениеПараметра = ЗначенияПараметров.Получить(Имя); + ЗначениеПараметра = ЗначенияПараметров.Получить(ИмяЗначения); Если НЕ ЗначениеЗаполнено(ЗначениеПараметра) Тогда Если Обязательный Тогда - ВызватьИсключение СтрШаблон("Не заполнен обязательный параметр %1!", Имя); + ВызватьИсключение СтрШаблон("Не заполнен обязательный параметр %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" index cde78f4..1c27eb5 100644 --- "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" @@ -47,13 +47,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -100,18 +100,30 @@ КонецПроцедуры // ОбновитьДанныеЛицензий() -// Функция возвращает коллекцию параметров объекта -// +// Функция признак необходимости обновления данных +// // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -139,7 +151,9 @@ // // Параметры: // Отбор - Структура - Структура отбора сеансов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -149,11 +163,9 @@ // Возвращаемое значение: // Массив - список сеансов // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Лицензии = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат Лицензии; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -161,7 +173,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка сеансов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -171,11 +185,9 @@ // Возвращаемое значение: // Соответствие - список сеансов // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт - - Лицензии = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Возврат Лицензии; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -197,15 +209,16 @@ // Функция возвращает описание сеанса кластера 1С // // Параметры: -// ИдВладельца - Строка - номер сеанса в виде <имя информационной базы>:<номер сеанса> -// или номер процесса в виде <адрес сервера>:<номер процесса ОС (pid))> -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// ИдВладельца - Строка - идентификатор сеанса или идентификатор процесса +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание сеанса 1С // -Функция Получить(Знач ИдВладельца, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач ИдВладельца, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт СеансИлиПроцесс = Владелец.Получить(ИдВладельца); @@ -219,9 +232,9 @@ Возврат Неопределено; КонецЕсли; - Лицензии = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Лицензии = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если Лицензии.Количество() = 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\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\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" index beaf1f0..d71563b 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\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\320\232\320\273\320\260\321\201\321\202\320\265\321\200\320\260.os" @@ -52,7 +52,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); КонецПроцедуры // ПриСозданииОбъекта() @@ -60,14 +60,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Менеджер_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -89,7 +88,7 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); - Если МассивРезультатов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда Возврат; КонецЕсли; @@ -99,6 +98,23 @@ КонецПроцедуры // ОбновитьДанные() +// Функция признак необходимости обновления данных +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Менеджер_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + // Процедура заполняет параметры менеджера кластера 1С // // Параметры: @@ -107,25 +123,21 @@ Процедура ЗаполнитьПараметрыМенеджера(ДанныеЗаполнения) Менеджер_Адрес = ДанныеЗаполнения.Получить("host"); - Менеджер_Порт = ДанныеЗаполнения.Получить("port"); - Менеджер_ИдПроцесса = ДанныеЗаполнения.Получить("pid"); + Менеджер_Порт = Число(ДанныеЗаполнения.Получить("port")); + Менеджер_ИдПроцесса = Число(ДанныеЗаполнения.Получить("pid")); Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Менеджер_Свойства, ДанныеЗаполнения); КонецПроцедуры // ЗаполнитьПараметрыМенеджера() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -159,7 +171,7 @@ Функция Адрес() Экспорт Если Служебный.ТребуетсяОбновление(Менеджер_Адрес, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Менеджер_Адрес; @@ -174,7 +186,7 @@ Функция Порт() Экспорт Если Служебный.ТребуетсяОбновление(Менеджер_Порт, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Менеджер_Порт; @@ -185,24 +197,26 @@ // // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); ЗначениеПоля = Неопределено; - Если НЕ Найти(ВРЕг("Ид, manager"), ВРег(ИмяПоля)) = 0 Тогда + Если НЕ Найти("ИД, MANAGER", ВРег(ИмяПоля)) = 0 Тогда Возврат Менеджер_Ид; - ИначеЕсли НЕ Найти(ВРЕг("ИдПроцесса, pid"), ВРег(ИмяПоля)) = 0 Тогда + ИначеЕсли НЕ Найти("ИДПРОЦЕССА, PID", ВРег(ИмяПоля)) = 0 Тогда Возврат Менеджер_ИдПроцесса; - ИначеЕсли НЕ Найти(ВРЕг("Сервер, host"), ВРег(ИмяПоля)) = 0 Тогда + ИначеЕсли НЕ Найти("СЕРВЕР, HOST", ВРег(ИмяПоля)) = 0 Тогда Возврат Менеджер_Адрес; - ИначеЕсли НЕ Найти(ВРЕг("Порт, port"), ВРег(ИмяПоля)) = 0 Тогда + ИначеЕсли НЕ Найти("ПОРТ, PORT", ВРег(ИмяПоля)) = 0 Тогда Возврат Менеджер_Порт; Иначе ЗначениеПоля = Менеджер_Свойства.Получить(ИмяПоля); @@ -210,7 +224,7 @@ Если ЗначениеПоля = Неопределено Тогда - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Менеджер_Свойства.Получить(ОписаниеПараметра["Имя"]); 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 9d15172..d643786 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" @@ -37,13 +37,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -75,18 +75,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -94,7 +106,9 @@ // // Параметры: // Отбор - Структура - Структура отбора менеджеров (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -104,11 +118,9 @@ // Возвращаемое значение: // Массив - список менеджеров кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - МенеджерыКластера = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат МенеджерыКластера; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -116,7 +128,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка менеджеров, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -127,11 +141,9 @@ // Соответствие - список менеджеров кластера 1С // <имя поля объекта> - Массив(Соответствие), Соответствие - список менеджеров или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт - - МенеджерыКластера = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Возврат МенеджерыКластера; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -153,28 +165,35 @@ // Функция возвращает описание менеджера кластера 1С // // Параметры: -// Менеджер - Строка - Номер менеджер в виде <адрес сервера>:<номер процесса ОС (pid))> -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// Менеджер - Строка - Менеджер кластера в виде <адрес сервера>:<номер процесса ОС (pid))> +// или идентификатор менеджера кластера +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание менеджера кластера 1С // -Функция Получить(Знач Менеджер, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач Менеджер, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт + + Отбор = Новый Соответствие(); - Менеджер = СтрРазделить(Менеджер, ":"); + Если Служебный.ЭтоGUID(Менеджер) Тогда + Отбор.Вставить("manager", Менеджер); + Иначе + Менеджер = СтрРазделить(Менеджер, ":", Ложь); + Если Менеджер.Количество() = 1 Тогда + Менеджер.Вставить(0, Кластер_Владелец.Получить("host")); + КонецЕсли; - Если Менеджер.Количество() = 1 Тогда - Менеджер.Вставить(0, Кластер_Владелец.Получить("host")); + Отбор.Вставить("host", СокрЛП(Менеджер[0])); + Отбор.Вставить("pid" , Число(СокрЛП(Менеджер[1]))); КонецЕсли; - Отбор = Новый Соответствие(); - Отбор.Вставить("host", Менеджер[0]); - Отбор.Вставить("pid", Менеджер[1]); - - МенеджерыКластера = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + МенеджерыКластера = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если МенеджерыКластера.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МенеджерыКластера) Тогда Возврат Неопределено; КонецЕсли; 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\320\265\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\320\265\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 a5e7c79..52a1c13 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\320\265\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\320\265\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" @@ -55,7 +55,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); КонецПроцедуры // ПриСозданииОбъекта() @@ -63,14 +63,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Требование_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -100,18 +99,31 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Требование_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -134,7 +146,7 @@ Функция Позиция() Экспорт Если Служебный.ТребуетсяОбновление(Требование_Позиция, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Требование_Позиция; @@ -145,20 +157,22 @@ // // Параметры: // ИмяПоля - Строка - Имя параметра требования назначения функциональности -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра требования назначения функциональности // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); - Если НЕ Найти(ВРЕг("Ид, rule"), ВРег(ИмяПоля)) = 0 Тогда + Если НЕ Найти("ИД, RULE", ВРег(ИмяПоля)) = 0 Тогда Возврат Требование_Ид; КонецЕсли; - Если НЕ Найти(ВРЕг("Позиция, position"), ВРег(ИмяПоля)) = 0 Тогда + Если НЕ Найти("ПОЗИЦИЯ, POSITION", ВРег(ИмяПоля)) = 0 Тогда Возврат Требование_Позиция; КонецЕсли; @@ -166,7 +180,7 @@ Если ЗначениеПоля = Неопределено Тогда - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Требование_Свойства.Получить(ОписаниеПараметра["Имя"]); @@ -215,7 +229,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Изменить() @@ -243,6 +257,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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 18ab34d..9ba8592 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" @@ -41,13 +41,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -84,18 +84,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -104,7 +116,9 @@ // Параметры: // Отбор - Структура - Структура отбора требований // назначения функциональности (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -114,11 +128,9 @@ // Возвращаемое значение: // Массив - список требований назначения функциональности сервера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокНазначений = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокНазначений; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -127,7 +139,9 @@ // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка требований // назначения функциональности, разделенные "," -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -139,11 +153,9 @@ // <имя поля объекта> - Массив(Соответствие), Соответствие - список требований назначения функциональности // или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокКластеров = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокКластеров; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -166,20 +178,22 @@ // // Параметры: // Ид - Строка - Идентификатор требований назначения функциональности -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание требования назначения функциональности сервера 1С // -Функция Получить(Знач Ид, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач Ид, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); Отбор.Вставить("rule", Ид); - СписокТребований = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + СписокТребований = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если СписокТребований.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(СписокТребований) Тогда Возврат Неопределено; КонецЕсли; @@ -224,7 +238,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -243,7 +257,7 @@ Требование.Удалить(); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() @@ -277,6 +291,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Применить() 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 c44c7e3..eb38faf 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" @@ -45,30 +45,24 @@ Кластер_Владелец = Кластер; Если ТипЗнч(ОбъектКластера) = Тип("Соответствие") Тогда - ОбъектКластера_Ид = ОбъектКластера[ТипОбъекта]; Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Объект_Свойства, ОбъектКластера); МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); Иначе - Объект_Ид = ОбъектКластера; МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); КонецПроцедуры // ПриСозданииОбъекта() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -87,24 +81,26 @@ // // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра объекта кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт ЗначениеПоля = Неопределено; - Если НЕ Найти(ВРЕг("Тип, type"), ВРег(ИмяПоля)) = 0 Тогда + Если НЕ Найти("ТИП, TYPE", ВРег(ИмяПоля)) = 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\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 4349cea..353da05 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" @@ -19,7 +19,7 @@ Владелец = ВладелецЭлементов; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ВладелецЭлементов); МоментАктуальности = 0; КонецПроцедуры // ПриСозданииОбъекта() @@ -31,6 +31,10 @@ // Процедура Заполнить(МассивЭлементов) Экспорт + Если ТипЗнч(Элементы) = Тип("Массив") Тогда + Элементы.Очистить(); + КонецЕсли; + Элементы = Новый Массив(); Для Каждого ТекЭлемент Из МассивЭлементов Цикл @@ -53,31 +57,34 @@ // Функция признак необходимости обновления данных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Булево - Истина - требуется обновитьданные // -Функция ТребуетсяОбновление(ОбновитьПринудительно = Ложь) Экспорт +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Если РежимОбновления = Перечисления.РежимыОбновленияДанных.НеОбновлять Тогда + Возврат Ложь; + ИначеЕсли РежимОбновления = Перечисления.РежимыОбновленияДанных.Принудительно Тогда + Возврат Истина; + КонецЕсли; - Возврат (ОбновитьПринудительно - ИЛИ Элементы = Неопределено + Возврат (Элементы = Неопределено ИЛИ (ПериодОбновления < (ТекущаяУниверсальнаяДатаВМиллисекундах() - МоментАктуальности))); КонецФункции // ТребуетсяОбновление() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат Владелец.ПараметрыОбъекта(ИмяПоляКлюча); + Возврат Владелец.ПараметрыОбъекта(); КонецФункции // ПараметрыОбъекта() @@ -85,7 +92,9 @@ // // Параметры: // Отбор - Структура - Структура отбора объектов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -96,10 +105,10 @@ // Массив - список объектов кластера 1С // Функция Список(Знач Отбор = Неопределено - , Знач ОбновитьПринудительно = Ложь + , Знач РежимОбновления = 0 , Знач ЭлементыКакСоответствия = Ложь) Экспорт - Владелец.ОбновитьДанные(ОбновитьПринудительно); + Владелец.ОбновитьДанные(РежимОбновления); Результат = Служебный.ПолучитьЭлементыИзМассиваСоответствий(Элементы, Отбор); @@ -111,7 +120,7 @@ КонецЕсли; Если ЭлементыКакСоответствия Тогда - ПоляЭлемента = Владелец.ПараметрыОбъекта(ИмяПоляКлюча); + ПоляЭлемента = Владелец.ПараметрыОбъекта().ОписаниеСвойств(ИмяПоляКлюча); Результат = Служебный.МассивОбъектовВМассивСоответствий(Результат, ПоляЭлемента); КонецЕсли; @@ -124,7 +133,9 @@ // Параметры: // ПоляИерархии - Строка, - имена полей для построения иерархии списка объектов, // Массив разделенные "," или массив имен полей -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -136,10 +147,10 @@ // <имя поля объекта> - Массив(Соответствие), Соответствие - список объектов кластера или следующий уровень // Функция ИерархическийСписок(Знач ПоляИерархии - , Знач ОбновитьПринудительно = Ложь - , Знач ЭлементыКакСоответствия = Ложь) Экспорт + , Знач РежимОбновления = 0 + , Знач ЭлементыКакСоответствия = Ложь) Экспорт - Владелец.ОбновитьДанные(ОбновитьПринудительно); + Владелец.ОбновитьДанные(РежимОбновления); ЭлементыДляОбработки = Элементы; @@ -155,8 +166,8 @@ ЭлементыКакСоответствия = Истина; КонецЕсли; - ПоляЭлемента0 = Владелец.ПараметрыОбъекта(ИменаПолейКлюча[0]); - ПоляЭлемента1 = Владелец.ПараметрыОбъекта(ИменаПолейКлюча[1]); + ПоляЭлемента0 = Владелец.ПараметрыОбъекта().ОписаниеСвойств(ИменаПолейКлюча[0]); + ПоляЭлемента1 = Владелец.ПараметрыОбъекта().ОписаниеСвойств(ИменаПолейКлюча[1]); Если ТипЗнч(ПоляИерархии) = Тип("Строка") Тогда ПоляИерархии = СтрРазделить(ПоляИерархии, ",", Ложь); @@ -174,9 +185,7 @@ ЭлементыДляОбработки = Служебный.МассивОбъектовВМассивСоответствий(Элементы, ПоляЭлемента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 7e4a041..28e2e53 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" @@ -15,6 +15,9 @@ Перем ПараметрыОбъекта; +Перем МоментАктуальности; +Перем ПериодОбновления; + Перем Лог; // Конструктор @@ -30,8 +33,6 @@ Лог = Служебный.Лог(); - Элементы = Неопределено; - Кластер_Агент = АгентКластера; Кластер_Владелец = Кластер; Профиль_Владелец = Профиль; @@ -51,13 +52,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -97,18 +98,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -116,7 +129,9 @@ // // Параметры: // Отбор - Структура - Структура отбора объектов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -126,11 +141,9 @@ // Возвращаемое значение: // Массив - список объектов кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - ОбъектыПрофиля = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат ОбъектыПрофиля; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -138,7 +151,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка объектов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -149,11 +164,9 @@ // Соответствие - список объектов кластера 1С // <имя поля объекта> - Массив(Соответствие), Соответствие - список объектов кластера или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт - - ОбъектыПрофиля = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Возврат ОбъектыПрофиля; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -231,7 +244,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Изменить() @@ -264,6 +277,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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\320\265\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\320\265\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" index 3952d1a..5c8d29e 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\320\265\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\320\265\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" @@ -52,7 +52,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); Ограничение_Значения = Новый ОбъектыКластера(ЭтотОбъект); @@ -62,14 +62,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Ограничение_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -99,18 +98,31 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Ограничение_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -124,37 +136,55 @@ Возврат Ограничение_Имя; КонецФункции // Имя() - + +// Функция возвращает значения ограничения потребления ресурсов +// +// Возвращаемое значение: +// ОбъектыКластера - имя ограничения потребления ресурсов +// +Функция Значения() Экспорт + + Возврат Ограничение_Значения; + +КонецФункции // Значения() + // Функция возвращает значение параметра ограничения потребления ресурсов кластера 1С // // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра ограничения потребления ресурсов кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); - Если НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Ограничение_Имя; - КонецЕсли; + ЗначениеПоля = Неопределено; - ЗначениеПоля = Ограничение_Свойства.Получить(ИмяПоля); + Если НЕ Найти("ИМЯ, NAME", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Ограничение_Имя; + ИначеЕсли НЕ Найти("ЗНАЧЕНИЯ, VALUES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Ограничение_Значения; + Иначе + ЗначениеПоля = Ограничение_Свойства.Получить(ИмяПоля); + КонецЕсли; Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Ограничение_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; - + КонецФункции // Получить() // Процедура изменяет параметры ограничения потребления ресурсов @@ -190,7 +220,7 @@ КонецЕсли; Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Изменить() @@ -221,6 +251,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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 a3ace3f..8d8096c 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" @@ -37,13 +37,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -75,18 +75,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -94,7 +106,9 @@ // // Параметры: // Отбор - Структура - Структура отбора ограничений потребления ресурсов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -104,11 +118,9 @@ // Возвращаемое значение: // Массив - список ограничений потребления ресурсов кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокОграничений = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокОграничений; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -117,7 +129,9 @@ // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка ограничений потребления ресурсов, // разделенные "," -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -129,11 +143,9 @@ // <имя поля объекта> - Массив(Соответствие), Соответствие - список ограничений потребления ресурсов // или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокОграничений = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокОграничений; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -155,23 +167,28 @@ // Функция возвращает описание ограничения потребления ресурсов кластера 1С // // Параметры: -// Имя - Строка - Имя ограничения потребления ресурсов -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// ИмяИлиИд - Строка - Имя или идентификатор ограничения потребления ресурсов +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание ограничения потребления ресурсов кластера 1С // -Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт - - ОбновитьДанные(ОбновитьПринудительно); +Функция Получить(Знач ИмяИлиИд, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); - Отбор.Вставить("name", Имя); - Списокограничений = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Если Служебный.ЭтоGUID(ИмяИлиИд) Тогда + Отбор.Вставить("limit", ИмяИлиИд); + Иначе + Отбор.Вставить("name", ИмяИлиИд); + КонецЕсли; + + Списокограничений = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если Списокограничений.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(Списокограничений) Тогда Возврат Неопределено; КонецЕсли; @@ -218,7 +235,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -235,6 +252,6 @@ Ограничение.Удалить(); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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 e6313d2..acad45b 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" @@ -37,13 +37,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -75,18 +75,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -94,7 +106,9 @@ // // Параметры: // Отбор - Структура - Структура отбора профилей безопасности (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -104,11 +118,9 @@ // Возвращаемое значение: // Массив - список профилей безопасности кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокПрофилей = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокПрофилей; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -117,7 +129,9 @@ // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка профилей безопасности, // разделенные "," -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -129,11 +143,9 @@ // <имя поля объекта> - Массив(Соответствие), Соответствие - список профилей безопасности // или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокПрофилей = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокПрофилей; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -155,21 +167,28 @@ // Функция возвращает описание профиля безопасности кластера 1С // // Параметры: -// Имя - Строка - Имя профиля безопасности -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// ИмяИлиИд - Строка - Имя или идентификатор профиля безопасности +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание профиля безопасности кластера 1С // -Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач ИмяИлиИд, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); - Отбор.Вставить("name", Имя); - СписокПрофилей = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Если Служебный.ЭтоGUID(ИмяИлиИд) Тогда + Отбор.Вставить("profile", ИмяИлиИд); + Иначе + Отбор.Вставить("name", ИмяИлиИд); + КонецЕсли; + + СписокПрофилей = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если СписокПрофилей.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(СписокПрофилей) Тогда Возврат Неопределено; КонецЕсли; @@ -212,7 +231,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -231,6 +250,6 @@ Профиль.Удалить(); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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\321\214\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\321\214\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 dba12c7..e0245fe 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\321\214\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\321\214\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" @@ -70,7 +70,7 @@ Профиль_ИнтернетРесурсы = Новый ОбъектыПрофиля(Кластер_Агент, Кластер_Владелец, ЭтотОбъект, Перечисления.ВидыОбъектовПрофиляБезопасности.ИнтернетРесурс); - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); МоментАктуальности = 0; КонецПроцедуры // ПриСозданииОбъекта() @@ -79,14 +79,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Профиль_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -127,6 +126,23 @@ КонецПроцедуры // ОбновитьДанные() +// Функция признак необходимости обновления данных +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Профиль_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + // Процедура заполняет параметры профиля безопасности // // Параметры: @@ -140,18 +156,14 @@ КонецПроцедуры // ЗаполнитьПараметрыПрофиля() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -236,28 +248,45 @@ // // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра профиля безопасности кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); - - Если НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Профиль_Имя; + ОбновитьДанные(РежимОбновления); + + ЗначениеПоля = Неопределено; + + Если НЕ Найти("ИМЯ, NAME", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Профиль_Имя; + ИначеЕсли НЕ Найти("КАТАЛОГИ, DIRECTORIES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Профиль_Каталоги; + ИначеЕсли НЕ Найти("COMКЛАССЫ, COMCLASSES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Профиль_COMКлассы; + ИначеЕсли НЕ Найти("ВНЕШНИЕКОМПОНЕНТЫ, КОМПОНЕНТЫ, ADDINS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Профиль_ВнешниеКомпоненты; + ИначеЕсли НЕ Найти("ВНЕШНИЕМОДУЛИ, МОДУЛИ, MODULES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Профиль_ВнешниеМодули; + ИначеЕсли НЕ Найти("ПРИЛОЖЕНИЯ, APPS, APPLICATIONS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Профиль_Приложения; + ИначеЕсли НЕ Найти("ИНТЕРНЕТРЕСУРСЫ, INTERNETRESOURCES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Профиль_ИнтернетРесурсы; + Иначе + ЗначениеПоля = Профиль_Свойства.Получить(ИмяПоля); КонецЕсли; - ЗначениеПоля = Профиль_Свойства.Получить(ИмяПоля); - Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Профиль_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; @@ -332,7 +361,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Изменить() 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 a5acc65..60ba357 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" @@ -32,24 +32,22 @@ ПараметрыОбъекта = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.РабочиеПроцессы); - ПараметрыЛицензий = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.ЛицензииПроцессов); - Элементы = Новый ОбъектыКластера(ЭтотОбъект); Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект); -КонецПроцедуры +КонецПроцедуры // ПриСозданииОбъекта() // Процедура получает список рабочих процессов от утилиты администрирования кластера 1С // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -81,18 +79,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -100,7 +110,9 @@ // // Параметры: // Отбор - Структура - Структура отбора процессов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -110,11 +122,9 @@ // Возвращаемое значение: // Массив - список рабочих процессов 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - РабочиеПроцессы = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат РабочиеПроцессы; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -122,7 +132,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка процессов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -132,11 +144,9 @@ // Возвращаемое значение: // Соответствие - список рабочих процессов кластера 1С // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - РабочиеПроцессы = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат РабочиеПроцессы; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -158,28 +168,35 @@ // Функция возвращает описание рабочего процесса кластера 1С // // Параметры: -// Процесс - Строка - Номер процесса в виде <адрес сервера>:<номер процесса ОС (pid))> -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// Процесс - Строка - Рабочий процесс в виде <адрес сервера>:<номер процесса ОС (pid))> +// или идентификатор рабочего процесса +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание рабочего процесса кластера 1С // -Функция Получить(Знач Процесс, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач Процесс, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт + + Отбор = Новый Соответствие(); - Процесс = СтрРазделить(Процесс, ":"); + Если Служебный.ЭтоGUID(Процесс) Тогда + Отбор.Вставить("process", Процесс); + Иначе + Процесс = СтрРазделить(Процесс, ":", Ложь); + Если Процесс.Количество() = 1 Тогда + Процесс.Вставить(0, Кластер_Владелец.Получить("host")); + КонецЕсли; - Если Процесс.Количество() = 1 Тогда - Процесс.Вставить(0, Кластер_Владелец.Получить("host")); + Отбор.Вставить("host", СокрЛП(Процесс[0])); + Отбор.Вставить("pid" , Число(СокрЛП(Процесс[1]))); КонецЕсли; - Отбор = Новый Соответствие(); - Отбор.Вставить("host", Процесс[0]); - Отбор.Вставить("pid", Процесс[1]); - - РабочиеПроцессы = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + РабочиеПроцессы = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если РабочиеПроцессы.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(РабочиеПроцессы) Тогда Возврат Неопределено; КонецЕсли; @@ -190,12 +207,14 @@ // Функция возвращает список лицензий рабочих процессов 1С // // Параметры: -// ОбновитьПринудительно - Булево - Истина - обновить данные лицензий (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // ОбъектыКластера - список лицензий рабочих процессов 1С // -Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт +Функция Лицензии(РежимОбновления = 0) Экспорт Возврат Лицензии; 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 01d52a9..7229570 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" @@ -44,8 +44,6 @@ ПараметрыОбъекта = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.РабочиеПроцессы); - ПараметрыЛицензий = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.ЛицензииПроцессов); - Если ТипЗнч(Процесс) = Тип("Соответствие") Тогда Процесс_Ид = Процесс["process"]; ЗаполнитьПараметрыПроцесса(Процесс); @@ -55,7 +53,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); Процесс_Соединения = Новый Соединения(Кластер_Агент, Кластер_Владелец, ЭтотОбъект); Процесс_Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект); @@ -66,14 +64,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Процесс_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -95,7 +92,7 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); - Если МассивРезультатов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда Возврат; КонецЕсли; @@ -105,6 +102,23 @@ КонецПроцедуры // ОбновитьДанныеПроцесса() +// Функция признак необходимости обновления данных +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Процесс_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + // Процедура заполняет параметры рабочего процесса кластера 1С // // Параметры: @@ -113,24 +127,20 @@ Процедура ЗаполнитьПараметрыПроцесса(ДанныеЗаполнения) Процесс_АдресСервера = ДанныеЗаполнения.Получить("host"); - Процесс_ПортСервера = ДанныеЗаполнения.Получить("port"); + Процесс_ПортСервера = Число(ДанныеЗаполнения.Получить("port")); Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Процесс_Свойства, ДанныеЗаполнения); КонецПроцедуры // ЗаполнитьПараметрыПроцесса() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -153,7 +163,7 @@ Функция АдресСервера() Экспорт Если Служебный.ТребуетсяОбновление(Процесс_АдресСервера, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Процесс_АдресСервера; @@ -168,7 +178,7 @@ Функция ПортСервера() Экспорт Если Служебный.ТребуетсяОбновление(Процесс_ПортСервера, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Процесс_ПортСервера; @@ -179,36 +189,41 @@ // // Параметры: // ИмяПоля - Строка - Имя параметра рабочего процесса -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра рабочего процесса 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); - - Если НЕ Найти(ВРег("Ид, process"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Процесс_Ид; - КонецЕсли; - - Если НЕ Найти(ВРег("АдресСервера, host"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Процесс_АдресСервера; - КонецЕсли; - - Если НЕ Найти(ВРег("ПортСервера, port"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Процесс_ПортСервера; + ОбновитьДанные(РежимОбновления); + + ЗначениеПоля = Неопределено; + + Если НЕ Найти("ИД, PROCESS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Процесс_Ид; + ИначеЕсли НЕ Найти("АДРЕССЕРВЕРА, HOST", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Процесс_АдресСервера; + ИначеЕсли НЕ Найти("ПОРТСЕРВЕРА, PORT", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Процесс_ПортСервера; + ИначеЕсли НЕ Найти("ЛИЦЕНЗИИ, LICENSES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Лицензии(РежимОбновления); + ИначеЕсли НЕ Найти("СОЕДИНЕНИЯ, CONNECTIONS", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Процесс_Соединения; + Иначе + ЗначениеПоля = Процесс_Свойства.Получить(ИмяПоля); КонецЕсли; - ЗначениеПоля = Процесс_Свойства.Получить(ИмяПоля); - Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Процесс_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; @@ -229,13 +244,19 @@ // Функция возвращает список лицензий, выданных рабочим процессом 1С // // Параметры: -// ОбновитьПринудительно - Булево - Истина - обновить данные лицензий (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // ОбъектыКластера - список лицензий, выданных рабочим процессом 1С // -Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт +Функция Лицензии(РежимОбновления = 0) Экспорт + Если РежимОбновления Тогда + Процесс_Лицензии.ОбновитьДанные(РежимОбновления); + КонецЕсли; + Возврат Процесс_Лицензии; КонецФункции // Лицензии() 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 bc69e4d..c5cbb42 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" @@ -44,8 +44,6 @@ ПараметрыОбъекта = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.Сеансы); - ПараметрыЛицензий = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.ЛицензииСеансов); - Если ТипЗнч(Сеанс) = Тип("Соответствие") Тогда Сеанс_Ид = Сеанс["session"]; Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Сеанс_Свойства, Сеанс); @@ -55,7 +53,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); Сеанс_Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект, ИБ_Владелец); @@ -65,14 +63,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Сеанс_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -87,14 +84,15 @@ КодВозврата = ПараметрыОбъекта.ВыполнитьКоманду("Описание"); Если НЕ КодВозврата = 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка получения описания сеанса, КодВозврата = %1: %2", - КодВозврата, - Кластер_Агент.ВыводКоманды(Ложь)); + Лог.Предупреждение("Ошибка получения описания сеанса, КодВозврата = %1: %2", + КодВозврата, + Кластер_Агент.ВыводКоманды(Ложь)); КонецЕсли; МассивРезультатов = Кластер_Агент.ВыводКоманды(); - Если МассивРезультатов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда + Кластер_Владелец.Сеансы().ОбновитьДанные(); Возврат; КонецЕсли; @@ -104,18 +102,31 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Сеанс_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -133,29 +144,36 @@ // Функция возвращает значение параметра сеанса 1С // // Параметры: -// ИмяПоля - Строка - Имя параметра сеанса -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// ИмяПоля - Строка - Имя параметра сеанса +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра сеанса 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); + + ЗначениеПоля = Неопределено; - Если НЕ Найти(ВРег("Ид, session"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Сеанс_Ид; + Если НЕ Найти("ИД, SESSION", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Сеанс_Ид; + ИначеЕсли НЕ Найти("ЛИЦЕНЗИИ, LICENSES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Лицензии(РежимОбновления); + Иначе + ЗначениеПоля = Сеанс_Свойства.Получить(ИмяПоля); КонецЕсли; - ЗначениеПоля = Сеанс_Свойства.Получить(ИмяПоля); - Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Сеанс_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; @@ -165,13 +183,19 @@ // Функция возвращает список лицензий, выданных сеансу 1С // // Параметры: -// ОбновитьПринудительно - Булево - Истина - обновить данные лицензий (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // ОбъектыКластера - список лицензий, выданных сеансу 1С // -Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт +Функция Лицензии(РежимОбновления = 0) Экспорт + Если РежимОбновления Тогда + Сеанс_Лицензии.ОбновитьДанные(РежимОбновления); + КонецЕсли; + Возврат Сеанс_Лицензии; КонецФункции // Лицензии() @@ -199,4 +223,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 815716c..d4327c5 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" @@ -35,8 +35,6 @@ ПараметрыОбъекта = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.Сеансы); - ПараметрыЛицензий = Новый КомандыОбъекта(Кластер_Агент, Перечисления.РежимыАдминистрирования.ЛицензииСеансов); - Элементы = Новый ОбъектыКластера(ЭтотОбъект); Лицензии = Новый Лицензии(Кластер_Агент, Кластер_Владелец, ЭтотОбъект, ИБ_Владелец); @@ -46,13 +44,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -77,9 +75,16 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); + // По какой-то причине сеансы погут быть задублированы поэтому проверяем на дубли + ДобавленныеСеансы = Новый Соответствие(); + МассивСеансов = Новый Массив(); Для Каждого ТекОписание Из МассивРезультатов Цикл + Если НЕ ДобавленныеСеансы[ТекОписание["session"]] = Неопределено Тогда + Продолжить; + КонецЕсли; МассивСеансов.Добавить(Новый Сеанс(Кластер_Агент, Кластер_Владелец, ИБ_Владелец, ТекОписание)); + ДобавленныеСеансы.Вставить(ТекОписание["session"], Истина); КонецЦикла; Элементы.Заполнить(МассивСеансов); @@ -88,18 +93,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -107,7 +124,9 @@ // // Параметры: // Отбор - Структура - Структура отбора сеансов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -117,11 +136,9 @@ // Возвращаемое значение: // Массив - список сеансов // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Сеансы = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат Сеансы; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -129,7 +146,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка сеансов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -139,11 +158,9 @@ // Возвращаемое значение: // Соответствие - список сеансов // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Сеансы = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат Сеансы; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -165,39 +182,45 @@ // Функция возвращает описание сеанса кластера 1С // // Параметры: -// Сеанс - Строка - Номер сеанса в виде <имя информационной базы>:<номер сеанса> -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// Сеанс - Строка - Сеанс в виде <имя информационной базы>:<номер сеанса> +// или идентификатор сеанса +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание сеанса 1С // -Функция Получить(Знач Сеанс, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач Сеанс, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт - Сеанс = СтрРазделить(Сеанс, ":"); + Отбор = Новый Соответствие(); - Если Сеанс.Количество() = 1 Тогда - Если ТипЗнч(Сеанс[0]) = Тип("Строка") Тогда - Сеанс.Добавить(1); - ИначеЕсли ТипЗнч(Сеанс[0]) = Тип("Число") Тогда - Если ИБ_Владелец = Неопределено Тогда - Возврат Неопределено; + Если Служебный.ЭтоGUID(Сеанс) Тогда + Отбор.Вставить("session", Сеанс); + Иначе + Сеанс = СтрРазделить(Сеанс, ":", Ложь); + + Если Сеанс.Количество() = 1 Тогда + Если Служебный.ЭтоЧисло(Сеанс[0]) Тогда + Если ИБ_Владелец = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + Сеанс.Вставить(0, ИБ_Владелец.Получить("name")); + Иначе + Сеанс.Добавить("1"); КонецЕсли; - Сеанс.Вставить(0, ИБ_Владелец.Получить("name")); - Иначе - Возврат Неопределено; КонецЕсли; - КонецЕсли; - ИБ = Кластер_Владелец.ИнформационныеБазы().Получить(Сеанс[0]); + ИБ = Кластер_Владелец.ИнформационныеБазы().Получить(СокрЛП(Сеанс[0])); - Отбор = Новый Соответствие(); - Отбор.Вставить("infobase", ИБ.Получить("infobase")); - Отбор.Вставить("session-id", Сеанс[1]); + Отбор.Вставить("infobase" , ИБ.Ид()); + Отбор.Вставить("session-id", Число(СокрЛП(Сеанс[1]))); + КонецЕсли; - Сеансы = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Сеансы = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если Сеансы.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(Сеансы) Тогда Возврат Неопределено; КонецЕсли; @@ -218,19 +241,21 @@ Сеанс.Завершить(); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() // Функция возвращает список лицензий сеансов 1С // // Параметры: -// ОбновитьПринудительно - Булево - Истина - обновить данные лицензий (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // ОбъектыКластера - список лицензий сеансов 1С // -Функция Лицензии(ОбновитьПринудительно = Ложь) Экспорт +Функция Лицензии(РежимОбновления = 0) Экспорт Возврат Лицензии; 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.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.os" index 7a5e108..e148c03 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.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.os" @@ -54,7 +54,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); Сервер_НазначенияФункциональности = Новый НазначенияФункциональности(Кластер_Агент, Кластер_Владелец, ЭтотОбъект); @@ -64,14 +64,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Сервер_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -93,7 +92,7 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); - Если МассивРезультатов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда Возврат; КонецЕсли; @@ -103,6 +102,23 @@ КонецПроцедуры // ОбновитьДанные() +// Функция признак необходимости обновления данных +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Сервер_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + // Процедура заполняет параметры сервера кластера 1С // // Параметры: @@ -111,25 +127,21 @@ Процедура ЗаполнитьПараметрыСервера(ДанныеЗаполнения) Сервер_АдресАгента = ДанныеЗаполнения.Получить("agent-host"); - Сервер_ПортАгента = ДанныеЗаполнения.Получить("agent-port"); + Сервер_ПортАгента = Число(ДанныеЗаполнения.Получить("agent-port")); Сервер_Имя = ДанныеЗаполнения.Получить("name"); Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Сервер_Свойства, ДанныеЗаполнения); КонецПроцедуры // ЗаполнитьПараметрыСервера() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -152,7 +164,7 @@ Функция Имя() Экспорт Если Служебный.ТребуетсяОбновление(Сервер_Имя, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Сервер_Имя; @@ -167,7 +179,7 @@ Функция АдресСервера() Экспорт Если Служебный.ТребуетсяОбновление(Сервер_АдресАгента, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Сервер_АдресАгента; @@ -182,7 +194,7 @@ Функция ПортСервера() Экспорт Если Служебный.ТребуетсяОбновление(Сервер_ПортАгента, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Сервер_ПортАгента; @@ -197,7 +209,7 @@ Функция НазначенияФункциональности() Экспорт Если Служебный.ТребуетсяОбновление(Сервер_НазначенияФункциональности, МоментАктуальности, ПериодОбновления) Тогда - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецЕсли; Возврат Сервер_НазначенияФункциональности; @@ -208,40 +220,45 @@ // // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); ЗначениеПоля = Неопределено; - Если НЕ Найти(ВРЕг("Ид, server"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Сервер_Ид; - ИначеЕсли НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Сервер_Имя; - ИначеЕсли НЕ Найти(ВРЕг("СерверАгента, agent-host"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Сервер_АдресАгента; - ИначеЕсли НЕ Найти(ВРЕг("ПортАгента, agent-port"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Сервер_ПортАгента; + Если НЕ Найти("ИД, SERVER", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Сервер_Ид; + ИначеЕсли НЕ Найти("ИМЯ, NAME", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Сервер_Имя; + ИначеЕсли НЕ Найти("СЕРВЕРАГЕНТА, AGENT-HOST", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Сервер_АдресАгента; + ИначеЕсли НЕ Найти("ПОРТАГЕНТА, AGENT-PORT", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Сервер_ПортАгента; + ИначеЕсли НЕ Найти("ПРОФИЛИ, НАЗНАЧЕНИЯФУНКЦИОНАЛЬНОСТИ, ПРОФИЛИНАЗНАЧЕНИЯФУНКЦИОНАЛЬНОСТИ, PROFILES", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Сервер_НазначенияФункциональности; Иначе ЗначениеПоля = Сервер_Свойства.Получить(ИмяПоля); КонецЕсли; Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Сервер_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; - + КонецФункции // Получить() // Процедура изменяет параметры сервера @@ -277,6 +294,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 7334982..1607b88 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" @@ -37,13 +37,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -75,18 +75,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -94,7 +106,9 @@ // // Параметры: // Отбор - Структура - Структура отбора серверов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -104,11 +118,9 @@ // Возвращаемое значение: // Массив - список серверов кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокСерверов = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокСерверов; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -116,7 +128,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка серверов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -127,11 +141,9 @@ // Соответствие - список серверов кластера 1С // <имя поля объекта> - Массив(Соответствие), Соответствие - список серверов или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокКластеров = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокКластеров; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -153,29 +165,37 @@ // Функция возвращает описание сервера кластера 1С // // Параметры: -// СерверПорт - Строка - Адрес сервера в виде <сервер>:<порт> -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// Сервер - Строка - Адрес сервера в виде <сервер>:<порт> +// или идентификатор сервера +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание сервера кластера 1С // -Функция Получить(Знач СерверПорт, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт - - МассивОтбора = СтрРазделить(СерверПорт, ":"); +Функция Получить(Знач Сервер, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); - Отбор.Вставить("agent-host", СокрЛП(МассивОтбора[0])); - Если МассивОтбора.Количество() = 1 Тогда - Отбор.Вставить("agent-host", "1540"); + Если Служебный.ЭтоGUID(Сервер) Тогда + Отбор.Вставить("server", Сервер); Иначе - Отбор.Вставить("agent-port", СокрЛП(МассивОтбора[1])); + МассивОтбора = СтрРазделить(Сервер, ":", Ложь); + + Отбор.Вставить("agent-host", СокрЛП(МассивОтбора[0])); + + Если МассивОтбора.Количество() = 1 Тогда + Отбор.Вставить("agent-port", 1540); + Иначе + Отбор.Вставить("agent-port", Число(СокрЛП(МассивОтбора[1]))); + КонецЕсли; КонецЕсли; - СписокСерверов = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + СписокСерверов = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если СписокСерверов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(СписокСерверов) Тогда Возврат Неопределено; КонецЕсли; @@ -222,7 +242,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -252,6 +272,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\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 3fd864f..3693c1a 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" @@ -36,13 +36,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -78,18 +78,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -97,7 +109,9 @@ // // Параметры: // Отбор - Структура - Структура отбора сервисов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -107,11 +121,9 @@ // Возвращаемое значение: // Массив - список сервисов 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Сервисы = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат Сервисы; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -119,7 +131,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка сервисов, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -130,11 +144,9 @@ // Соответствие - список сервисов кластера 1С // <имя поля объекта> - Массив(Соответствие), Соответствие - список сервисов или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт - - Сервисы = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Возврат Сервисы; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -157,20 +169,22 @@ // // Параметры: // Имя - Строка - имя сервиса -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание менеджера кластера 1С // -Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач Имя, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); Отбор.Вставить("name", Имя); - Сервисы = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Сервисы = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если Сервисы.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(Сервисы) Тогда Возврат Неопределено; КонецЕсли; 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 6bd1658..b061e36 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" @@ -9,6 +9,7 @@ Перем Соединение_Ид; Перем Соединение_Свойства; +Перем Соединение_ПолноеОписание; // Истина - получено полное описание; Ложь - сокращенное Перем ПараметрыОбъекта; Перем Кластер_Агент; @@ -26,7 +27,7 @@ // Параметры: // АгентКластера - АгентКластера - ссылка на родительский объект агента кластера // Кластер - Кластера - ссылка на родительский объект кластера -// Процесс - Процесс - ссылка на родительский объект процесса +// Процесс - Процесс - ссылка на родительский объект процесса // ИБ - ИнформационнаяБаза - ссылка на родительский объект информационной базы // Соединение - Строка, Соответствие - идентификатор или параметры соединения // @@ -50,7 +51,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); КонецПроцедуры // ПриСозданииОбъекта() @@ -69,17 +70,19 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// 2 - обновить только основную информацию (вызов RAC) // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Соединение_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; - + + Соединение_ПолноеОписание = Ложь; + ПараметрыКоманды = Новый Соответствие(); ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения()); ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид()); @@ -92,48 +95,150 @@ КодВозврата = ПараметрыОбъекта.ВыполнитьКоманду("Описание"); Если НЕ КодВозврата = 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка получения описания соединения, КодВозврата = %1: %2", - КодВозврата, - Кластер_Агент.ВыводКоманды(Ложь)); + Лог.Предупреждение("Ошибка получения описания соединения ""%1"", КодВозврата = %2:%3%4", + Ид(), + КодВозврата, + Символы.ПС, + Кластер_Агент.ВыводКоманды(Ложь)); КонецЕсли; МассивРезультатов = Кластер_Агент.ВыводКоманды(); + Если НЕ ЗначениеЗаполнено(МассивРезультатов) Тогда + Кластер_Владелец.Соединения().ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); + Возврат; + КонецЕсли; + Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Соединение_Свойства, МассивРезультатов[0]); + Если НЕ РежимОбновления = Перечисления.РежимыОбновленияДанных.ТолькоОсновные Тогда + ДополнитьДанные(); + КонецЕсли; + МоментАктуальности = ТекущаяУниверсальнаяДатаВМиллисекундах(); -КонецПроцедуры // ОбновитьДанныеОбъекта() +КонецПроцедуры // ОбновитьДанные() + +// Процедура получает и устанавливает полные данные соединений от утилиты администрирования кластера 1С +// полные данные доступны только при указании ИБ и процесса +// +Процедура ДополнитьДанные() Экспорт + + Если НЕ (ЗначениеЗаполнено(Процесс_Владелец) И ЗначениеЗаполнено(ИБ_Владелец)) + ИЛИ ИБ_Владелец.ОшибкаАвторизации() Тогда + Возврат; + КонецЕсли; + + ПараметрыКоманды = Новый Соответствие(); + ПараметрыКоманды.Вставить("СтрокаПодключенияАгента" , Кластер_Агент.СтрокаПодключения()); + ПараметрыКоманды.Вставить("ИдентификаторКластера" , Кластер_Владелец.Ид()); + ПараметрыКоманды.Вставить("ПараметрыАвторизацииКластера", Кластер_Владелец.ПараметрыАвторизации()); + ПараметрыКоманды.Вставить("ИдентификаторПроцесса" , Процесс_Владелец.Ид()); + ПараметрыКоманды.Вставить("ИдентификаторИБ" , ИБ_Владелец.Ид()); + ПараметрыКоманды.Вставить("ПараметрыАвторизацииИБ" , ИБ_Владелец.ПараметрыАвторизации()); + + ПараметрыОбъекта.УстановитьЗначенияПараметровКоманд(ПараметрыКоманды); + + КодВозврата = ПараметрыОбъекта.ВыполнитьКоманду("Список"); + + Если НЕ КодВозврата = 0 Тогда + ВыводКоманды = Кластер_Агент.ВыводКоманды(Ложь); + Если Найти(ВыводКоманды, "Недостаточно прав пользователя") = 0 + И Найти(ВыводКоманды, "Превышено допустимое количество ошибок при вводе имени и пароля") = 0 Тогда + ВызватьИсключение ВыводКоманды; + Иначе + Лог.Предупреждение("Ошибка получения полного описания соединения ИБ ""%1"", КодВозврата = %2: %3", + ИБ_Владелец.Имя(), + КодВозврата, + ВыводКоманды); + ИБ_Владелец.УстановитьОшибкуАвторизации(Истина); + Возврат; + КонецЕсли; + КонецЕсли; + + МассивРезультатов = Кластер_Агент.ВыводКоманды(); + + Для Каждого ТекОписание Из МассивРезультатов Цикл + Если ТекОписание["connection"] = Соединение_Ид Тогда + ЗаполнитьСвойстваОбъекта(ТекОписание, Истина); + Иначе + СоединениеДляОбновления = + Кластер_Владелец.Соединения().Получить(ТекОписание["connection"], + Перечисления.РежимыОбновленияДанных.НеОбновлять); + Если НЕ (СоединениеДляОбновления = Неопределено ИЛИ СоединениеДляОбновления.ПолноеОписание()) Тогда + СоединениеДляОбновления.ЗаполнитьСвойстваОбъекта(ТекОписание, Истина); + КонецЕсли; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры // ДополнитьДанные() + +Процедура ЗаполнитьСвойстваОбъекта(ОписаниеОбъекта, ПолноеОписание = Ложь) Экспорт + Служебный.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, Соединение_Свойства, ОписаниеОбъекта, Истина); + Соединение_ПолноеОписание = ПолноеОписание; +КонецПроцедуры // ЗаполнитьСвойстваОбъекта() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// 2 - обновить только основную информацию (вызов RAC) +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Если НЕ Кластер_Владелец.Соединения().ТребуетсяОбновление(РежимОбновления) Тогда + Возврат Ложь; + КонецЕсли; + + Возврат Служебный.ТребуетсяОбновление(Соединение_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт - - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); +Функция ПараметрыОбъекта() Экспорт + + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() +// Функция возвращает признак доступности полного описания соединения 1С +// +// Возвращаемое значение: +// Булево - Истина - доступно полное описание; Ложь - доступно сокращенное описание +// +Функция ПолноеОписание() Экспорт + + Возврат (Соединение_ПолноеОписание = Истина); + +КонецФункции // ПолноеОписание() + // Функция возвращает значение параметра соединения 1С // // Параметры: // ИмяПоля - Строка - Имя параметра соединения -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// 2 - обновить только основную информацию (вызов RAC) // // Возвращаемое значение: // Произвольный - значение параметра соединения 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); - Если НЕ Найти(ВРег("Ид, connection"), ВРег(ИмяПоля)) = 0 Тогда + Если НЕ Найти("ИД, CONNECTION", ВРег(ИмяПоля)) = 0 Тогда Возврат Соединение_Ид; КонецЕсли; @@ -141,7 +246,7 @@ Если ЗначениеПоля = Неопределено Тогда - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Соединение_Свойства.Получить(ОписаниеПараметра["Имя"]); @@ -168,7 +273,7 @@ ОтборИБ.Вставить("infobase", Получить("infobase")); СписокИБ = Кластер_Владелец.ИнформационныеБазы().Список(ОтборИБ); - Если НЕ СписокИБ.Количество() = 0 Тогда + Если ЗначениеЗаполнено(СписокИБ) Тогда ПараметрыКоманды.Вставить("ПараметрыАвторизацииИБ", СписокИБ[0].ПараметрыАвторизации()); КонецЕсли; @@ -184,6 +289,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); - + Кластер_Владелец.Соединения().ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); + КонецПроцедуры // Отключить() 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 428b61b..79ad055 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" @@ -44,13 +44,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -80,32 +80,66 @@ МассивРезультатов = Кластер_Агент.ВыводКоманды(); - МассивПроцессов = Новый Массив(); + ИдентификаторыИБ = Новый Соответствие(); + ИдентификаторыПроцессов = Новый Соответствие(); + МассивСоединений = Новый Массив(); Для Каждого ТекОписание Из МассивРезультатов Цикл - МассивПроцессов.Добавить(Новый Соединение(Кластер_Агент, - Кластер_Владелец, - ИБ_Владелец, - ТекОписание, - Процесс_Владелец)); + Если ЗначениеЗаполнено(ИБ_Владелец) Тогда + ТекИБ_Владелец = ИБ_Владелец; + Иначе + ТекИБ_Ид = ТекОписание["infobase"]; + ТекИБ_Владелец = ИдентификаторыИБ[ТекИБ_Ид]; + Если ТекИБ_Владелец = Неопределено И НЕ Служебный.ЭтоПустойGUID(ТекИБ_Ид) Тогда + ТекИБ_Владелец = Кластер_Владелец.ИнформационныеБазы().Получить(ТекИБ_Ид); + ИдентификаторыИБ.Вставить(ТекИБ_Ид, ТекИБ_Владелец); + КонецЕсли; + КонецЕсли; + Если ЗначениеЗаполнено(Процесс_Владелец) Тогда + ТекПроцесс_Владелец = Процесс_Владелец; + Иначе + ТекПроцесс_Ид = ТекОписание["process"]; + ТекПроцесс_Владелец = ИдентификаторыПроцессов[ТекПроцесс_Ид]; + Если ТекПроцесс_Владелец = Неопределено И НЕ Служебный.ЭтоПустойGUID(ТекПроцесс_Ид) Тогда + ТекПроцесс_Владелец = Кластер_Владелец.РабочиеПроцессы().Получить(ТекПроцесс_Ид); + ИдентификаторыПроцессов.Вставить(ТекПроцесс_Ид, ТекПроцесс_Владелец); + КонецЕсли; + КонецЕсли; + МассивСоединений.Добавить(Новый Соединение(Кластер_Агент, + Кластер_Владелец, + ТекИБ_Владелец, + ТекОписание, + ТекПроцесс_Владелец)); КонецЦикла; - Элементы.Заполнить(МассивПроцессов); + Элементы.Заполнить(МассивСоединений); Элементы.УстановитьАктуальность(); КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -113,7 +147,9 @@ // // Параметры: // Отбор - Структура - Структура отбора соединений (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -123,11 +159,9 @@ // Возвращаемое значение: // Массив - список соединений // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Соединения = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат Соединения; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -135,7 +169,9 @@ // // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка соединений, разделенные "," -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -145,11 +181,9 @@ // Возвращаемое значение: // Соответствие - список соединений // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт - - Соединения = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - Возврат Соединения; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -171,21 +205,28 @@ // Функция возвращает описание соединения // // Параметры: -// Номер - Структура - Номер соединения -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// КакСоответствие - Булево - Истина - результат будет преобразован в соответствие +// НомерИлиИд - Число, Строка - Номер или идентификатор соединения +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание соединения // -Функция Получить(Знач Номер, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт +Функция Получить(Знач НомерИлиИд, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); - Отбор.Вставить("conn-id", Номер); - Соединения = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Если Служебный.ЭтоGUID(НомерИлиИд) Тогда + Отбор.Вставить("connection", НомерИлиИд); + Иначе + Отбор.Вставить("conn-id", Число(НомерИлиИд)); + КонецЕсли; + + Соединения = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если Соединения.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(Соединения) Тогда Возврат Неопределено; КонецЕсли; @@ -208,6 +249,6 @@ Соединение.Отключить(); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Отключить() 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\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\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" index f3c0d64..6d6809a 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\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\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262.os" @@ -53,7 +53,7 @@ МоментАктуальности = 0; КонецЕсли; - ПериодОбновления = 60000; + ПериодОбновления = Служебный.ПериодОбновленияДанныхОбъекта(ЭтотОбъект); Счетчик_Значения = Новый ОбъектыКластера(ЭтотОбъект); @@ -63,14 +63,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Служебный.ТребуетсяОбновление(Счетчик_Свойства, - МоментАктуальности, ПериодОбновления, ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -100,6 +99,23 @@ КонецПроцедуры // ОбновитьДанные() +// Функция признак необходимости обновления данных +// +// Параметры: +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Служебный.ТребуетсяОбновление(Счетчик_Свойства, МоментАктуальности, + ПериодОбновления, РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + // Процедура получает значения счетчика потребления ресурсов // и сохраняет в локальных переменных // @@ -142,18 +158,14 @@ КонецПроцедуры // ОбновитьДанныеЗначений() -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -168,40 +180,68 @@ КонецФункции // Имя() +// Функция возвращает значения счетчика потребления ресурсов +// +// Параметры: +// Отбор - отбор значений счетчика потребления ресурсов +// +// Возвращаемое значение: +// ОбъектыКластера - значения счетчика потребления ресурсов +// +Функция Значения(Знач Отбор = "") Экспорт + + Если Счетчик_Значения.ТребуетсяОбновление(ЗначениеЗаполнено(Отбор)) Тогда + ОбновитьДанныеЗначений(Отбор); + КонецЕсли; + + Возврат Счетчик_Значения; + +КонецФункции // Значения() + // Функция возвращает значение параметра счетчика потребления ресурсов кластера 1С // // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра счетчика потребления ресурсов кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт - ОбновитьДанные(ОбновитьПринудительно); + ОбновитьДанные(РежимОбновления); + + ЗначениеПоля = Неопределено; - Если НЕ Найти(ВРЕг("Имя, name"), ВРег(ИмяПоля)) = 0 Тогда - Возврат Счетчик_Имя; + Если НЕ Найти("ИМЯ, NAME", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Счетчик_Имя; + ИначеЕсли НЕ Найти("ЗНАЧЕНИЯ, VALUES", ВРег(ИмяПоля)) = 0 Тогда + Если РежимОбновления Тогда + ОбновитьДанныеЗначений(); + КонецЕсли; + ЗначениеПоля = Счетчик_Значения; + Иначе + ЗначениеПоля = Счетчик_Свойства.Получить(ИмяПоля); КонецЕсли; - ЗначениеПоля = Счетчик_Свойства.Получить(ИмяПоля); - Если ЗначениеПоля = Неопределено Тогда - - ОписаниеПараметра = ПараметрыОбъекта("ИмяРАК").Получить(ИмяПоля); + + ОписаниеПараметра = ПараметрыОбъекта.ОписаниеСвойств("ИмяРАК").Получить(ИмяПоля); Если НЕ ОписаниеПараметра = Неопределено Тогда ЗначениеПоля = Счетчик_Свойства.Получить(ОписаниеПараметра["Имя"]); КонецЕсли; + КонецЕсли; Возврат ЗначениеПоля; - + КонецФункции // Получить() // Процедура изменяет параметры счетчика потребления ресурсов -// +// // Параметры: // ПараметрыСчетчика - Структура - новые параметры счетчика потребления ресурсов // @@ -233,30 +273,12 @@ КонецЕсли; Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Изменить() -// Функция возвращает значения счетчика потребления ресурсов -// -// Параметры: -// Отбор - отбор значений счетчика потребления ресурсов -// -// Возвращаемое значение: -// ОбъектыКластера - значения счетчика потребления ресурсов -// -Функция Значения(Знач Отбор = "") Экспорт - - Если Счетчик_Значения.ТребуетсяОбновление(ЗначениеЗаполнено(Отбор)) Тогда - ОбновитьДанныеЗначений(Отбор); - КонецЕсли; - - Возврат Счетчик_Значения; - -КонецФункции // Значения() - // Процедура удаляет счетчик потребления ресурсов из кластера 1С -// +// // Параметры: // Имя - Строка - Имя счетчик потребления ресурсов // @@ -282,6 +304,6 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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 c41ded6..e4bc406 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" @@ -37,13 +37,13 @@ // и сохраняет в локальных переменных // // Параметры: -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) -// - Ложь - данные будут получены если истекло время актуальности -// или данные не были получены ранее +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // -Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт +Процедура ОбновитьДанные(РежимОбновления = 0) Экспорт - Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда + Если НЕ ТребуетсяОбновление(РежимОбновления) Тогда Возврат; КонецЕсли; @@ -75,18 +75,30 @@ КонецПроцедуры // ОбновитьДанные() -// Функция возвращает коллекцию параметров объекта +// Функция признак необходимости обновления данных // // Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные +// +// Возвращаемое значение: +// Булево - Истина - требуется обновитьданные +// +Функция ТребуетсяОбновление(РежимОбновления = 0) Экспорт + + Возврат Элементы.ТребуетсяОбновление(РежимОбновления); + +КонецФункции // ТребуетсяОбновление() + +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -94,7 +106,9 @@ // // Параметры: // Отбор - Структура - Структура отбора счетчиков потребления ресурсов (<поле>:<значение>) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -104,11 +118,9 @@ // Возвращаемое значение: // Массив - список счетчиков потребления ресурсов кластера 1С // -Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция Список(Отбор = Неопределено, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокСчетчиков = Элементы.Список(Отбор, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокСчетчиков; + Возврат Элементы.Список(Отбор, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // Список() @@ -117,7 +129,9 @@ // Параметры: // ПоляИерархии - Строка - Поля для построения иерархии списка счетчиков потребления ресурсов, // разделенные "," -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // ЭлементыКакСоответствия - Булево, - Истина - элементы результата будут преобразованы в соответствия // Строка с именами свойств в качестве ключей // <Имя поля> - элементы результата будут преобразованы в соответствия @@ -129,11 +143,9 @@ // <имя поля объекта> - Массив(Соответствие), Соответствие - список счетчиков потребления ресурсов // или следующий уровень // -Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь, ЭлементыКакСоответствия = Ложь) Экспорт +Функция ИерархическийСписок(Знач ПоляИерархии, РежимОбновления = 0, ЭлементыКакСоответствия = Ложь) Экспорт - СписокСчетчиков = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно, ЭлементыКакСоответствия); - - Возврат СписокСчетчиков; + Возврат Элементы.ИерархическийСписок(ПоляИерархии, РежимОбновления, ЭлементыКакСоответствия); КонецФункции // ИерархическийСписок() @@ -155,23 +167,28 @@ // Функция возвращает описание счетчика потребления ресурсов кластера 1С // // Параметры: -// Имя - Строка - Имя счетчика потребления ресурсов -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// ИмяИлиИд - Строка - Имя или идентификатор счетчика потребления ресурсов +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // КакСоответствие - Булево - Истина - результат будет преобразован в соответствие // // Возвращаемое значение: // Соответствие - описание счетчика потребления ресурсов кластера 1С // -Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь, КакСоответствие = Ложь) Экспорт - - ОбновитьДанные(ОбновитьПринудительно); +Функция Получить(Знач ИмяИлиИд, Знач РежимОбновления = 0, КакСоответствие = Ложь) Экспорт Отбор = Новый Соответствие(); - Отбор.Вставить("name", Имя); - СписокСчетчиков = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие); + Если Служебный.ЭтоGUID(ИмяИлиИд) Тогда + Отбор.Вставить("counter", ИмяИлиИд); + Иначе + Отбор.Вставить("name", ИмяИлиИд); + КонецЕсли; + + СписокСчетчиков = Элементы.Список(Отбор, РежимОбновления, КакСоответствие); - Если СписокСчетчиков.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(СписокСчетчиков) Тогда Возврат Неопределено; КонецЕсли; @@ -230,7 +247,7 @@ Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь)); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Добавить() @@ -247,6 +264,6 @@ Счетчик.Удалить(); - ОбновитьДанные(Истина); + ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КонецПроцедуры // Удалить() 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 663c7c8..7aed61a 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" @@ -7,19 +7,20 @@ // Codebase: https://github.com/ArKuznetsov/irac/ // ---------------------------------------------------------- -Перем Агент_СтрокаПодключения; -Перем Агент_ИсполнительКоманд; -Перем Агент_Администраторы; -Перем Агент_Администратор; -Перем Кластеры_Администраторы; -Перем ВыводКоманды; -Перем Кластеры; +Перем Агент_СтрокаПодключения; // строка подключения к RAS +Перем Агент_ИсполнительКоманд; // объект - исполнитель команд +Перем Агент_Администраторы; // доступ к списку администраторов агента +Перем Агент_Администратор; // текущий администратор агента +Перем Кластеры_Администраторы; // список параметров авторизации для кластеров +Перем ИБ_Администраторы; // список параметров авторизации для информационных баз +Перем ВыводКоманды; // результат выполнения команды RAC +Перем Кластеры; // доступ к списку кластеров агента -Перем ПараметрыОбъекта; +Перем ПараметрыОбъекта; // параметры этого объекта управления кластерами -Перем ОбработчикОшибок; +Перем ОбработчикОшибок; // объект обработчик ошибок выполнения команд RAC -Перем Лог; +Перем Лог; // логгер #Область Инициализация @@ -44,7 +45,7 @@ АдресСервиса = "localhost"; ПортСервиса = "1545"; - Если ОписаниеСервиса.Количество() > 0 Тогда + Если ЗначениеЗаполнено(ОписаниеСервиса) Тогда АдресСервиса = ОписаниеСервиса[0]; КонецЕсли; Если ОписаниеСервиса.Количество() > 1 Тогда @@ -141,7 +142,7 @@ ОписаниеСервиса = СтрРазделить(Агент_СтрокаПодключения, ":"); АдресСервиса = "localhost"; - Если ОписаниеСервиса.Количество() > 0 Тогда + Если ЗначениеЗаполнено(ОписаниеСервиса) Тогда АдресСервиса = ОписаниеСервиса[0]; КонецЕсли; @@ -193,18 +194,14 @@ #Область СтандартныеПараметры -// Функция возвращает коллекцию параметров объекта -// -// Параметры: -// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано -// в качестве ключа возвращаемого соответствия +// Функция возвращает описание параметров объекта // // Возвращаемое значение: -// Соответствие - коллекция параметров объекта, для получения/изменения значений +// КомандыОбъекта - описание параметров объекта, // -Функция ПараметрыОбъекта(ИмяПоляКлюча = "Имя") Экспорт +Функция ПараметрыОбъекта() Экспорт - Возврат ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); + Возврат ПараметрыОбъекта; КонецФункции // ПараметрыОбъекта() @@ -212,25 +209,37 @@ // // Параметры: // ИмяПоля - Строка - Имя параметра кластера -// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Произвольный - значение параметра кластера 1С // -Функция Получить(ИмяПоля, ОбновитьПринудительно = Ложь) Экспорт - - Если НЕ Найти(ВРЕг("АдресСервераАдминистрирования, ras-host"), ВРег(ИмяПоля)) = 0 Тогда - Возврат АдресСервераАдминистрирования(); - ИначеЕсли НЕ Найти(ВРЕг("ПортСервераАдминистрирования, ras-port"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ПортСервераАдминистрирования(); - ИначеЕсли НЕ Найти(ВРЕг("ВерсияУтилитыАдминистрирования, rac-version"), ВРег(ИмяПоля)) = 0 Тогда - Возврат ВерсияУтилитыАдминистрирования(); +Функция Получить(ИмяПоля, РежимОбновления = 0) Экспорт + + ЗначениеПоля = Неопределено; + + Если НЕ Найти("АДРЕССЕРВЕРААДМИНИСТРИРОВАНИЯ, RAS-HOST", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = АдресСервераАдминистрирования(); + ИначеЕсли НЕ Найти("ПОРТСЕРВЕРААДМИНИСТРИРОВАНИЯ, RAS-PORT", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ПортСервераАдминистрирования(); + ИначеЕсли НЕ Найти("ВЕРСИЯУТИЛИТЫАДМИНИСТРИРОВАНИЯ, RAC-VERSION", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = ВерсияУтилитыАдминистрирования(); + ИначеЕсли НЕ Найти("СТРОКАПОДКЛЮЧЕНИЯ, CONNECTIONSTRING", ВРег(ИмяПоля)) = 0 Тогда + ЗначениеПоля = Агент_СтрокаПодключения; + ИначеЕсли НЕ Найти("АДМИНИСТРАТОРЫ, ADMINISTRATORS", ВРег(ИмяПоля)) = 0 Тогда + Агент_Администраторы.ОбновитьДанные(РежимОбновления); + ЗначениеПоля = Агент_Администраторы; + ИначеЕсли НЕ Найти("КЛАСТЕРЫ, CLUSTERS", ВРег(ИмяПоля)) = 0 Тогда + Кластеры.ОбновитьДанные(РежимОбновления); + ЗначениеПоля = Кластеры; Иначе ЗначениеПоля = Неопределено; КонецЕсли; Возврат ЗначениеПоля; - + КонецФункции // Получить() #КонецОбласти // СтандартныеПараметры @@ -257,7 +266,7 @@ Возврат Кластеры; -КонецФункции // Кластеры() +КонецФункции // Кластеры() #КонецОбласти // ДочерниеОбъекты @@ -302,6 +311,47 @@ #КонецОбласти // СписокАдминистраторовКластеров +#Область СписокАдминистраторовИБ + +// Процедура добавляет параметры авторизации для указанной информационной базы +// +// Параметры: +// ИБ_Ид - Строка - идентификатор информационной базы в кластере +// Администратор - Строка - администратор информационной базы +// Пароль - Строка - пароль администратора информационной базы +// +Процедура ДобавитьАдминистратораИБ(ИБ_Ид, Администратор, Пароль) Экспорт + + Если НЕ ТипЗнч(ИБ_Администраторы) = Тип("Соответствие") Тогда + ИБ_Администраторы = Новый Соответствие(); + КонецЕсли; + + ИБ_Администраторы.Вставить(ИБ_Ид, Новый Структура("Администратор, Пароль", Администратор, Пароль)); + +КонецПроцедуры // ДобавитьАдминистратораИБ() + +// Функция возвращает параметры авторизации для указанной информационной базы +// +// Параметры: +// ИБ_Ид - Строка - идентификатор информационной базы в кластере +// +// Возвращаемое значение: +// Структура - параметры администратора +// Администратор - Строка - администратор информационной базы +// Пароль - Строка - пароль администратора информационной базы +// +Функция ПолучитьАдминистратораИБ(ИБ_Ид) Экспорт + + Если НЕ ТипЗнч(ИБ_Администраторы) = Тип("Соответствие") Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат ИБ_Администраторы.Получить(ИБ_Ид); + +КонецФункции // ПолучитьАдминистратораИБ() + +#КонецОбласти // СписокАдминистраторовИБ + #Область ИсполнительКоманд // Функция возвращает текущий объект-исполнитель команд @@ -329,7 +379,7 @@ // Устанавливает объект-обработчик, который будет вызываться в случае неудачи вызова ИсполнителяКоманд. // Объект обработчик должен определить метод ОбработатьОшибку с параметрами: // * ПараметрыКоманды - передадутся параметры вызванной команды -// * АгентАдминистрирования - объект АдминистрированиеКластера у которого вызывалась команда +// * АгентАдминистрирования - объект УправлениеКластером1С у которого вызывалась команда // * КодВозврата - на входе - полученный код возврата команды. В качестве выходного параметра // можно присвоить новое значение кода возврата // @@ -350,9 +400,14 @@ // Возвращаемое значение: // Число - Код возврата команды // -Функция ВыполнитьКоманду(ПараметрыКоманды) Экспорт +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + + СтрокаКоманды = Служебный.ПараметрыКомандыВСтроку(ПараметрыКоманды); + СтрокаДляЛога = Служебный.ПараметрыКомандыВСтроку(ПараметрыКоманды, Истина); + + Лог.Отладка("Параметры команды: %1", СтрокаДляЛога); - ВыводКоманды = Агент_ИсполнительКоманд.ВыполнитьКоманду(ПараметрыКоманды); + ВыводКоманды = Агент_ИсполнительКоманд.ВыполнитьКоманду(СтрокаКоманды); ПолученныйКод = Агент_ИсполнительКоманд.КодВозврата(); Если НЕ ПолученныйКод = 0 И НЕ ОбработчикОшибок = Неопределено Тогда @@ -414,7 +469,7 @@ ПоляОбъекта = Новый Соответствие(); - Параметры = ПараметрыОбъекта(ИмяПоляКлюча); + Параметры = ПараметрыОбъекта.ОписаниеСвойств(ИмяПоляКлюча); Для Каждого ТекПараметр Из Параметры Цикл ПоляОбъекта.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], ЭтотОбъект.Получить(ТекПараметр.Ключ)); @@ -474,7 +529,7 @@ Описание = Новый Соответствие(); - Параметры = Кластер.ПараметрыОбъекта(ИмяПоляКлюча); + Параметры = Кластер.ПараметрыОбъекта().ОписаниеСвойств(ИмяПоляКлюча); Для Каждого ТекПараметр Из Параметры Цикл Описание.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], Кластер.Получить(ТекПараметр.Ключ)); @@ -489,7 +544,7 @@ Для Каждого ТекСервер Из Серверы Цикл ПоляОбъекта = Новый Соответствие(); - Параметры = ТекСервер.ПараметрыОбъекта(ИмяПоляКлюча); + Параметры = ТекСервер.ПараметрыОбъекта().ОписаниеСвойств(ИмяПоляКлюча); Для Каждого ТекПараметр Из Параметры Цикл ПоляОбъекта.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], ТекСервер.Получить(ТекПараметр.Ключ)); @@ -536,7 +591,7 @@ ПоляОбъекта = Новый Соответствие(); - Параметры = ТекПрофиль.ПараметрыОбъекта(ИмяПоляКлюча); + Параметры = ТекПрофиль.ПараметрыОбъекта().ОписаниеСвойств(ИмяПоляКлюча); Для Каждого ТекПараметр Из Параметры Цикл ПоляОбъекта.Вставить(ТекПараметр.Значение[ИмяПоляКлюча], ТекПрофиль.Получить(ТекПараметр.Ключ)); diff --git "a/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.json" "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.json" index 46dc841..777255f 100644 --- "a/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.json" +++ "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.json" @@ -85,14 +85,18 @@ "ОставитьБезИзменений" : "leave-as-is" }, "Приложения":{ - "Конфигуратор" : "Designer", - "ТонкийКлиент" : "1CV8C", - "ТолстыйКлиент" : "1CV8", - "COMСоединение" : "COMConnection", - "РасширениеWebСервера" : "WebServerExtension", - "Планировщик" : "JobScheduler", - "ФоновоеЗадание" : "BackgroundJob", - "КонсольКластера" : "SrvrConsole" + "Конфигуратор" : "Designer", + "ТонкийКлиент" : "1CV8C", + "ТолстыйКлиент" : "1CV8", + "COMСоединение" : "COMConnection", + "РасширениеWebСервера" : "WebServerExtension", + "WebКлиент" : "WebClient", + "WebСервис" : "WSConnection", + "HTTPСервис" : "HTTPServiceConnection", + "Планировщик" : "JobScheduler", + "ФоновоеЗадание" : "BackgroundJob", + "КонсольКластера" : "SrvrConsole", + "СервисАдминистрирования" : "RAS" }, "ТипыГруппировкиСчетчиковРесурсов":{ "Пользователи" : "users", @@ -124,8 +128,26 @@ "ЗавершитьТекущийВызов" : "interrupt-current-call", "ЗавершитьСеанс" : "interrupt-session" }, + "РежимыПотокаСоединения":{ + "Клиент" : "client" + }, + "РежимыСоединенияБД":{ + "Нет" : "none", + "Разделяемый" : "shared", + "Монопольный" : "exclusive" + }, + "РежимыСоединенияИБ":{ + "Разделяемый" : "shared", + "Монопольный" : "exclusive" + }, "СпособыПодключения":{ "Локально" : "rac", "Удаленно" : "hirac" + }, + "РежимыОбновленияДанных":{ + "НеОбновлять" : -1, + "ПоТаймеру" : 0, + "Принудительно" : 1, + "ТолькоОсновные" : 2 } } 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 36b200b..23b4b69 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" @@ -2,6 +2,7 @@ "Агенты":{ "Имя" : "Агент", "РежимАдминистрирования" : "agent", + "ПериодОбновления" : 3600000, "Свойства":{ "АдресСервераАдминистрирования" : { "ИмяРАК" : "ras-host" @@ -66,6 +67,7 @@ "Кластеры":{ "Имя" : "Кластер", "РежимАдминистрирования" : "cluster", + "ПериодОбновления" : 3600000, "Свойства":{ "Ид":{ "ИмяРАК" : "cluster" @@ -74,7 +76,9 @@ "ИмяРАК" : "host" }, "ПортСервера":{ - "ИмяРАК" : "port" + "ИмяРАК" : "port", + "Тип" : "Число", + "Описание" : "Содержит номер основного IP-порта менеджера кластера." }, "Имя":{ "ИмяРАК" : "name" @@ -82,54 +86,64 @@ "ИнтервалПерезапуска":{ "ИмяРАК" : "lifetime-limit", "ПоУмолчанию" : 0, - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Периодический перезапуск рабочих процессов через указанное время в секундах." }, "ДопустимыйОбъемПамяти":{ "ИмяРАК" : "max-memory-size", "ПоУмолчанию" : 0, - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Автоматический перезапуск рабочих процессов по превышению объема памяти." }, "ЗащищенноеСоединение":{ "ИмяРАК" : "security-level", "ПоУмолчанию" : 0, - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Уровень безопасности всех соединений процесса менеджера кластера (rmngr)." }, "УровеньОтказоустойчивости":{ "ИмяРАК" : "session-fault-tolerance-level", "ПоУмолчанию" : 0, - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Количество рабочих серверов кластера, выход из строя которых не приводит к аварийному завершению сеансов." }, "РежимРаспределенияНагрузки":{ "ИмяРАК" : "load-balancing-mode", "ПоУмолчанию" : "$Перечисления.РежимыРаспределенияНагрузки.ПоПроизводительности", "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Режим выбора рабочего процесса для соединения.", "МинВерсия" : "8.3.3" }, "ИнтервалПревышенияДопустимогоОбъемаПамяти":{ "ИмяРАК" : "max-memory-time-limit", "ПоУмолчанию" : 0, - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "" }, "ДопустимоеОтклонениеКоличестваОшибокСервера":{ "ИмяРАК" : "errors-count-threshold", "ПоУмолчанию" : 0, "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Допустимое отклонение количества ошибок сервера на один запрос в минуту от среднего значения по всем процессам.", "МинВерсия" : "8.3.6" }, "ПринудительноЗавершатьПроблемныеПроцессы":{ "ИмяРАК" : "kill-problem-processes", "ПоУмолчанию" : "$Перечисления.ДаНет.Нет", "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Если установлено значение Истина, то процессы, признанные проблемными по результатам мониторинга, будут принудительно завершены.", "МинВерсия" : "8.3.6" }, "ВыключенныеПроцессыОстанавливатьЧерез":{ "ИмяРАК" : "expiration-timeout", "ПоУмолчанию" : 0, - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Время принудительного завершения рабочих процессов." }, "ЗаписыватьДампПриЗавершенииПоПревышениюПамяти":{ "ИмяРАК" : "kill-by-memory-with-dump", "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "", "МинВерсия" : "8.3.15" }, "АдминистраторыКластера":{ @@ -166,6 +180,7 @@ "ОбщиеПараметры" : [ { "Шаблон" : "--cluster=%1", + "ПараметрРАК" : "cluster", "Параметр" : "ИдентификаторКластера" }, { @@ -181,6 +196,7 @@ "ОбщиеПараметры" : [ { "Шаблон" : "--cluster=%1", + "ПараметрРАК" : "cluster", "Параметр" : "ИдентификаторКластера" }, { @@ -196,6 +212,7 @@ "ОбщиеПараметры" : [ { "Шаблон" : "--cluster=%1", + "ПараметрРАК" : "cluster", "Параметр" : "ИдентификаторКластера" }, { @@ -217,6 +234,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--cluster=%1", + "ПараметрРАК" : "cluster", "Параметр" : "ИдентификаторКластера", "Обязательный" : true } @@ -228,18 +246,22 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--cluster=%1", + "ПараметрРАК" : "cluster", "Параметр" : "ИдентификаторКластера" }, { "Шаблон" : "--host=%1", + "ПараметрРАК" : "host", "Параметр" : "АдресСервера" }, { "Шаблон" : "--port=%1", + "ПараметрРАК" : "port", "Параметр" : "ПортСервера" }, { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "Имя" } ], @@ -251,10 +273,12 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--cluster=%1", + "ПараметрРАК" : "cluster", "Параметр" : "ИдентификаторКластера" }, { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "Имя" } ], @@ -265,6 +289,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--cluster=%1", + "ПараметрРАК" : "cluster", "Параметр" : "ИдентификаторКластера" }, { @@ -279,12 +304,14 @@ "МенеджерыКластера":{ "Имя" : "МенеджерКластера", "РежимАдминистрирования" : "manager", + "ПериодОбновления" : 3600000, "Свойства":{ "Ид":{ "ИмяРАК" : "manager" }, "ИдПроцессаОС":{ - "ИмяРАК" : "pid" + "ИмяРАК" : "pid", + "Тип" : "Число" }, "Назначение":{ "ИмяРАК" : "using" @@ -293,7 +320,8 @@ "ИмяРАК" : "host" }, "ПортСервера":{ - "ИмяРАК" : "port" + "ИмяРАК" : "port", + "Тип" : "Число" }, "Описание":{ "ИмяРАК" : "descr" @@ -310,6 +338,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--manager=%1", + "ПараметрРАК" : "manager", "Параметр" : "ИдентификаторМенеджера", "Обязательный" : true } @@ -320,6 +349,7 @@ "Серверы":{ "Имя" : "Сервер", "РежимАдминистрирования" : "server", + "ПериодОбновления" : 3600000, "Свойства":{ "Ид":{ "ИмяРАК" : "server" @@ -335,7 +365,7 @@ }, "ПортАгента":{ "ИмяРАК" : "agent-port", - "ПоУмолчанию" : "1540", + "ПоУмолчанию" : 1540, "Использование" : "Чтение, Добавление" }, "ДиапазонПортов":{ @@ -370,7 +400,7 @@ }, "ПортГлавногоМенеджераКластера":{ "ИмяРАК" : "cluster-port", - "ПоУмолчанию" : "1541", + "ПоУмолчанию" : 1541, "Использование" : "Чтение, Добавление" }, "БезопасныйОбъемПамятиРабочихПроцессов":{ @@ -413,6 +443,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true } @@ -424,11 +455,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "Имя", "Обязательный" : true }, { "Шаблон" : "--locale=%1", + "ПараметрРАК" : "locale", "Параметр" : "Локализация" } ], @@ -440,6 +473,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true } @@ -452,6 +486,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true } @@ -462,66 +497,101 @@ "РабочиеПроцессы":{ "Имя" : "РабочийПроцесс", "РежимАдминистрирования" : "process", + "ПериодОбновления" : 300000, "Свойства":{ "Ид":{ "ИмяРАК" : "process" }, "АдресСервера":{ - "ИмяРАК" : "host" + "ИмяРАК" : "host", + "Описание" : "Имя или IP-адрес компьютера, на котором запущен рабочий процесс." }, "ПортСервера":{ - "ИмяРАК" : "port" + "ИмяРАК" : "port", + "Тип" : "Число", + "Описание" : "Номер основного IP-порта рабочего процесса." }, "ИдПроцессаОС":{ - "ИмяРАК" : "pid" + "ИмяРАК" : "pid", + "Тип" : "Число", + "Описание" : "Идентификатор активного рабочего процесса в операционной системе." }, "Активен":{ - "ИмяРАК" : "is-enable" + "ИмяРАК" : "is-enable", + "Описание" : "Устанавливается кластером при необходимости запустить или остановить рабочий процесс." }, "Выполняется":{ - "ИмяРАК" : "running" + "ИмяРАК" : "running", + "Описание" : "Состояние рабочего процесса: 0 – процесс неактивен, 1 – процесс активен." }, "ВремяЗапуска":{ - "ИмяРАК" : "started-at" + "ИмяРАК" : "started-at", + "Тип" : "Дата", + "Описание" : "Момент запуска рабочего процесса. Если процесс не запущен, то содержит нулевую дату." }, "Использование":{ - "ИмяРАК" : "use" + "ИмяРАК" : "use", + "Описание" : "Использование рабочего процесса кластером. 0 – процесс не должен быть запущен, 1 – процесс должен быть запущен, 2 – процесс должен быть запущен только при невозможности запуска процесса со значением 1." }, "ДоступнаяПроизводительность":{ - "ИмяРАК" : "available-perfomance" + "ИмяРАК" : "available-perfomance", + "Тип" : "Число", + "Описание" : "Средняя за последние 5 минут доступная производительность." }, "Емкость":{ - "ИмяРАК" : "capacity" + "ИмяРАК" : "capacity", + "Тип" : "Число", + "Описание" : "Относительная производительность процесса. Может находиться в диапазоне от 1 до 1000." }, "КоличествоСоединений":{ - "ИмяРАК" : "connections" + "ИмяРАК" : "connections", + "Тип" : "Число", + "Описание" : "Количество соединений рабочего процесса с пользовательскими приложениями." }, "ЗанятьПамяти":{ - "ИмяРАК" : "memory-size" + "ИмяРАК" : "memory-size", + "Тип" : "Число", + "Описание" : "Объем виртуальной памяти, занимаемой рабочим процессом, в килобайтах." }, "ВремяПревышенияЗанятойПамяти":{ - "ИмяРАК" : "memory-excess-time" + "ИмяРАК" : "memory-excess-time", + "Тип" : "Число", + "Описание" : "Время, в течение которого объем виртуальной памяти рабочего процесса превышает критическое значение, установленное для кластера, в секундах." }, "ОбъемВыборки":{ - "ИмяРАК" : "selection-size" + "ИмяРАК" : "selection-size", + "Тип" : "Число", + "Описание" : "Количество вызовов, по которым посчитана статистика." }, "ЗатраченоКлиентом":{ - "ИмяРАК" : "avg-back-call-time" + "ИмяРАК" : "avg-back-call-time", + "Тип" : "Число", + "Описание" : "" }, "ЗатраченоВсего":{ - "ИмяРАК" : "avg-call-time" + "ИмяРАК" : "avg-call-time", + "Тип" : "Число", + "Описание" : "Среднее время обслуживания рабочим процессом одного клиентского обращения." }, "ЗатраченоСУБД":{ - "ИмяРАК" : "avg-db-call-time" + "ИмяРАК" : "avg-db-call-time", + "Тип" : "Число", + "Описание" : "Среднее время, затрачиваемое рабочим процессом на обращения к серверу баз данных при выполнении одного клиентского обращения." }, "ЗатраченоМенеджеромБлокировок":{ - "ИмяРАК" : "avg-lock-call-time" + "ИмяРАК" : "avg-lock-call-time", + "Тип" : "Число", + "Описание" : "Среднее время обращения к менеджеру блокировок" }, "ЗатраченоСервером":{ - "ИмяРАК" : "avg-server-call-time" + "ИмяРАК" : "avg-server-call-time", + "Тип" : "Число", + "Описание" : "Среднее время, затрачиваемое самим рабочим процессом на выполнение одного клиентского обращения." }, "КлиентскихПотоков":{ - "ИмяРАК" : "avg-threads" + "ИмяРАК" : "avg-threads", + "Тип" : "Число", + "Описание" : "Среднее количество клиентских потоков, исполняемых рабочим процессом кластера." }, "Резервный":{ "ИмяРАК" : "reserve", @@ -538,10 +608,12 @@ "ИмяРАК" : "host" }, "Процесс_ПортСервера":{ - "ИмяРАК" : "port" + "ИмяРАК" : "port", + "Тип" : "Число" }, "Процесс_ИдОС":{ - "ИмяРАК" : "pid" + "ИмяРАК" : "pid", + "Тип" : "Число" }, "ПолноеИмя":{ "ИмяРАК" : "full-name" @@ -559,19 +631,23 @@ "ИмяРАК" : "net" }, "МаксПользователей":{ - "ИмяРАК" : "max-users-all" + "ИмяРАК" : "max-users-all", + "Тип" : "Число" }, "МаксПользователейТек":{ - "ИмяРАК" : "max-users-cur" + "ИмяРАК" : "max-users-cur", + "Тип" : "Число" }, "Менеджер_АдресСервера":{ "ИмяРАК" : "rmngr-address" }, "Менеджер_ПортСервера":{ - "ИмяРАК" : "rmngr-port" + "ИмяРАК" : "rmngr-port", + "Тип" : "Число" }, "Менеджер_ИдОС":{ - "ИмяРАК" : "rmngr-pid" + "ИмяРАК" : "rmngr-pid", + "Тип" : "Число" }, "КраткоеПредставление":{ "ИмяРАК" : "short-presentation" @@ -595,6 +671,7 @@ "--licenses", { "Шаблон" : "--process=%1", + "ПараметрРАК" : "process", "Параметр" : "ИдентификаторПроцесса", "Обязательный" : true } @@ -614,6 +691,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--process=%1", + "ПараметрРАК" : "process", "Параметр" : "ИдентификаторПроцесса", "Обязательный" : true } @@ -624,6 +702,7 @@ "Сервисы":{ "Имя" : "Сервис", "РежимАдминистрирования" : "service", + "ПериодОбновления" : 300000, "Свойства":{ "Имя":{ "ИмяРАК" : "name" @@ -648,100 +727,126 @@ "ИнформационныеБазы":{ "Имя" : "ИнформационнаяБаза", "РежимАдминистрирования" : "infobase", + "ПериодОбновления" : 300000, "Свойства":{ "Ид":{ - "ИмяРАК" : "infobase" + "ИмяРАК" : "infobase", + "Основное" : true }, "Имя":{ "ИмяРАК" : "name", - "Использование" : "Чтение, Добавление" + "Использование" : "Чтение, Добавление", + "Основное" : true }, "ТипСУБД":{ "ИмяРАК" : "dbms", "ПоУмолчанию" : "$Перечисления.ТипыСУБД.MSSQLServer", - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Тип СУБД, в которой размещается информационная база." }, "АдресСервераСУБД":{ "ИмяРАК" : "db-server", - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Адрес сервера баз данных, в котором расположена информационная база." }, "ИмяБазыСУБД":{ "ИмяРАК" : "db-name", - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Имя базы данных сервера баз данных, в которой размещается информационная база." }, "ИмяПользователяБазыСУБД":{ "ИмяРАК" : "db-user", - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Имя пользователя сервера базы данных, от имени которого сервер 1С:Предприятия обращается к серверу базы данных." }, "ПарольПользователяБазыСУБД":{ "ИмяРАК" : "db-pwd", - "Использование" : "Добавление, Изменение" + "Использование" : "Добавление, Изменение", + "Описание" : "Пароль пользователя сервера баз данных." }, "НачалоБлокировкиСеансов":{ "ИмяРАК" : "denied-from", - "Использование" : "Чтение, Изменение" + "Тип" : "Дата", + "Использование" : "Чтение, Изменение", + "Описание" : "Начало интервала времени, в течение которого действует режим блокировки сеансов. Если указана пустая дата ('00010101'), то без ограничения." }, "ОкончаниеБлокировкиСеансов":{ "ИмяРАК" : "denied-to", - "Использование" : "Чтение, Изменение" + "Тип" : "Дата", + "Использование" : "Чтение, Изменение", + "Описание" : "Конец интервала времени, в течение которого действует режим блокировки сеансов. Если указана пустая дата ('00010101'), то без ограничения." }, "СообщениеБлокировкиСеансов":{ "ИмяРАК" : "denied-message", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Сообщение, выдаваемое при попытке нарушения блокировки сеансов." }, "ПараметрБлокировкиСеансов":{ "ИмяРАК" : "denied-parameter", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Параметр блокировки сеансов. Может содержать произвольную строку." }, "КодРазрешения":{ "ИмяРАК" : "permission-code", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Код разрешения, разрешающий начало сеанса вопреки блокировке сеансов." }, "БлокировкаСеансовВключена":{ "ИмяРАК" : "sessions-deny", "ПоУмолчанию" : "$Перечисления.СостоянияВыключателя.Выключено", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Флаг блокировки сеансов." }, "БлокировкаРегламентныхЗаданийВключена":{ "ИмяРАК" : "scheduled-jobs-deny", "ПоУмолчанию" : "$Перечисления.СостоянияВыключателя.Выключено", - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Флаг блокировки выполнения регламентных заданий информационной базы." }, "ВыдачаЛицензийСервером":{ "ИмяРАК" : "license-distribution", "ПоУмолчанию" : "$Перечисления.ПраваДоступа.Разрешено", - "Использование" : "Чтение, Добавление, Изменение" + "Использование" : "Чтение, Добавление, Изменение", + "Описание" : "Разрешить выдачу лицензий сервером 1С:Предприятия." }, "ПараметрыВнешнегоУправленияСеансами":{ "ИмяРАК" : "external-session-manager-connection-string", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Строка параметров веб сервиса внешнего управления сеансами в формате <имя параметра>=<значение> через символ \";\"" }, "ОбязательноеВнешнееУправлениеСеансами":{ "ИмяРАК" : "external-session-manager-required", "ПоУмолчанию" : "$Перечисления.ДаНет.Нет", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Обязательность использования внешнего управления сеансами." }, "ПрофильБезопасности":{ "ИмяРАК" : "security-profile-name", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Содержит имя профиля безопасности информационной базы." }, "ПрофильБезопасностиБезопасногоРежима":{ "ИмяРАК" : "safe-mode-security-profile-name", "ПоУмолчанию" : "$Перечисления.ПраваДоступа.Разрешено", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Описание" : "Содержит профиль безопасности исполнения кода, внешнего по отношению к конфигурации." }, "СмещениеДат":{ "ИмяРАК" : "date-offset", "ПоУмолчанию" : 2000, - "Использование" : "Чтение, Добавление" + "Использование" : "Чтение, Добавление", + "Описание" : "Смещение дат в информационной базе (0 или 2000)." }, "Описание":{ "ИмяРАК" : "descr", - "Использование" : "Чтение, Изменение" + "Использование" : "Чтение, Изменение", + "Основное" : true, + "Описание" : "Описание информационной базы" }, "РезервироватьРабочийПроцесс":{ "ИмяРАК" : "reserve-working-process", "Использование" : "Чтение, Изменение, Добавление", + "Описание" : "", "МинВерсия" : "8.3.16" } }, @@ -758,6 +863,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--infobase=%1", + "ПараметрРАК" : "infobase", "Параметр" : "ИдентификаторИБ", "Обязательный" : true } @@ -769,6 +875,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--infobase=%1", + "ПараметрРАК" : "infobase", "Параметр" : "ИдентификаторИБ", "Обязательный" : true }, @@ -785,11 +892,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "Имя", "Обязательный" : true }, { "Шаблон" : "--locale=%1", + "ПараметрРАК" : "locale", "Параметр" : "Локализация" }, { @@ -805,6 +914,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--infobase=%1", + "ПараметрРАК" : "infobase", "Параметр" : "ИдентификаторИБ", "Обязательный" : true }, @@ -822,6 +932,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--infobase=%1", + "ПараметрРАК" : "infobase", "Параметр" : "ИдентификаторИБ", "Обязательный" : true }, @@ -845,46 +956,218 @@ "Соединения":{ "Имя" : "Соединение", "РежимАдминистрирования" : "connection", + "ПериодОбновления" : 30000, "Свойства":{ "Ид":{ - "ИмяРАК" : "connection" + "ИмяРАК" : "connection", + "Основное" : true }, "НомерСоединения":{ - "ИмяРАК" : "conn-id" + "ИмяРАК" : "conn-id", + "Тип" : "Число", + "Основное" : true, + "Описание" : "Номер соединения. Имеет смысл, если с данного компьютера установлено несколько соединений." }, "Процесс_Ид":{ - "ИмяРАК" : "process" + "ИмяРАК" : "process", + "Основное" : true, + "Описание" : "Идентификатор рабочего процесса соединения." }, "ИнформационнаяБаза_Ид":{ - "ИмяРАК" : "infobase" + "ИмяРАК" : "infobase", + "Основное" : true, + "Описание" : "Идентификатор информационной базы соединения. Если не выполняется вызов, то пустой GUID." + }, + "Компьютер":{ + "ИмяРАК" : "host", + "Основное" : true, + "Описание" : "Имя компьютера, с которого установлено соединение." }, "Приложение":{ - "ИмяРАК" : "application" + "ИмяРАК" : "application", + "Основное" : true, + "Описание" : "Идентификатор типа приложения, установившего соединение в списке соединений." + }, + "ИдПриложения":{ + "ИмяРАК" : "app-id", + "Описание" : "Идентификатор типа приложения, установившего соединение." }, "НачалоРаботы":{ - "ИмяРАК" : "connected-at" + "ИмяРАК" : "connected-at", + "Основное" : true, + "Тип" : "Дата", + "Описание" : "Время установки соединения." }, "НомерСеанса":{ - "ИмяРАК" : "session-number" + "ИмяРАК" : "session-number", + "Тип" : "Число", + "Основное" : true, + "Описание" : "Номер сеанса, использующего соединение. Если не выполняется вызов, то 0." }, "Заблокировано":{ - "ИмяРАК" : "blocked-by-ls" + "ИмяРАК" : "blocked-by-ls", + "Тип" : "Число", + "Основное" : true, + "Описание" : "Номер сеанса, являющегося причиной ожидания управляемой блокировки, в случае, если сеанс выполняет установку управляемых блокировок и ожидает блокировки, установленные другим сеансом." + }, + "РежимПотока":{ + "ИмяРАК" : "thread-mode", + "Описание" : "(client – клиентский)" + }, + "РежимСоединенияИБ":{ + "ИмяРАК" : "ib-conn-mode", + "Описание" : "Pежим соединения с информационной базой (shared – разделяемый, exclusive – монопольный)." + }, + "РежимСоединенияБД":{ + "ИмяРАК" : "db-conn-mode", + "Описание" : "Режим соединения с базой данных (none – соединения нет, shared – разделяемый, exclusive – монопольный)." + }, + "ЗаблокированоСУБД":{ + "ИмяРАК" : "blocked-by-dbms", + "Тип" : "Число", + "Описание" : "Идентификатор cоединения, блокирующего работу данного соединения (в СУБД)." + }, + "ДанныхВсего":{ + "ИмяРАК" : "bytes-all", + "Тип" : "Число", + "Описание" : "Объем данных, полученный и отправленный соединением." + }, + "Данных5мин":{ + "ИмяРАК" : "bytes-last-5min", + "Тип" : "Число", + "Описание" : "Объем данных, полученных и отправленных соединением за последние 5 минут." + }, + "КоличествоВызововВсего":{ + "ИмяРАК" : "calls-all", + "Тип" : "Число", + "Описание" : "Количество серверных вызовов соединения." + }, + "КоличествоВызовов5мин":{ + "ИмяРАК" : "calls-last-5min", + "Тип" : "Число", + "Описание" : "Количество серверных вызовов соединения за последние 5 минут." + }, + "ДанныхСУБДВсего":{ + "ИмяРАК" : "dbms-bytes-all", + "Тип" : "Число", + "Описание" : "Объем данных, переданных между сервером 1С:Предприятия и сервером баз данных, с момента установки данного соединения." + }, + "ДанныхСУБД5мин":{ + "ИмяРАК" : "dbms-bytes-last-5min", + "Тип" : "Число", + "Описание" : "Объем данных, переданных между сервером 1С:Предприятия и сервером баз данных, за последние 5 минут." + }, + "СоединениеССУБД":{ + "ИмяРАК" : "db-proc-info", + "Описание" : "Если в момент получения списка соединений данное соединение выполняло обращение к СУБД, то свойство содержит идентификатор процесса соединения с СУБД, выполняющего это обращение." + }, + "ЗахваченоСУБД":{ + "ИмяРАК" : "db-proc-took", + "Тип" : "Число", + "Описание" : "Если в момент получения списка соединений данное соединение выполняло обращение к СУБД, то свойство содержит время в секундах, в течение которого выполняется данное обращение к СУБД." + }, + "НачалоЗахватаСУБД":{ + "ИмяРАК" : "db-proc-took-at", + "Тип" : "Дата", + "Описание" : "Момент последнего захвата соединения с сервером баз данных." + }, + "ВремяВызововВсего":{ + "ИмяРАК" : "duration-all", + "Тип" : "Число", + "Описание" : "Полное время серверных вызовов соединения." + }, + "ВремяВызововСУБДВсего":{ + "ИмяРАК" : "duration-all-dbms", + "Тип" : "Число", + "Описание" : "Полное время серверных вызовов соединения СУБД." + }, + "ВремяВызововТекущее":{ + "ИмяРАК" : "duration-current", + "Тип" : "Число", + "Описание" : "Время текущего серверного вызова." + }, + "ВремяВызововСУБДТекущее":{ + "ИмяРАК" : "duration-current-dbms", + "Тип" : "Число", + "Описание" : "Время текущего вызова СУБД." + }, + "ВремяВызовов5мин":{ + "ИмяРАК" : "duration-last-5min", + "Тип" : "Число", + "Описание" : "Время серверных вызовов соединения за последние 5 минут." + }, + "ВремяВызововСУБД5мин":{ + "ИмяРАК" : "duration-last-5min-dbms", + "Тип" : "Число", + "Описание" : "Время серверных вызовов соединения СУБД за последние 5 минут." + }, + "ПамятьТекущая":{ + "ИмяРАК" : "memory-current", + "Тип" : "Число", + "Описание" : "Объем памяти в байтах, занятый с начала выполнения текущего вызова." + }, + "Память5мин":{ + "ИмяРАК" : "memory-last-5min", + "Тип" : "Число", + "Описание" : "Объем памяти в байтах, занятый в процессе вызовов за последние 5 минут." + }, + "ПамятьВсего":{ + "ИмяРАК" : "memory-total", + "Тип" : "Число", + "Описание" : "Объем памяти в байтах, занятый в процессе вызовов с момента начала сеанса." + }, + "ЧтениеТекущее":{ + "ИмяРАК" : "read-current", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, прочитанных с диска с начала выполнения текущего вызова." + }, + "Чтение5мин":{ + "ИмяРАК" : "read-last-5min", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, прочитанных с диска сеансом за последние 5 минут." + }, + "ЧтениеВсего":{ + "ИмяРАК" : "read-total", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, прочитанных с диска сеансом с момента начала сеанса." + }, + "ЗаписьТекущая":{ + "ИмяРАК" : "write-current", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, записанных на диск с начала выполнения текущего вызова." + }, + "Запись5мин":{ + "ИмяРАК" : "write-last-5min", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, записанных на диск сеансом за последние 5 минут." + }, + "ЗаписьВсего":{ + "ИмяРАК" : "write-total", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, записанных на диск сеансом с момента начала сеанса." }, "ВремяРаботыСервисаТекущее":{ "ИмяРАК" : "duration-current-service", - "МинВерсия" : "8.3.12" + "Тип" : "Число", + "Описание" : "Время в миллисекундах, в течение которого соединение с информационной базой выполняет текущий вызов сервиса кластера.", + "МинВерсия" : "8.3.12" }, "ИмяИсполняемогоСервиса":{ "ИмяРАК" : "current-service-name", - "МинВерсия" : "8.3.12" + "Описание" : "Идентификатор сервиса кластера, который вызывается в данный момент, или пустая строка, если вызов сервиса кластера не выполняется.", + "МинВерсия" : "8.3.12" }, "ВремяРаботыСервиса5мин":{ "ИмяРАК" : "duration-last-5min-service", - "МинВерсия" : "8.3.12" + "Тип" : "Число", + "Описание" : "Время в миллисекундах, которое затрачено соединением с информационной базой на вызовы сервисов кластера за последние 5 минут.", + "МинВерсия" : "8.3.12" }, "ВремяРаботыСервисаВсего":{ "ИмяРАК" : "duration-all-service", - "МинВерсия" : "8.3.12" + "Тип" : "Число", + "Описание" : "Время в миллисекундах, которое затрачено соединением с информационной базой на вызовы сервисов кластера с момента установки соединения.", + "МинВерсия" : "8.3.12" } }, "Команды":{ @@ -894,10 +1177,12 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--process=%1", + "ПараметрРАК" : "process", "Параметр" : "ИдентификаторПроцесса" }, { "Шаблон" : "--infobase=%1", + "ПараметрРАК" : "infobase", "Параметр" : "ИдентификаторИБ" }, { @@ -913,6 +1198,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--connection=%1", + "ПараметрРАК" : "connection", "Параметр" : "ИдентификаторСоединения", "Обязательный" : true } @@ -924,13 +1210,20 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--process=%1", + "ПараметрРАК" : "process", "Параметр" : "ИдентификаторПроцесса", "Обязательный" : true }, { "Шаблон" : "--connection=%1", + "ПараметрРАК" : "connection", "Параметр" : "ИдентификаторСоединения", "Обязательный" : true + }, + { + "Авторизация" : "infobase", + "Параметр" : "ПараметрыАвторизацииИБ", + "ПараметрИд" : "ИдентификаторИБ" } ] } @@ -939,127 +1232,246 @@ "Сеансы":{ "Имя" : "Сеанс", "РежимАдминистрирования" : "session", + "ПериодОбновления" : 30000, "Свойства":{ "Ид":{ "ИмяРАК" : "session" }, "НомерСеанса":{ - "ИмяРАК" : "session-id" + "ИмяРАК" : "session-id", + "Тип" : "Число", + "Описание" : "" }, "ИнформационнаяБаза_Ид":{ - "ИмяРАК" : "infobase" + "ИмяРАК" : "infobase", + "Описание" : "" }, "Соединение_Ид":{ - "ИмяРАК" : "connection" + "ИмяРАК" : "connection", + "Описание" : "Описание соединения, которому назначен сеанс. Иначе - Неопределено." }, "Процесс_Ид":{ - "ИмяРАК" : "process" + "ИмяРАК" : "process", + "Описание" : "" }, "Пользователь":{ - "ИмяРАК" : "user-name" + "ИмяРАК" : "user-name", + "Описание" : "" }, "Компьютер":{ - "ИмяРАК" : "host" + "ИмяРАК" : "host", + "Описание" : "Имя или адрес компьютера, установившего сеанс." }, "Приложение":{ - "ИмяРАК" : "app-id" + "ИмяРАК" : "app-id", + "Описание" : "Идентификатор типа приложения, установившего сеанс." }, "Язык":{ - "ИмяРАК" : "locale" + "ИмяРАК" : "locale", + "Описание" : "" }, "ВремяНачала":{ - "ИмяРАК" : "started-at" + "ИмяРАК" : "started-at", + "Тип" : "Дата", + "Описание" : "Время начала сеанса" }, "ПоследняяАктивность":{ - "ИмяРАК" : "last-active-at" + "ИмяРАК" : "last-active-at", + "Тип" : "Дата", + "Описание" : "Время последней активности сеанса" }, "Спящий":{ - "ИмяРАК" : "hibernate" + "ИмяРАК" : "hibernate", + "Тип" : "Булево", + "Описание" : "Сеанс находится в спящем режиме." }, "ЗаснутьЧерез":{ - "ИмяРАК" : "passive-session-hibernate-time" + "ИмяРАК" : "passive-session-hibernate-time", + "Тип" : "Число", + "Описание" : "Интервал времени в секундах с момента последней активности сеанса, по истечении которого сеанс переводится в спящий режим." }, "ЗавершитьЧерез":{ - "ИмяРАК" : "hibernate-session-terminate-time" + "ИмяРАК" : "hibernate-session-terminate-time", + "Тип" : "Число", + "Описание" : "Интервал времени в секундах, по истечении которого спящий сеанс завершается." }, "ЗаблокированоСУБД":{ - "ИмяРАК" : "blocked-by-dbms" + "ИмяРАК" : "blocked-by-dbms", + "Тип" : "Число", + "Описание" : "Идентификатор cоединения, блокирующего работу данного соединения (в СУБД)." }, "ЗаблокированоУпр":{ - "ИмяРАК" : "blocked-by-ls" + "ИмяРАК" : "blocked-by-ls", + "Тип" : "Число", + "Описание" : "Номер сеанса, являющегося причиной ожидания управляемой блокировки, в случае, если сеанс выполняет установку управляемых блокировок и ожидает блокировки, установленные другим сеансом." }, "ДанныхВсего":{ - "ИмяРАК" : "bytes-all" + "ИмяРАК" : "bytes-all", + "Тип" : "Число", + "Описание" : "Объем данных, переданных между сервером 1С:Предприятия и клиентским приложением данного сеанса с момента начала сеанса, в байтах." }, "Данных5мин":{ - "ИмяРАК" : "bytes-last-5min" + "ИмяРАК" : "bytes-last-5min", + "Тип" : "Число", + "Описание" : "Объем данных, переданных между сервером 1С:Предприятия и клиентским приложением данного сеанса за последние 5 минут, в байтах." }, "КоличествоВызововВсего":{ - "ИмяРАК" : "calls-all" + "ИмяРАК" : "calls-all", + "Тип" : "Число", + "Описание" : "Количество вызовов сервера 1С:Предприятия от имени данного сеанса с момента начала сеанса." }, "КоличествоВызовов5мин":{ - "ИмяРАК" : "calls-last-5min" + "ИмяРАК" : "calls-last-5min", + "Тип" : "Число", + "Описание" : "Количество вызовов сервера 1С:Предприятия от имени данного сеанса за последние 5 минут." }, "ДанныхСУБДВсего":{ - "ИмяРАК" : "dbms-bytes-all" + "ИмяРАК" : "dbms-bytes-all", + "Тип" : "Число", + "Описание" : "Количество данных, переданных и полученных от СУБД от имени данного сеанса с момента начала сеанса, в байтах." }, "ДанныхСУБД5мин":{ - "ИмяРАК" : "dbms-bytes-last-5min" + "ИмяРАК" : "dbms-bytes-last-5min", + "Тип" : "Число", + "Описание" : "Количество данных, переданных и полученных от СУБД от имени данного сеанса за последние 5 минут, в байтах." }, "СоединениеССУБД":{ - "ИмяРАК" : "db-proc-info" + "ИмяРАК" : "db-proc-info", + "Описание" : "Номер соединения с СУБД в терминах СУБД в том случае, если в момент получения списка сеансов выполняется запрос к СУБД, открыта транзакция или определены временные таблицы." }, "ЗахваченоСУБД":{ - "ИмяРАК" : "db-proc-took" + "ИмяРАК" : "db-proc-took", + "Тип" : "Число", + "Описание" : "Время соединение с СУБД с момента захвата в миллисекундах." }, - "ВремяЗахватаСУБД":{ - "ИмяРАК" : "db-proc-took-at" + "НачалоЗахватаСУБД":{ + "ИмяРАК" : "db-proc-took-at", + "Тип" : "Дата", + "Описание" : "Момент времени, когда соединение с СУБД было захвачено данным сеансом последний раз." }, "ВремяВызововВсего":{ - "ИмяРАК" : "duration-all" + "ИмяРАК" : "duration-all", + "Тип" : "Число", + "Описание" : "Время исполнения вызовов сервера 1С:Предприятия от имени данного сеанса с момента начала сеанса, в секундах." }, "ВремяВызововСУБДВсего":{ - "ИмяРАК" : "duration-all-dbms" + "ИмяРАК" : "duration-all-dbms", + "Тип" : "Число", + "Описание" : "Время исполнения запросов к СУБД от имени данного сеанса с момента начала сеанса, в миллисекундах." }, "ВремяВызововТекущее":{ - "ИмяРАК" : "duration-current" + "ИмяРАК" : "duration-current", + "Тип" : "Число", + "Описание" : "Интервал времени в миллисекундах, прошедший с момента начала обращения, в случае, если сеанс выполняет обращение к серверу 1С:Предприятия." }, "ВремяВызововСУБДТекущее":{ - "ИмяРАК" : "duration-current-dbms" + "ИмяРАК" : "duration-current-dbms", + "Тип" : "Число", + "Описание" : "Интервал времени в миллисекундах, прошедший с момента начала выполнения запроса, в случае, если сеанс выполняет запрос к СУБД." }, "ВремяВызовов5мин":{ - "ИмяРАК" : "duration-last-5min" + "ИмяРАК" : "duration-last-5min", + "Тип" : "Число", + "Описание" : "Время исполнения вызовов сервера 1С:Предприятия от имени данного сеанса за последние 5 минут, в миллисекундах." }, "ВремяВызововСУБД5мин":{ - "ИмяРАК" : "duration-last-5min-dbms" - }, - "ВремяРаботыСервисаТекущее":{ + "ИмяРАК" : "duration-last-5min-dbms", + "Тип" : "Число", + "Описание" : "Время исполнения запросов к СУБД от имени данного сеанса за последние 5 минут, в миллисекундах." + }, + "ПамятьТекущая":{ + "ИмяРАК" : "memory-current", + "Тип" : "Число", + "Описание" : "Объем памяти в байтах, занятый с начала выполнения текущего вызова." + }, + "Память5мин":{ + "ИмяРАК" : "memory-last-5min", + "Тип" : "Число", + "Описание" : "Объем памяти в байтах, занятый в процессе вызовов за последние 5 минут." + }, + "ПамятьВсего":{ + "ИмяРАК" : "memory-total", + "Тип" : "Число", + "Описание" : "Объем памяти в байтах, занятый в процессе вызовов с момента начала сеанса." + }, + "ЧтениеТекущее":{ + "ИмяРАК" : "read-current", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, прочитанных с диска с начала выполнения текущего вызова." + }, + "Чтение5мин":{ + "ИмяРАК" : "read-last-5min", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, прочитанных с диска сеансом за последние 5 минут." + }, + "ЧтениеВсего":{ + "ИмяРАК" : "read-total", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, прочитанных с диска сеансом с момента начала сеанса." + }, + "ЗаписьТекущая":{ + "ИмяРАК" : "write-current", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, записанных на диск с начала выполнения текущего вызова." + }, + "Запись5мин":{ + "ИмяРАК" : "write-last-5min", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, записанных на диск сеансом за последние 5 минут." + }, + "ЗаписьВсего":{ + "ИмяРАК" : "write-total", + "Тип" : "Число", + "Описание" : "Количество данных в байтах, записанных на диск сеансом с момента начала сеанса." + }, + "ВремяРаботыСервисаТекущее":{ "ИмяРАК" : "duration-current-service", - "МинВерсия" : "8.3.12" + "Тип" : "Число", + "Описание" : "Время, в течение которого сеанс выполняет текущий вызов сервиса кластера, в миллисекундах.", + "МинВерсия" : "8.3.12" }, "ИмяИсполняемогоСервиса":{ "ИмяРАК" : "current-service-name", - "МинВерсия" : "8.3.12" + "Описание" : "Идентификатор сервиса кластера, который вызывается в данный момент, или пустая строка, если вызов сервиса кластера не выполняется.", + "МинВерсия" : "8.3.12" }, "ВремяРаботыСервиса5мин":{ "ИмяРАК" : "duration-last-5min-service", - "МинВерсия" : "8.3.12" + "Тип" : "Число", + "Описание" : "Время, которое затрачено сеансом на вызовы сервисов кластера за последние 5 минут, в миллисекундах.", + "МинВерсия" : "8.3.12" }, "ВремяРаботыСервисаВсего":{ "ИмяРАК" : "duration-all-service", - "МинВерсия" : "8.3.12" + "Тип" : "Число", + "Описание" : "Время в миллисекундах, которое затрачено сеансом на вызовы сервисов кластера с момента начала сеанса.", + "МинВерсия" : "8.3.12" }, "ВремяПроцессораТекущее":{ "ИмяРАК" : "cpu-time-current", - "МинВерсия" : "8.3.13" + "Тип" : "Число", + "Описание" : "Время, затраченное процессором на обработку текущего серверного вызова, в миллисекундах.", + "МинВерсия" : "8.3.13" }, "ВремяПроцессора5мин":{ "ИмяРАК" : "cpu-time-5min-last", - "МинВерсия" : "8.3.13" + "Тип" : "Число", + "Описание" : "Время, которое затрачено процессором на обработку серверных вызовов сеанса за последние 5 минут, в миллисекундах.", + "МинВерсия" : "8.3.13" }, "ВремяПроцессораВсего":{ "ИмяРАК" : "cpu-time-total", - "МинВерсия" : "8.3.13" + "Тип" : "Число", + "Описание" : "Время, которое затрачено процессором на обработку серверных вызовов с момента начала сеанса, в миллисекундах.", + "МинВерсия" : "8.3.13" + }, + "РазделительДанных":{ + "ИмяРАК" : "data-separation", + "Описание" : "" + }, + "IPАдресКлиента":{ + "ИмяРАК" : "client-ip", + "Описание" : "" }, "ЛицензииСеансов":{ "Имя" : "Лицензия", @@ -1093,19 +1505,23 @@ "ИмяРАК" : "net" }, "МаксПользователей":{ - "ИмяРАК" : "max-users-all" + "ИмяРАК" : "max-users-all", + "Тип" : "Число" }, "МаксПользователейТек":{ - "ИмяРАК" : "max-users-cur" + "ИмяРАК" : "max-users-cur", + "Тип" : "Число" }, "Менеджер_АдресСервера":{ "ИмяРАК" : "rmngr-address" }, "Менеджер_ПортСервера":{ - "ИмяРАК" : "rmngr-port" + "ИмяРАК" : "rmngr-port", + "Тип" : "Число" }, "Менеджер_ИдОС":{ - "ИмяРАК" : "rmngr-pid" + "ИмяРАК" : "rmngr-pid", + "Тип" : "Число" }, "КраткоеПредставление":{ "ИмяРАК" : "short-presentation" @@ -1129,6 +1545,7 @@ "--licenses", { "Шаблон" : "--session=%1", + "ПараметрРАК" : "session", "Параметр" : "ИдентификаторСеанса", "Обязательный" : true } @@ -1144,6 +1561,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--infobase=%1", + "ПараметрРАК" : "infobase", "Параметр" : "ИдентификаторИБ" } ] @@ -1154,6 +1572,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--session=%1", + "ПараметрРАК" : "session", "Параметр" : "ИдентификаторСеанса", "Обязательный" : true } @@ -1165,6 +1584,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--session=%1", + "ПараметрРАК" : "session", "Параметр" : "ИдентификаторСеанса", "Обязательный" : true } @@ -1175,6 +1595,7 @@ "Блокировки":{ "Имя" : "Блокировка", "РежимАдминистрирования" : "lock", + "ПериодОбновления" : 20000, "Свойства":{ "Соединение_Ид":{ "ИмяРАК" : "connection" @@ -1186,7 +1607,8 @@ "ИмяРАК" : "object" }, "НачалоБлокировки":{ - "ИмяРАК" : "locked" + "ИмяРАК" : "locked", + "Тип" : "Дата" }, "Описание":{ "ИмяРАК" : "descr" @@ -1199,14 +1621,17 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--infobase=%1", + "ПараметрРАК" : "infobase", "Параметр" : "ИдентификаторИБ" }, { "Шаблон" : "--connection=%1", + "ПараметрРАК" : "connection", "Параметр" : "ИдентификаторСоединения" }, { "Шаблон" : "--session=%1", + "ПараметрРАК" : "session", "Параметр" : "ИдентификаторСеанса" } ] @@ -1216,6 +1641,7 @@ "НазначенияФункциональности":{ "Имя" : "НазначениеФункциональности", "РежимАдминистрирования" : "rule", + "ПериодОбновления" : 3600000, "Свойства":{ "Ид":{ "ИмяРАК" : "rule" @@ -1251,6 +1677,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true } @@ -1262,11 +1689,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true }, { "Шаблон" : "--rule=%1", + "ПараметрРАК" : "rule", "Параметр" : "ИдентификаторТребования", "Обязательный" : true } @@ -1278,11 +1707,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true }, { "Шаблон" : "--position=%1", + "ПараметрРАК" : "position", "Параметр" : "Позиция", "Обязательный" : true } @@ -1295,16 +1726,19 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true }, { "Шаблон" : "--position=%1", + "ПараметрРАК" : "position", "Параметр" : "Позиция", "Обязательный" : true }, { "Шаблон" : "--rule=%1", + "ПараметрРАК" : "rule", "Параметр" : "ИдентификаторТребования", "Обязательный" : true } @@ -1317,11 +1751,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--server=%1", + "ПараметрРАК" : "server", "Параметр" : "ИдентификаторСервера", "Обязательный" : true }, { "Шаблон" : "--rule=%1", + "ПараметрРАК" : "rule", "Параметр" : "ИдентификаторТребования", "Обязательный" : true } @@ -1346,6 +1782,7 @@ "ПрофилиБезопасности":{ "Имя" : "ПрофильБезопасности", "РежимАдминистрирования" : "profile", + "ПериодОбновления" : 3600000, "МинВерсия" : "8.3.3", "Свойства":{ "Имя":{ @@ -1355,27 +1792,27 @@ "ИмяРАК" : "descr", "Использование" : "Чтение, Добавление, Изменение" }, - "Каталоги":{ + "ДоступКаталоги":{ "ИмяРАК" : "directory", "ПоУмолчанию" : "$Перечисления.РежимыДоступа.Список" }, - "COMКлассы":{ + "ДоступCOMКлассы":{ "ИмяРАК" : "com", "ПоУмолчанию" : "$Перечисления.РежимыДоступа.Список" }, - "ВнешниеКомпоненты":{ + "ДоступВнешниеКомпоненты":{ "ИмяРАК" : "addin", "ПоУмолчанию" : "$Перечисления.РежимыДоступа.Список" }, - "Модули":{ + "ДоступМодули":{ "ИмяРАК" : "module", "ПоУмолчанию" : "$Перечисления.РежимыДоступа.Список" }, - "Приложения":{ + "ДоступПриложения":{ "ИмяРАК" : "app", "ПоУмолчанию" : "$Перечисления.РежимыДоступа.Список" }, - "ИнтернетРесурсы":{ + "ДоступИнтернетРесурсы":{ "ИмяРАК" : "inet", "ПоУмолчанию" : "$Перечисления.РежимыДоступа.Список" }, @@ -1466,6 +1903,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1482,6 +1920,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1493,6 +1932,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--alias=%1", + "ПараметрРАК" : "alias", "Параметр" : "ИмяОбъектаПрофиля", "Обязательный" : true } @@ -1537,6 +1977,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1553,6 +1994,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1564,6 +2006,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяОбъектаПрофиля", "Обязательный" : true } @@ -1600,6 +2043,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1616,6 +2060,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1627,6 +2072,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяОбъектаПрофиля", "Обязательный" : true } @@ -1663,6 +2109,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1679,6 +2126,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1690,6 +2138,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяОбъектаПрофиля", "Обязательный" : true } @@ -1727,6 +2176,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1743,6 +2193,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1754,6 +2205,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяОбъектаПрофиля", "Обязательный" : true } @@ -1800,6 +2252,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1816,6 +2269,7 @@ "acl", { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, @@ -1827,6 +2281,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяОбъектаПрофиля", "Обязательный" : true } @@ -1851,11 +2306,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true }, { "Шаблон" : "--access=%1", + "ПараметрРАК" : "access", "Параметр" : "РежимДоступа", "Обязательный" : true } @@ -1867,6 +2324,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true } @@ -1879,6 +2337,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяПрофиля", "Обязательный" : true } @@ -1889,6 +2348,7 @@ "СчетчикиРесурсов":{ "Имя" : "СчетчикРесурсов", "РежимАдминистрирования" : "counter", + "ПериодОбновления" : 300000, "МинВерсия" : "8.3.13", "Свойства":{ "Имя":{ @@ -1897,6 +2357,7 @@ }, "ДлительностьСбора":{ "ИмяРАК" : "collection-time", + "Тип" : "Число", "ПоУмолчанию" : "$Перечисления.ВремяНакопленияСчетчиковРесурсов.ТекущийВызов", "Использование" : "Чтение, Добавление, Изменение" }, @@ -1914,7 +2375,7 @@ "ИмяРАК" : "filter", "Использование" : "Чтение, Добавление, Изменение" }, - "ДлительностьСервереыхВызовов":{ + "ДлительностьСерверныхВызовов":{ "ИмяРАК" : "duration", "ПоУмолчанию" : "$Перечисления.СостоянияСчетчиковРесурсов.Выключен", "Использование" : "Чтение, Добавление, Изменение" @@ -1981,40 +2442,52 @@ "ИмяРАК" : "object" }, "ДлительностьСбора":{ - "ИмяРАК" : "collection-time" + "ИмяРАК" : "collection-time", + "Тип" : "Число" }, "ДлительностьСерверныхВызовов":{ - "ИмяРАК" : "duration" + "ИмяРАК" : "duration", + "Тип" : "Число" }, "ПроцессорноеВремя":{ - "ИмяРАК" : "cpu-time" + "ИмяРАК" : "cpu-time", + "Тип" : "Число" }, "ПотреблениеПамяти":{ - "ИмяРАК" : "memory" + "ИмяРАК" : "memory", + "Тип" : "Число" }, "ОбъемИнформацииСчитаннойСДиска":{ - "ИмяРАК" : "read" + "ИмяРАК" : "read", + "Тип" : "Число" }, "ОбъемИнформацииЗаписаннойНаДиск":{ - "ИмяРАК" : "write" + "ИмяРАК" : "write", + "Тип" : "Число" }, "ДлительностьВызововСУБД":{ - "ИмяРАК" : "duration-dbms" + "ИмяРАК" : "duration-dbms", + "Тип" : "Число" }, "ОбъемИнформацииПереданнойСУБД":{ - "ИмяРАК" : "dbms-bytes" + "ИмяРАК" : "dbms-bytes", + "Тип" : "Число" }, "ДлительностьВызововСервисов":{ - "ИмяРАК" : "service" + "ИмяРАК" : "service", + "Тип" : "Число" }, "КоличествоСерверныхВызовов":{ - "ИмяРАК" : "call" + "ИмяРАК" : "call", + "Тип" : "Число" }, "КоличествоАктивныхСеансов":{ - "ИмяРАК" : "number-of-active-sessions" + "ИмяРАК" : "number-of-active-sessions", + "Тип" : "Число" }, "КоличествоСеансов":{ - "ИмяРАК" : "number-of-sessions" + "ИмяРАК" : "number-of-sessions", + "Тип" : "Число" }, "Время":{ "ИмяРАК" : "time", @@ -2034,6 +2507,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--counter=%1", + "ПараметрРАК" : "counter", "Параметр" : "ИмяСчетчика", "Обязательный" : true } @@ -2045,26 +2519,31 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяСчетчика", "Обязательный" : true }, { "Шаблон" : "--collection-time=%1", + "ПараметрРАК" : "collection-time", "Параметр" : "ДлительностьСбора", "Обязательный" : true }, { "Шаблон" : "--group=%1", + "ПараметрРАК" : "group", "Параметр" : "Группировка", "Обязательный" : true }, { "Шаблон" : "--filter-type=%1", + "ПараметрРАК" : "filter-type", "Параметр" : "ТипОтбора", "Обязательный" : true }, { "Шаблон" : "--filter=%1", + "ПараметрРАК" : "filter", "Параметр" : "Отбор", "Обязательный" : true } @@ -2077,11 +2556,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--counter=%1", + "ПараметрРАК" : "counter", "Параметр" : "ИмяСчетчика", "Обязательный" : true }, { "Шаблон" : "--object=%1", + "ПараметрРАК" : "object", "Параметр" : "Отбор" } ] @@ -2092,6 +2573,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяСчетчика", "Обязательный" : true } @@ -2102,6 +2584,7 @@ "ОграниченияРесурсов":{ "Имя" : "ОграничениеРесурсов", "РежимАдминистрирования" : "limit", + "ПериодОбновления" : 300000, "МинВерсия" : "8.3.13", "Свойства":{ "Имя":{ @@ -2119,46 +2602,57 @@ }, "ДлительностьСерверныхВызовов":{ "ИмяРАК" : "duration", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "ПроцессорноеВремя":{ "ИмяРАК" : "cpu-time", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "ПотреблениеПамяти":{ "ИмяРАК" : "memory", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "ОбъемИнформацииСчитаннойСДиска":{ "ИмяРАК" : "read", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "ОбъемИнформацииЗаписаннойНаДиск":{ "ИмяРАК" : "write", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "ДлительностьВызововСУБД":{ "ИмяРАК" : "duration-dbms", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "ОбъемИнформацииПереданнойСУБД":{ "ИмяРАК" : "dbms-bytes", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "ДлительностьВызововСервисов":{ "ИмяРАК" : "service", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "КоличествоСерверныхВызовов":{ "ИмяРАК" : "call", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "КоличествоАктивныхСеансов":{ "ИмяРАК" : "number-of-active-sessions", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "КоличествоСеансов":{ "ИмяРАК" : "number-of-sessions", + "Тип" : "Число", "Использование" : "Чтение, Добавление, Изменение" }, "СообщениеОбОшибке":{ @@ -2181,6 +2675,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--limit=%1", + "ПараметрРАК" : "limit", "Параметр" : "ИмяОграничения", "Обязательный" : true } @@ -2192,11 +2687,13 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяОграничения", "Обязательный" : true }, { "Шаблон" : "--action=%1", + "ПараметрРАК" : "action", "Параметр" : "Действие", "Обязательный" : true } @@ -2209,6 +2706,7 @@ "ПараметрыКоманды" : [ { "Шаблон" : "--name=%1", + "ПараметрРАК" : "name", "Параметр" : "ИмяОграничения", "Обязательный" : true } diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" index 3213bb5..df3dfc0 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" @@ -7,31 +7,43 @@ // Codebase: https://github.com/ArKuznetsov/irac/ // ---------------------------------------------------------- -Перем РежимыАдминистрирования Экспорт; -Перем ВариантыИспользованияРабочегоСервера Экспорт; -Перем ВариантыИспользованияМенеджераКластера Экспорт; -Перем ВариантыРазмещенияСервисов Экспорт; -Перем СостоянияВыключателя Экспорт; -Перем ДаНет Экспорт; -Перем ПраваДоступа Экспорт; -Перем РежимыРаспределенияНагрузки Экспорт; -Перем СпособыАвторизации Экспорт; -Перем ТипыСУБД Экспорт; -Перем Использование Экспорт; -Перем ТипыНазначенияФункциональности Экспорт; -Перем ОбъектыНазначенияФункциональности Экспорт; -Перем РежимыДоступа Экспорт; -Перем ВидыОбъектовПрофиляБезопасности Экспорт; -Перем ДействияСБазойСУБДПриУдалении Экспорт; -Перем Приложения Экспорт; -Перем ТипыГруппировкиСчетчиковРесурсов Экспорт; -Перем ТипыОтбораСчетчиковРесурсов Экспорт; -Перем ВремяНакопленияСчетчиковРесурсов Экспорт; -Перем СостоянияСчетчиковРесурсов Экспорт; -Перем ПоляОтбораСчетчиковРесурсов Экспорт; -Перем ДействияОграниченияРесурсов Экспорт; -Перем СпособыПодключения Экспорт; - +Перем РежимыАдминистрирования Экспорт; // Перечисление.РежимыАдминистрирования +Перем ВариантыИспользованияРабочегоСервера Экспорт; // Перечисление.ВариантыИспользованияРабочегоСервера +Перем ВариантыИспользованияМенеджераКластера Экспорт; // Перечисление.ВариантыИспользованияМенеджераКластера +Перем ВариантыРазмещенияСервисов Экспорт; // Перечисление.ВариантыРазмещенияСервисов +Перем СостоянияВыключателя Экспорт; // Перечисление.СостоянияВыключателя +Перем ДаНет Экспорт; // Перечисление.ДаНет +Перем ПраваДоступа Экспорт; // Перечисление.ПраваДоступа +Перем РежимыРаспределенияНагрузки Экспорт; // Перечисление.РежимыРаспределенияНагрузки +Перем СпособыАвторизации Экспорт; // Перечисление.СпособыАвторизации +Перем ТипыСУБД Экспорт; // Перечисление.ТипыСУБД +Перем Использование Экспорт; // Перечисление.Использование +Перем ТипыНазначенияФункциональности Экспорт; // Перечисление.ТипыНазначенияФункциональности +Перем ОбъектыНазначенияФункциональности Экспорт; // Перечисление.ОбъектыНазначенияФункциональности +Перем РежимыДоступа Экспорт; // Перечисление.РежимыДоступа +Перем ВидыОбъектовПрофиляБезопасности Экспорт; // Перечисление.ВидыОбъектовПрофиляБезопасности +Перем ДействияСБазойСУБДПриУдалении Экспорт; // Перечисление.ДействияСБазойСУБДПриУдалении +Перем Приложения Экспорт; // Перечисление.Приложения +Перем ТипыГруппировкиСчетчиковРесурсов Экспорт; // Перечисление.ТипыГруппировкиСчетчиковРесурсов +Перем ТипыОтбораСчетчиковРесурсов Экспорт; // Перечисление.ТипыОтбораСчетчиковРесурсов +Перем ВремяНакопленияСчетчиковРесурсов Экспорт; // Перечисление.ВремяНакопленияСчетчиковРесурсов +Перем СостоянияСчетчиковРесурсов Экспорт; // Перечисление.СостоянияСчетчиковРесурсов +Перем ПоляОтбораСчетчиковРесурсов Экспорт; // Перечисление.ПоляОтбораСчетчиковРесурсов +Перем ДействияОграниченияРесурсов Экспорт; // Перечисление.ДействияОграниченияРесурсов +Перем РежимыПотокаСоединения Экспорт; // Перечисление.РежимыПотокаСоединения +Перем РежимыСоединенияБД Экспорт; // Перечисление.РежимыСоединенияБД +Перем РежимыСоединенияИБ Экспорт; // Перечисление.РежимыСоединенияИБ +Перем СпособыПодключения Экспорт; // Перечисление.СпособыПодключения +Перем РежимыОбновленияДанных Экспорт; // Перечисление.РежимыОбновленияДанных + +// Функция возвращает значение перечисления по строковому пути вида "<ИмяПеречисления>.<ЗначениеПеречисления>" +// +// Параметры: +// ПутьКЗначению - Строка - путь к значению перечисления +// +// Возвращаемое значение: +// Строка - значение перечисления +// Функция Значение(Знач ПутьКЗначению) Экспорт МассивПеречисления = СтрРазделить(ПутьКЗначению, "."); @@ -40,16 +52,16 @@ Возврат ЭтотОбъект[МассивПеречисления[0]][МассивПеречисления[1]]; Исключение ВызватьИсключение СтрШаблон("Не найдено значение ""%1"" перечисления ""%2"":%3", - МассивПеречисления[1], - МассивПеречисления[0], - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + МассивПеречисления[1], + МассивПеречисления[0], + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецФункции // Значение() // Процедура инициализирует значения перечисления "РежимыАдминистрирования" // из данных макета "ТипыОбъектовКластера.json" -// +// Процедура ЗаполнитьРежимыАдминистрирования() ДанныеМакета = Служебный.ПрочитатьДанныеИзМакетаJSON("ТипыОбъектовКластера"); @@ -80,11 +92,13 @@ КонецЦикла; + РежимыАдминистрирования = Новый ФиксированнаяСтруктура(РежимыАдминистрирования); + КонецПроцедуры // ЗаполнитьРежимыАдминистрирования() // Процедура инициализирует значения перечислений // из данных макета "Перечисления.json" -// +// Процедура Инициализация() ДанныеМакета = Служебный.ПрочитатьДанныеИзМакетаJSON("Перечисления"); @@ -107,6 +121,9 @@ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецЦикла; + + ЭтотОбъект[ТекПеречисление.Ключ] = Новый ФиксированнаяСтруктура(ЭтотОбъект[ТекПеречисление.Ключ]); + КонецЦикла; ЗаполнитьРежимыАдминистрирования(); 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 06f8c57..d5b3ab8 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" @@ -54,24 +54,128 @@ КонецЕсли; КонецФункции // ОбернутьВКавычки() -// Процедура заполняет значения свойств объ)екта кластера 1С +// Функция проверяет, что переданное значение является числом или строковым представлением числа +// +// Параметры: +// Параметр - Строка, Число - значение для проверки +// +// Возвращаемое значение: +// Булево - Истина - значение является числом или строковым представлением числа +// +Функция ЭтоЧисло(Параметр) Экспорт + + Если ТипЗнч(Параметр) = Тип("Число") Тогда + Возврат Истина; + КонецЕсли; + + Попытка + ПараметрЧислом = Число(Параметр); //@skip-warning + Исключение + Возврат Ложь; + КонецПопытки; + + Возврат Истина; + +КонецФункции // ЭтоЧисло() + +// Функция проверяет, что переданное значение является числом или строковым представлением числа +// +// Параметры: +// Параметр - Строка, Число - значение для проверки +// +// Возвращаемое значение: +// Булево - Истина - значение является числом или строковым представлением числа +// +Функция ЭтоGUID(Параметр) Экспорт + + РВ = Новый РегулярноеВыражение("(?i)[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"); + + Возврат РВ.Совпадает(Параметр); + +КонецФункции // ЭтоGUID() + +// Функция - возвращает Истина если значение является пустым GUID +// +// Параметры: +// Значение - Строка - проверяемое значение +// +// Возвращаемое значение: +// Булево - Истина - значение является пустым GUID +// +Функция ЭтоПустойGUID(Значение) Экспорт + + Возврат (Значение = "00000000-0000-0000-0000-000000000000") ИЛИ НЕ ЗначениеЗаполнено(Значение); + +КонецФункции // ЭтоПустойGUID() + +// Функция возвращает период обновления данных для указанного типа объектов +// +// Параметры: +// Объект - ОбъектКластера - объект кластера 1С +// +// Возвращаемое значение: +// Число - период обновления данных объекта в миллисекундах +// +Функция ПериодОбновленияДанныхОбъекта(Объект) Экспорт + + ПериодОбновления = 60000; + + ТипОбъекта = Объект.ПараметрыОбъекта().ТипОбъекта(); + + Если ТипЗнч(ТипОбъекта) = Тип("Структура") И ТипОбъекта.Свойство("ПериодОбновления") Тогда + ПериодОбновления = ТипОбъекта.ПериодОбновления; + КонецЕсли; + + Возврат ПериодОбновления; + +КонецФункции // ПериодОбновленияДанныхОбъекта() + +// Процедура заполняет значения свойств объекта кластера 1С // // Параметры: // ОбъектКластера - Произвольный - объект, свойства которого будут заполнены // Свойства - Соответствие - переменная, которая будет заполнена свойствами объекта // ДанныеЗаполнения - Соответствие - данные, из которых будут заполнены значения свойств объекта +// ТолькоРасширенные - Булево - Истина - будут заполнены только расширенные свойства объекта // -Процедура ЗаполнитьСвойстваОбъекта(ОбъектКластера, Свойства, ДанныеЗаполнения) Экспорт +Процедура ЗаполнитьСвойстваОбъекта(ОбъектКластера, Свойства, ДанныеЗаполнения, ТолькоРасширенные = Ложь) Экспорт - СтруктураПараметров = ОбъектКластера.ПараметрыОбъекта(); + СтруктураПараметров = ОбъектКластера.ПараметрыОбъекта().ОписаниеСвойств(); - Свойства = Новый Соответствие(); + Если ТипЗнч(Свойства) = Тип("Соответствие") И НЕ ТолькоРасширенные Тогда + Свойства.Очистить(); + КонецЕсли; + + Если НЕ ТипЗнч(Свойства) = Тип("Соответствие") Тогда + Свойства = Новый Соответствие(); + КонецЕсли; Для Каждого ТекЭлемент Из СтруктураПараметров Цикл - ЗначениеПараметра = Служебный.ПолучитьЗначениеИзСтруктуры(ДанныеЗаполнения, - ТекЭлемент.Значение.ИмяРАК, - ТекЭлемент.Значение.ПоУмолчанию); + + Если ТекЭлемент.Значение.Основное И ТолькоРасширенные Тогда + Продолжить; + КонецЕсли; + + ЗначениеПараметра = ПолучитьЗначениеИзСтруктуры(ДанныеЗаполнения, + ТекЭлемент.Значение.ИмяРАК, + ТекЭлемент.Значение.ПоУмолчанию); + + Если ТекЭлемент.Значение.Тип = Тип("Дата") И ТипЗнч(ЗначениеПараметра) = Тип("Строка") Тогда + Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда + ЗначениеПараметра = ПрочитатьДатуJSON(ЗначениеПараметра, ФорматДатыJSON.ISO); + Иначе + ЗначениеПараметра = Дата(1, 1, 1, 0, 0, 0); + КонецЕсли; + ИначеЕсли ТекЭлемент.Значение.Тип = Тип("Число") И ТипЗнч(ЗначениеПараметра) = Тип("Строка") Тогда + Если ЗначениеЗаполнено(ЗначениеПараметра) И ЭтоЧисло(ЗначениеПараметра) Тогда + ЗначениеПараметра = Число(ЗначениеПараметра); + ИначеЕсли НЕ ЗначениеЗаполнено(ЗначениеПараметра) Тогда + ЗначениеПараметра = 0; + КонецЕсли; + КонецЕсли; + Свойства.Вставить(ТекЭлемент.Ключ, ЗначениеПараметра); + КонецЦикла; КонецПроцедуры // ЗаполнитьСвойстваОбъекта() @@ -127,7 +231,7 @@ МассивУпорядочивания = СтрРазделить(ПоляИерархии, ",", Ложь); КонецЕсли; - Если МассивУпорядочивания.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивУпорядочивания) Тогда Возврат МассивСоответствий; КонецЕсли; @@ -172,25 +276,37 @@ Возврат МассивСоответствий; КонецЕсли; - Если Отбор.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(Отбор) Тогда Возврат МассивСоответствий; КонецЕсли; Результат = Новый Массив(); - Для Каждого ТекЭлемент Из МассивСоответствий Цикл + Для й = 0 По МассивСоответствий.ВГраница() Цикл + + ТекЭлемент = МассивСоответствий[й]; + ЭлементСоответствуетОтбору = Истина; + Для Каждого ТекЭлементОтбора Из Отбор Цикл - ПроверяемоеЗначение = ТекЭлемент.Получить(ТекЭлементОтбора.Ключ); + Если ТипЗнч(ТекЭлемент) = Тип("Соответствие") Тогда + ПроверяемоеЗначение = ТекЭлемент.Получить(ТекЭлементОтбора.Ключ); + Иначе + ПроверяемоеЗначение = ТекЭлемент.Получить(ТекЭлементОтбора.Ключ, + Перечисления.РежимыОбновленияДанных.НеОбновлять); + КонецЕсли; Если НЕ ПроверяемоеЗначение = ТекЭлементОтбора.Значение Тогда ЭлементСоответствуетОтбору = Ложь; Прервать; КонецЕсли; КонецЦикла; + Если НЕ ЭлементСоответствуетОтбору Тогда Продолжить; КонецЕсли; + Результат.Добавить(ТекЭлемент); + КонецЦикла; Возврат Результат; @@ -212,7 +328,7 @@ Возврат МассивЭлементов; КонецЕсли; - Если МассивЭлементов.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивЭлементов) Тогда Возврат МассивЭлементов; КонецЕсли; @@ -222,8 +338,9 @@ Результат = Новый Массив(); - Для Каждого ТекЭлемент Из МассивЭлементов Цикл - ЭлементДляДобавления = ОбъектВСоответствие(ТекЭлемент, ПоляЭлемента); + Для й = 0 По МассивЭлементов.ВГраница() Цикл + ЭлементДляДобавления = ОбъектВСоответствие(МассивЭлементов[й], ПоляЭлемента); + ЭлементДляДобавления.Вставить("_thisObject", МассивЭлементов[й]); Результат.Добавить(ЭлементДляДобавления); КонецЦикла; @@ -249,13 +366,112 @@ Результат = Новый Соответствие(); Для Каждого ТекПоле Из ПоляОбъекта Цикл - Результат.Вставить(ТекПоле.Ключ, Объект.Получить(ТекПоле.Ключ)); + Результат.Вставить(ТекПоле.Ключ, + Объект.Получить(ТекПоле.Ключ, Перечисления.РежимыОбновленияДанных.НеОбновлять)); КонецЦикла; Возврат Результат; КонецФункции // ОбъектВСоответствие() +// Функция возвращает строку параметров запуска команды с заменой значений "приватных" параметров +// на символы подстановки и соответствие параметров подстановки и значений +// +// Параметры: +// ПараметрыКоманды - Массив - параметры запуска команды +// Подстановки - Соответствие - (Возвр.) соответствие символов подстановки и значений +// +// Возвращаемое значение: +// Строка - строка параметров запуска команды +// +Функция ПараметрыКомандыВСтрокуСПодстановками(ПараметрыКоманды, Подстановки = Неопределено) Экспорт + + СтрокаПараметров = ""; + + Если НЕ ТипЗнч(Подстановки) = Тип("Соответствие") Тогда + Подстановки = Новый Соответствие(); + КонецЕсли; + + Для Каждого Параметр Из ПараметрыКоманды Цикл + Если ТипЗнч(Параметр) = Тип("Структура") Тогда + Если Параметр.Свойство("Приватный") И Параметр.Приватный Тогда + Подстановка = ПолучитьИмяПодстановки(); + ПараметрДляВыполнения = СтрШаблон("--%1=${%2}", Параметр.Параметр, Подстановка); + Подстановки.Вставить(СтрШаблон("${%1}", Подстановка), Параметр.Значение); + ИначеЕсли Параметр.Свойство("Флаг") И Параметр.Флаг Тогда + ПараметрДляВыполнения = СтрШаблон("--%1", Параметр.Параметр); + Иначе + ПараметрДляВыполнения = СтрШаблон("--%1=%2", Параметр.Параметр, Параметр.Значение); + КонецЕсли; + Иначе + ПараметрДляВыполнения = Параметр; + КонецЕсли; + СтрокаПараметров = СтрШаблон("%1 %2", СтрокаПараметров, ПараметрДляВыполнения); + КонецЦикла; + + Возврат СтрокаПараметров; + +КонецФункции // ПараметрыКомандыВСтрокуСПодстановками() + +// Функция возвращает строку параметров запуска команды +// +// Параметры: +// ПараметрыКоманды - Массив - параметры запуска команды +// ДляЛога - Булево - Истина - приватные значения параметров (пользватель / пароль и т.п.) +// будут скрыты символами "******" +// +// Возвращаемое значение: +// Строка - строка параметров запуска команды +// +Функция ПараметрыКомандыВСтроку(ПараметрыКоманды, ДляЛога = Ложь) Экспорт + + Подстановки = Новый Соответствие(); + + СтрокаПараметров = ПараметрыКомандыВСтрокуСПодстановками(ПараметрыКоманды, Подстановки); + + ПодставитьЗначенияПараметров(СтрокаПараметров, Подстановки, ?(ДляЛога, "******", Неопределено)); + + Возврат СтрокаПараметров; + +КонецФункции // ПараметрыКомандыВСтроку() + +// Процедура выполняет замену символов подстановки на значения +// +// Параметры: +// СтрокаПараметров - Строка - строка для обработки +// Подстановки - Соответствие - соответствие символов подстановки и значений +// ЗначениеПодстановки - Строка - если указано, то подставляется вместо всех символов подстановки +// +Процедура ПодставитьЗначенияПараметров(СтрокаПараметров, Подстановки, Знач ЗначениеПодстановки = Неопределено) + + Если НЕ ТипЗнч(Подстановки) = Тип("Соответствие") Тогда + Возврат; + КонецЕсли; + + Для Каждого ТекЭлемент Из Подстановки Цикл + Значение = ТекЭлемент.Значение; + Если НЕ ЗначениеПодстановки = Неопределено Тогда + Значение = ЗначениеПодстановки; + КонецЕсли; + СтрокаПараметров = СтрЗаменить(СтрокаПараметров, ТекЭлемент.Ключ, Значение); + КонецЦикла; + +КонецПроцедуры // ПодставитьЗначенияПараметров() + +// Функция возвращает случайное имя переменной для выполнения подстановки +// +// Возвращаемое значение: +// Строка - случайное имя переменной +// +Функция ПолучитьИмяПодстановки() Экспорт + + ВремИмя = ПолучитьИмяВременногоФайла("sub"); //@skip-warning + ВремФайл = Новый Файл(ВремИмя); + + Возврат ВремФайл.ИмяБезРасширения; + +КонецФункции // ПолучитьИмяПодстановки() + // Функция преобразует переданный текст вывода команды в массив соответствий // элементы массива создаются по блокам текста, разделенным пустой строкой // пары <ключ, значение> структуры получаются для каждой строки с учетом разделителя ":" @@ -297,7 +513,7 @@ КонецЦикла; - Если Описание.Количество() > 0 Тогда + Если ЗначениеЗаполнено(Описание) Тогда МассивРезультатов.Добавить(Описание); КонецЕсли; @@ -315,15 +531,22 @@ // ОбъектДанных - Произвольный - данные для обновления // МоментАктуальности - Число - момент актуальности данных (мсек) // ПериодОбновления - Число - периодичность обновления (мсек) -// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC) +// РежимОбновления - Число - 1 - обновить данные принудительно (вызов RAC) +// 0 - обновить данные только по таймеру +// -1 - не обновлять данные // // Возвращаемое значение: // Булево - Истина - требуется обновитьданные // -Функция ТребуетсяОбновление(ОбъектДанных, МоментАктуальности, ПериодОбновления, ОбновитьПринудительно = Ложь) Экспорт +Функция ТребуетсяОбновление(ОбъектДанных, МоментАктуальности, ПериодОбновления, РежимОбновления = 0) Экспорт + + Если РежимОбновления = Перечисления.РежимыОбновленияДанных.НеОбновлять Тогда + Возврат Ложь; + ИначеЕсли РежимОбновления = Перечисления.РежимыОбновленияДанных.Принудительно Тогда + Возврат Истина; + КонецЕсли; - Возврат (ОбновитьПринудительно - ИЛИ ОбъектДанных = Неопределено + Возврат (ОбъектДанных = Неопределено ИЛИ (ПериодОбновления < (ТекущаяУниверсальнаяДатаВМиллисекундах() - МоментАктуальности))); КонецФункции // ТребуетсяОбновление() 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 bf31c30..6feb747 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" @@ -19,11 +19,13 @@ // // Параметры: // ТипОбъектов - Строка - имя типа объектов +// ТолькоОсновные - Булево - Истина - получать только основные свойства типа объектов // // Возвращаемое значение: // Массив(Структура) - описания свойств для типа объектов // *Имя - Строка - имя свойства объекта // *ИмяРАК - Строка - имя свойства, как оно возвращается утилитой RAC +// *Основное - Булево - Истина - основное свойство типа объектов // *ПоУмолчанию - Произвольный - значение свойства объекта по умолчанию // *Чтение - Булево - Истина - значение свойства может быть прочитано; // *Добавление - Булево - Истина - значение свойства может быть установлено при добавлении; @@ -31,14 +33,25 @@ // *ПараметрКоманды - Строка - строка параметра команды, как она будет использована // при вызове команды (по умолчанию: "--<ИмяРАК>") // -Функция СвойстваОбъекта(Знач ТипОбъектов) Экспорт +Функция СвойстваОбъекта(Знач ТипОбъектов, ТолькоОсновные = Ложь) Экспорт - Свойства = СвойстваОбъектов.Получить(ВРег(ТипОбъектов)); + ВсеСвойства = СвойстваОбъектов.Получить(ВРег(ТипОбъектов)); - Если Свойства = Неопределено Тогда + Если ВсеСвойства = Неопределено Тогда ВызватьИсключение СтрШаблон("Не найдено описание свойств для объектов ""%1""", ТипОбъектов); КонецЕсли; + Если ТолькоОсновные Тогда + Свойства = Новый Массив(); + Для Каждого ТекСвойство Из ВсеСвойства Цикл + Если ТекСвойство.Основное Тогда + Свойства.Добавить(ТекСвойство); + КонецЕсли; + КонецЦикла; + Иначе + Свойства = ВсеСвойства; + КонецЕсли; + Возврат Свойства; КонецФункции // СвойстваОбъекта() @@ -103,6 +116,8 @@ ОписаниеСвойства = Новый Структура(); ОписаниеСвойства.Вставить("Имя" , ""); ОписаниеСвойства.Вставить("ИмяРАК" , ""); + ОписаниеСвойства.Вставить("Основное" , Тип("Булево")); + ОписаниеСвойства.Вставить("Тип" , Тип("Строка")); ОписаниеСвойства.Вставить("ПараметрКоманды", ""); ОписаниеСвойства.Вставить("ПоУмолчанию" , ""); ОписаниеСвойства.Вставить("Чтение" , Ложь); @@ -119,6 +134,8 @@ // Параметры: // Имя - Строка - имя свойства объекта // ИмяРАК - Строка - имя свойства, как оно возвращается утилитой RAC +// Основное - Булево - признак основного свойства объекта (для ИБ и соединений) +// Тип - Тип - тип свойства объекта // ПоУмолчанию - Произвольный - значение свойства объекта по умолчанию // Использование - Строка, Структура - строка содержащая флаги использования, разделенные "," // (Чтение, Добавление, Изменение) @@ -128,6 +145,7 @@ // Структура - описание свойства типа объектов // *Имя - Строка - имя свойства объекта // *ИмяРАК - Строка - имя свойства, как оно возвращается утилитой RAC +// *Тип - Тип - тип свойства объекта // *ПоУмолчанию - Произвольный - значение свойства объекта по умолчанию // *Чтение - Булево - Истина - значение свойства может быть прочитано; // *Добавление - Булево - Истина - значение свойства может быть установлено при добавлении; @@ -137,6 +155,8 @@ // Функция ПолучитьОписаниеСвойства(Знач Имя , Знач ИмяРАК + , Знач Основное + , Знач Тип , Знач ПоУмолчанию = "" , Знач Использование = "Чтение") @@ -153,13 +173,15 @@ // Если значение начинается со спец. символа "$", то вычисляем как код // используется для получения значений перечислений - Если ВРег(Лев(ПоУмолчанию, 14)) = ВРег("$Перечисления.") Тогда + Если ВРег(Лев(ПоУмолчанию, 14)) = "$ПЕРЕЧИСЛЕНИЯ." Тогда ПоУмолчанию = Перечисления.Значение(Сред(ПоУмолчанию, 15)); КонецЕсли; ОписаниеСвойства = ПолучитьСтруктуруОписанияСвойства(); ОписаниеСвойства.Имя = Имя; ОписаниеСвойства.ИмяРАК = ИмяРАК; + ОписаниеСвойства.Основное = Основное; + ОписаниеСвойства.Тип = Тип; ОписаниеСвойства.ПоУмолчанию = ПоУмолчанию; ОписаниеСвойства.Чтение = Использование.Свойство("Чтение"); ОписаниеСвойства.Добавление = Использование.Свойство("Добавление"); @@ -184,6 +206,7 @@ // Имя - Строка - имя свойства объекта // СтруктураСвойства - Структура - структура с описанием свойства типа объектов // *ИмяРАК - Строка - имя свойства, как оно возвращается утилитой RAC +// *Основное - Строка - флаг основного свойства объекта (для ИБ и соединений) // *ПоУмолчанию - Произвольный - значение свойства объекта по умолчанию // *Использование - Строка, Структура - строка содержащая флаги использования, разделенные "," // (Чтение, Добавление, Изменение) @@ -200,14 +223,22 @@ СтруктураСвойства.Вставить("ПоУмолчанию", ""); КонецЕсли; + Если СтруктураСвойства.Свойство("Тип") Тогда + СтруктураСвойства.Тип = Тип(СтруктураСвойства.Тип); + Иначе + СтруктураСвойства.Вставить("Тип", ТипЗнч(СтруктураСвойства.ПоУмолчанию)); + КонецЕсли; + Если НЕ СтруктураСвойства.Свойство("Использование") Тогда СтруктураСвойства.Вставить("Использование", "Чтение"); КонецЕсли; ОписаниеСвойства = ПолучитьОписаниеСвойства(Имя, - СтруктураСвойства.ИмяРАК, - СтруктураСвойства.ПоУмолчанию, - СтруктураСвойства.Использование); + СтруктураСвойства.ИмяРАК, + СтруктураСвойства.Основное, + СтруктураСвойства.Тип, + СтруктураСвойства.ПоУмолчанию, + СтруктураСвойства.Использование); ОписаниеСвойствОбъекта.Добавить(ОписаниеСвойства); @@ -229,6 +260,7 @@ // как оно было загружено из макета // *Имя - Строка - имя типа объектов // *РежимАдминистрирования - Строка - имя режима утилиты RAC (agent, cluster, infobase и т.п.) +// *ПериодОбновления - Число - период обновления данных объекта в миллисекундах // *МинВерсия - Строка - версия 1С, с которой доступен указанный режим RAC // *Свойства - Структура - структура описаний свойств типа объектов // *Команды - Структура - структура описаний команд типа объектов @@ -252,14 +284,27 @@ ОписаниеТипаОбъектов.Вставить("Свойства", Новый Структура()); КонецЕсли; + ЕстьФлагОсновное = Ложь; + Для Каждого ТекСвойство Из ОписаниеТипаОбъектов.Свойства Цикл + Если ТекСвойство.Значение.Свойство("Основное") Тогда + ЕстьФлагОсновное = Истина; + КонецЕсли; + КонецЦикла; + Для Каждого ТекСвойство Из ОписаниеТипаОбъектов.Свойства Цикл + + Если НЕ ТекСвойство.Значение.Свойство("Основное") Тогда + ТекСвойство.Значение.Вставить("Основное", НЕ ЕстьФлагОсновное); + КонецЕсли; + Если ТекСвойство.Значение.Свойство("РежимАдминистрирования") Тогда ДобавитьСвойстваТипаОбъектов(ТекСвойство.Значение, ТекСвойство.Ключ, ИменаТипа); Иначе ДобавитьОписаниеСвойстваОбъекта(ОписаниеСвойств, - ТекСвойство.Ключ, - ТекСвойство.Значение); + ТекСвойство.Ключ, + ТекСвойство.Значение); КонецЕсли; + КонецЦикла; Для Каждого ТекИмя Из ИменаТипа Цикл @@ -384,6 +429,7 @@ // как оно было загружено из макета // *Имя - Строка - имя типа объектов // *РежимАдминистрирования - Строка - имя режима утилиты RAC (agent, cluster, infobase и т.п.) +// *ПериодОбновления - Число - период обновления данных объекта в миллисекундах // *МинВерсия - Строка - версия 1С, с которой доступен указанный режим RAC // *Свойства - Структура - структура описаний свойств типа объектов // *Команды - Структура - структура описаний команд типа объектов @@ -410,7 +456,10 @@ ОписаниеТипа.Вставить("ИмяКоллекции" , ИмяТипа); ОписаниеТипа.Вставить("ИмяРАК" , ОписаниеТипаОбъектов.РежимАдминистрирования); ОписаниеТипа.Вставить("РежимАдминистрирования", ОписаниеТипаОбъектов.РежимАдминистрирования); - Если ТипЗнч(ИменаРодителя) = Тип("Массив") И ИменаРодителя.Количество() > 0 Тогда + Если ОписаниеТипаОбъектов.Свойство("ПериодОбновления") Тогда + ОписаниеТипа.Вставить("ПериодОбновления" , ОписаниеТипаОбъектов.ПериодОбновления); + КонецЕсли; + Если ТипЗнч(ИменаРодителя) = Тип("Массив") И ЗначениеЗаполнено(ИменаРодителя) Тогда ОписаниеТипа.Вставить("Владелец" , ТипОбъекта(ИменаРодителя[0])); КонецЕсли; @@ -443,10 +492,13 @@ // Параметры: // ИменаТипа - Строка - имена типа // ИменаРодителя - Массив(Строка) - имена родительского типа -// +// +// Возвращаемое значение: +// Массив из Строка - возможные комбинации имен родителя и типа +// Функция ПолучитьВозможныеИменаТипа(ИменаТипа, ИменаРодителя = Неопределено) - Если НЕ (ТипЗнч(ИменаРодителя) = Тип("Массив") И ИменаРодителя.Количество() > 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 fe366fa..ce03e4d 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" @@ -28,7 +28,7 @@ // Процедура устанавливает вывод функции ВыполнитьКоманду мок-исполнителя команд // // Параметры: -// ИсполнительКоманд - МокИсполнительКоманд - мок-объект исполнитель команд +// ИсполнительКоманд - МокИсполнительКоманд - мок-объект исполнитель команд // ПутьКДанным - Строка - Путь к параметрам в структуре параметров кластера // Процедура УстановитьВыводИсполнителяКоманд(ИсполнительКоманд, ПутьКДанным) Экспорт @@ -164,7 +164,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Администраторы"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_АдминистраторыСписок() @@ -179,7 +181,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Администраторы"] + ВозвращаемыеЗначения["Администраторы.Добавление"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_АдминистраторыСписокПослеДобавления() @@ -194,7 +198,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Кластеры"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_КластерыСписок() @@ -216,9 +222,9 @@ ВыводКоманды = ТекКластер["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -238,7 +244,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Кластеры.Администраторы"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_КластерыАдминистраторыСписок() @@ -255,8 +263,10 @@ ВыводКоманды = ВозвращаемыеЗначения["Кластеры.Администраторы"] + ВозвращаемыеЗначения["Кластеры.Администраторы.Добавление"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); + КонецФункции // Вывод_КластерыАдминистраторыСписокПослеДобавления() Функция Вывод_МенеджерыСписок() @@ -272,7 +282,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Менеджеры"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_МенеджерыСписок() @@ -296,9 +308,9 @@ ВыводКоманды = ТекМенеджер["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -317,7 +329,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Серверы"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СерверыСписок() @@ -341,9 +355,9 @@ ВыводКоманды = ТекСервер["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -365,7 +379,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Серверы"] + ВозвращаемыеЗначения["Серверы.Добавление"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СерверыСписокПослеДобавления() @@ -403,7 +419,9 @@ ВремТекст.УстановитьТекст(ВозвращаемыеЗначения["Серверы.Добавление"]); ВыводКоманды = ВремТекст.ПолучитьСтроку(1); - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Добавить"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Добавить"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ИБДобавить() @@ -420,7 +438,9 @@ ВыводКоманды = ВозвращаемыеЗначения["РабочиеПроцессы"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_РабочиеПроцессыСписок() @@ -444,9 +464,9 @@ ВыводКоманды = ТекПроцесс["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -466,7 +486,9 @@ ВыводКоманды = ВозвращаемыеЗначения["РабочиеПроцессы.Лицензии"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_РабочиеПроцессыСписокЛицензии() @@ -490,9 +512,9 @@ ВыводКоманды = ТекПроцесс["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -545,7 +567,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ИБСписок() @@ -568,9 +592,9 @@ ВыводКоманды = СокращенныйТекстОписанияИБ(ТекИБ["ТекстОбъекта"]); - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -598,9 +622,9 @@ ВыводКоманды = ТекИБ["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("ПолноеОписание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("ПолноеОписание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -628,9 +652,9 @@ ВыводКоманды = СтрШаблон("Недостаточно прав пользователя для доступа к базе %1", ТекИБ["name"]); - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("ПолноеОписание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("ПолноеОписание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -659,7 +683,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ИБСписокПослеДобавления() @@ -694,7 +720,9 @@ ВремТекст.УстановитьТекст(ВозвращаемыеЗначения["ИнформационныеБазы.Добавление"]); ВыводКоманды = ВремТекст.ПолучитьСтроку(1); - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Добавить"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Добавить"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ИБДобавить() @@ -717,7 +745,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СеансыСписок() @@ -740,9 +770,9 @@ ВыводКоманды = ТекСеанс["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -762,7 +792,9 @@ ВыводКоманды = ВозвращаемыеЗначения["Сеансы.Лицензии"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СеансыСписокЛицензии() @@ -786,9 +818,9 @@ ВыводКоманды = ТекСеанс["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -817,7 +849,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СоединенияСписок() @@ -842,7 +876,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_БлокировкиСписок() @@ -865,7 +901,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СервисыСписок() @@ -891,7 +929,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_НазначенияФункциональностиСписок() @@ -914,7 +954,9 @@ ВыводКоманды = Назначения[0]["ТекстОбъекта"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Описание"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_НазначенияФункциональностиПараметры() @@ -938,7 +980,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ПрофилиБезопасностиСписок() @@ -965,7 +1009,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ПрофилиБезопасностиКаталогиСписок() @@ -992,7 +1038,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ПрофилиБезопасностиCOMКлассыСписок() @@ -1019,7 +1067,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ПрофилиБезопасностиКаталогиСписок() @@ -1046,7 +1096,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ПрофилиБезопасностиМодулиСписок() @@ -1073,7 +1125,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ПрофилиБезопасностиПриложенияСписок() @@ -1100,7 +1154,9 @@ КонецЦикла; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ПрофилиБезопасностиИнтернетРесурсыСписок() @@ -1117,7 +1173,9 @@ ВыводКоманды = ВозвращаемыеЗначения["СчетчикиРесурсов"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СчетчикиРесурсовСписок() @@ -1142,9 +1200,9 @@ ВыводКоманды = ТекСчетчик["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -1169,7 +1227,9 @@ ВыводКоманды = ВозвращаемыеЗначения["СчетчикиРесурсов.Значения"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Значения"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Значения"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_СчетчикиРесурсовПараметрыЗначения() @@ -1186,7 +1246,9 @@ ВыводКоманды = ВозвращаемыеЗначения["ОграниченияРесурсов"]; - Возврат Новый Структура("ПараметрыКоманды, ВыводКоманды", ПараметрыОбъекта.ПараметрыКоманды("Список"), ВыводКоманды); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Список"); + + Возврат ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды); КонецФункции // Вывод_ОграниченияРесурсовСписок() @@ -1211,9 +1273,9 @@ ВыводКоманды = ТекОграничение["ТекстОбъекта"]; - Результат.Добавить(Новый Структура("ПараметрыКоманды, ВыводКоманды", - ПараметрыОбъекта.ПараметрыКоманды("Описание"), - ВыводКоманды)); + СтрокаПараметров = ПараметрыОбъекта.ПараметрыКомандыСтрокой("Описание"); + + Результат.Добавить(ОписаниеВыводаКоманды(СтрокаПараметров, ВыводКоманды)); КонецЦикла; @@ -1387,7 +1449,7 @@ Параметры = Новый Структура(); ЭтоСерверСборок = Ложь; - ЭтоСерверСборок = ВРег(ПолучитьПеременнуюСреды("CI")) = ВРег("true"); + ЭтоСерверСборок = ВРег(ПолучитьПеременнуюСреды("CI")) = "TRUE"; Параметры.Вставить("ЭтоСерверСборок" , ЭтоСерверСборок); @@ -1419,6 +1481,16 @@ КонецФункции // Параметры() +Функция ОписаниеВыводаКоманды(ПараметрыКоманды, ВыводКоманды) + + ОписаниеВыводаКоманды = Новый Структура(); + ОписаниеВыводаКоманды.Вставить("ПараметрыКоманды", ПараметрыКоманды); + ОписаниеВыводаКоманды.Вставить("ВыводКоманды" , ВыводКоманды); + + Возврат Новый ФиксированнаяСтруктура(ОписаниеВыводаКоманды); + +КонецФункции // ОписаниеВыводаКоманды() + Функция ПрочитатьПараметрыТестированияИзФайла(Знач ПутьКФайлу) Параметры = Новый Структура(); @@ -1436,7 +1508,7 @@ МассивПараметр = СтрРазделить(ТекстМакета.ПолучитьСтроку(й), "="); - Если МассивПараметр.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(МассивПараметр) Тогда Продолжить; КонецЕсли; diff --git a/tests/irac-test.os b/tests/irac-test.os index 6fadef8..22b7150 100644 --- a/tests/irac-test.os +++ b/tests/irac-test.os @@ -244,7 +244,7 @@ Утверждения.ПроверитьРавенство(Имя, """Локальный кластер""", "Ошибка проверки имени кластера"); Утверждения.ПроверитьРавенство(Сервер, "Sport1", "Ошибка проверки сервера кластера"); - Утверждения.ПроверитьРавенство(Порт, "1541", "Ошибка проверки порта кластера"); + Утверждения.ПроверитьРавенство(Порт, 1541, "Ошибка проверки порта кластера"); Утверждения.ПроверитьРавенство(РежимРаспределенияНагрузки , Перечисления.РежимыРаспределенияНагрузки.ПоПроизводительности , "Ошибка проверки режима распределения нагрузки кластера"); @@ -379,7 +379,7 @@ ИдПроцесса = Менеджер.Получить("ИдПроцесса"); - Утверждения.ПроверитьРавенство(ИдПроцесса, "3388", "Ошибка проверки PID процесса менеджера"); + Утверждения.ПроверитьРавенство(ИдПроцесса, 3388, "Ошибка проверки PID процесса менеджера"); КонецПроцедуры // ТестДолжен_ПолучитьПараметрыМенеджера() @@ -430,7 +430,7 @@ Утверждения.ПроверитьРавенство(Имя, """Центральный сервер""", "Ошибка проверки имени сервера"); Утверждения.ПроверитьРавенство(Хост, "Sport1", "Ошибка проверки сервера кластера"); - Утверждения.ПроверитьРавенство(Порт, "1540", "Ошибка проверки порта кластера"); + Утверждения.ПроверитьРавенство(Порт, 1540, "Ошибка проверки порта кластера"); Утверждения.ПроверитьРавенство(ДиапазонПортов, "1560:1591", "Ошибка проверки диапазона портов сервера"); КонецПроцедуры // ТестДолжен_ПолучитьПараметрыСервераКластера() @@ -552,15 +552,15 @@ Процесс = Процессы.Получить("Sport1:5428"); - Процесс.ОбновитьДанные(Истина); + Процесс.ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); АдресСервера = Процесс.Получить("АдресСервера"); ИдПроцессаОС = Процесс.Получить("ИдПроцессаОС"); КоличествоСоединений = Процесс.Получить("КоличествоСоединений"); Утверждения.ПроверитьРавенство(АдресСервера, "Sport1", "Ошибка проверки адреса сервера рабочего процесса"); - Утверждения.ПроверитьРавенство(ИдПроцессаОС, "5428", "Ошибка проверки PID рабочего процесса"); - Утверждения.ПроверитьРавенство(КоличествоСоединений, "7", "Ошибка проверки количества соединений рабочего процесса"); + Утверждения.ПроверитьРавенство(ИдПроцессаОС, 5428, "Ошибка проверки PID рабочего процесса"); + Утверждения.ПроверитьРавенство(КоличествоСоединений, 7, "Ошибка проверки количества соединений рабочего процесса"); КонецПроцедуры // ТестДолжен_ПолучитьПараметрыРабочегоПроцесса() @@ -588,7 +588,7 @@ Процесс = Процессы.Получить("Sport1:5428"); - Процесс.ОбновитьДанные(Истина); + Процесс.ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); Лицензии = Процесс.Лицензии(); @@ -678,10 +678,10 @@ База.УстановитьАдминистратора(ПараметрыТестирования.Параметры().ИБ_Администратор, ПараметрыТестирования.Параметры().ИБ_Пароль); - Имя = База.Получить("Имя", Истина); - Описание = База.Получить("Описание"); + Имя = База.Получить("Имя", Перечисления.РежимыОбновленияДанных.Принудительно); + Описание = База.Получить("Описание"); ПолноеОписание = База.Получить("ПолноеОписание"); - ТипСУБД = База.Получить("ТипСУБД"); + ТипСУБД = База.Получить("ТипСУБД"); ИмяБазыСУБД = База.Получить("ИмяБазыСУБД"); Утверждения.ПроверитьРавенство(Имя, ИБ_Имя, "Ошибка проверки имени базы"); @@ -709,16 +709,16 @@ ПараметрыИБ = Новый Структура(); - ПараметрыИБ.Вставить("ТипСУБД" , Перечисления.ТипыСУБД.MSSQLServer); - ПараметрыИБ.Вставить("АдресСервераСУБД" , "localhost"); - ПараметрыИБ.Вставить("ИмяБазыСУБД" , ИБ_Имя); - ПараметрыИБ.Вставить("ИмяПользователяБазыСУБД" , "_1CSrvUsr1"); - ПараметрыИБ.Вставить("ПарольПользователяБазыСУБД" , "q2w3e4r5"); + ПараметрыИБ.Вставить("ТипСУБД" , Перечисления.ТипыСУБД.MSSQLServer); + ПараметрыИБ.Вставить("АдресСервераСУБД" , "localhost"); + ПараметрыИБ.Вставить("ИмяБазыСУБД" , ИБ_Имя); + ПараметрыИБ.Вставить("ИмяПользователяБазыСУБД" , "_1CSrvUsr1"); + ПараметрыИБ.Вставить("ПарольПользователяБазыСУБД" , "q2w3e4r5"); ПараметрыИБ.Вставить("БлокировкаРегламентныхЗаданийВключена", Перечисления.СостоянияВыключателя.Выключено); - ПараметрыИБ.Вставить("ВыдачаЛицензийСервером" , Перечисления.ПраваДоступа.Разрешено); + ПараметрыИБ.Вставить("ВыдачаЛицензийСервером" , Перечисления.ПраваДоступа.Разрешено); ИБ = Кластер.ИнформационныеБазы(); - ИБ.ОбновитьДанные(Истина); + ИБ.ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); КоличествоИБ = ИБ.Количество(); ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "ИБ.Добавить"); @@ -835,7 +835,7 @@ Для Каждого Сеанс Из Сеансы Цикл ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "Сеансы.Лицензии.Описание"); - Сеанс.ОбновитьДанные(Истина); + Сеанс.ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); Лицензии = Сеанс.Лицензии(); Прервать; @@ -1038,11 +1038,11 @@ Профиль = Профили.Получить("ОсновнойПрофиль"); Имя = Профиль.Получить("Имя"); - Каталоги = Профиль.Получить("Каталоги"); + ДоступКаталоги = Профиль.Получить("ДоступКаталоги"); Конфигуратор = Профиль.Получить("Конфигуратор"); Утверждения.ПроверитьРавенство(Имя, "ОсновнойПрофиль", "Ошибка проверки имени профиля безопасности"); - Утверждения.ПроверитьРавенство(Каталоги + Утверждения.ПроверитьРавенство(ДоступКаталоги , Перечисления.РежимыДоступа.Список , "Ошибка проверки режима доступа к каталогам"); Утверждения.ПроверитьРавенство(Конфигуратор @@ -1298,7 +1298,7 @@ Утверждения.ПроверитьРавенство(ИмяСчетчика, "CounterAll", "Ошибка проверки имени счетчика потребления ресурсов"); Утверждения.ПроверитьРавенство(ДлительностьСбора, - "3600000", + 3600000, "Ошибка проверки длительности сбора счетчика потребления ресурсов"); Утверждения.ПроверитьРавенство(ПотреблениеПамяти, "analyze", @@ -1331,7 +1331,7 @@ ПараметрыТестирования.УстановитьВыводИсполнителяКоманд(АгентКластера.ИсполнительКоманд(), "СчетчикиРесурсов.Значения.Список"); - Счетчик.ОбновитьДанные(Истина); + Счетчик.ОбновитьДанные(Перечисления.РежимыОбновленияДанных.Принудительно); ЗначенияСчетчика = Счетчик.Значения(); @@ -1392,10 +1392,10 @@ "ResourceLimit1", "Ошибка проверки имени ограничения потребления ресурсов"); Утверждения.ПроверитьРавенство(ДлительностьСерверныхВызовов, - "10000", + 10000, "Ошибка проверки длительности серверных вызовов ограничения потребления ресурсов"); Утверждения.ПроверитьРавенство(ПотреблениеПамяти, - "640000000", + 640000000, "Ошибка проверки потребления памяти ограничения потребления ресурсов"); КонецПроцедуры // ТестДолжен_ПолучитьПараметрыОграниченийРесурсов()