Режим агента конфігуратора, 1С Задзеркалля

Реалізовано у версії 8.3.10.2168.

При розробці та супроводі прикладних рішень конфігуратор використовується не тільки інтерактивно (для зміни конфігурації, опису алгоритмів вбудованою мовою), але й програмно (для оновлення конфігурації, завантаження/вивантаження та ін.). Наприклад, нове середовище розробки EDT частину своїх функцій доручає конфігуратору.

Наша вихідна потреба полягала в тому, щоб прискорити взаємодію EDT та конфігуратора. Але в процесі розробки ми вирішили розширити завдання. У результаті реалізували універсальну можливість роботи з конфігуратором програмно –режим агента. У цьому режимі конфігуратор може виконувати довільну кількість зовнішніх команд, не завершуючи своєї роботи.

Переваги

Головною перевагою цього режиму для EDT є те, що час виконання послідовності таких операцій як завантаження/вивантаження файли та оновлення конфігурації бази даних скоротилося. Адже в пакетному режимі, який EDT використовувала до цього, конфігуратор запускається, виконує одну команду та завершує свою роботу. І якщо потрібно послідовно виконати кілька команд, накладні витрати на запуск/завершення роботи конфігуратора можуть бути значними.

Іншою перевагою, якої не було в наших початкових планах, стало те, що в новому режимі ви можете працювати з конфігуратором через стандартні ssh-клієнти. А це означає, що ви можете автоматизувати свою роботу з конфігуратором. І ось про цю можливість хочеться розповісти докладніше.

Принцип роботи

Для запуску конфігуратора в новому режимі використовується ключ/AgentMode, а також ряд інших допоміжних ключів, що визначають налаштування підключення. Одразу ж,при запуску, вказується інформаційна база, з якою працюватиме конфігуратор.

Після запуску агента можна по черзі працювати з цією інформаційною базою запущеним агентом (за допомогою ssh-команд), так і конфігуратором, запущеним у звичайному режимі. Що означає по черзі?

Щоб керувати конфігуратором із ssh-клієнта, потрібно спочатку підключитися до інформаційної бази. Виглядає це дуже просто:

Після цього можна виконувати будь-які інші ssh-команди.

Якщо виконати ssh-команду відключення, то можна буде (не завершуючи роботу цього агента) запустити ще один конфігуратор у звичайному режимі та працювати з інформаційною базою, як звичайно, наприклад, редагувати модулі. Після завершення роботи звичайного конфігуратора можна знову в працюючому агенті за допомогою ssh-команд підключитися до інформаційної бази (ІБ) і виконати інші операції. Коротко цю послідовність дій можна так:

  • запуск конфігуратора в режимі агента (початок ssh-сесії)

  • підключення до ІБ (ssh-команда)
  • … інші ssh команди
  • відключення від ІБ (ssh-команда)
    • запуск конфігуратора у звичайному режимі
    • … модифікація тієї ж ІБ, до якої підключений агент конфігуратора
  • завершення роботи конфігуратора у звичайному режимі
    • підключення до ІБ (ssh-команда)
    • … інші ssh команди
  • відключення від ІБ (ssh-команда)
    • завершення роботи конфігуратора у режимі агента (ssh-команда, завершення ssh-сесії)

    ssh-команди

    До конфігуратора, запущеного в режимі агента, можна підключатися стандартними ssh-клієнтами PuTTY, WinSCP, MobaXterm та іншими. Поки що ми реалізували тільки самінеобхідні команди:

    • підключення/відключення від інформаційної бази;
    • завантаження/вивантаження конфігурації у файли (у тому числі часткове завантаження та вивантаження);
    • завантаження/вивантаження зовнішніх обробок чи звітів у файли;
    • оновлення конфігурації бази даних;
    • низка службових команд.

    Надалі ми розглядатимемо можливість розширення списку команд.

    Як ми вже говорили на початку, використання протоколу ssh дозволяє вам не тільки працювати з командного рядка у стандартних ssh-клієнтах, але й автоматизувати свою роботу з конфігуратором, використовуючи можливості інших, окрім вбудованого, мов програмування. Наприклад, на мові Python підключення до інформаційної бази та відключення від неї реалізується буквально в декілька рядків (за допомогою бібліотеки Paramiko):

    Особливості

    Конфігуратор сам собою визначає ряд обмежень, накладених взаємодію за протоколом ssh.

    По-перше, через специфіку роботи конфігуратора всі ssh-команди виконуються синхронно, одночасно до інформаційної бази може бути підключений лише один shell ssh-клієнт і кілька sftp-клієнтів.

    По-друге, існує жорстке обмеження "один агент - одна база". Так як автентифікація виконується на ім'я користувача інформаційної бази та паролю, то агент відразу (при запуску) повинен знати, з якою базою він працюватиме.

    І, по-третє, одна з «хотілок», що існували в процесі розробки цього механізму, полягала в тому, щоб знати відсоток виконання команди, яку виконує конфігуратор. Але після пильного аналізу виявилося, що така можливість є далеко не у всіх операцій конфігуратора, а її використання це досить трудомістка задача. Тому поки що ця можливість залишилася у нас устатус побажання.