Как программно вызвать и настроить автозапуск обработки «Управление серверами» в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки на платформе 1С:Предприятие 8.3 часто возникает необходимость предоставить пользователю или администратору удобный доступ к инструментам управления кластером серверов прямо из интерфейса управляемого приложения. Одним из таких инструментов является встроенная обработка «Управление серверами». В отличие от классической консоли администрирования (MMC), данная обработка является кроссплатформенной и доступна в тонком и веб-клиенте.

В этой статье мы подробно разберем, как программно подключить этот инструмент, исправим распространенные ошибки именования ресурсов в новых версиях платформы и реализуем механизм автоматического запуска при входе в систему.

Технологическая основа: сервис RAS и ресурс v8res

Прежде чем приступать к написанию кода, проанализируем, как работает этот механизм. Обработка «Управление серверами» не взаимодействует с кластером напрямую. Она использует программный интерфейс, предоставляемый вспомогательной службой ras (Remote Administration Server).

Для корректной работы обработки необходимо убедиться, что:

  1. На сервере 1С запущен исполняемый файл ras (обычно через команду ras cluster --daemon).
  2. Открыт порт (по умолчанию 1545), через который осуществляется управление.
  3. В самой платформе обработка хранится как внутренний ресурс, доступ к которому осуществляется по специальному протоколу v8res://.

Рассмотрим ситуацию, когда при попытке обращения к ресурсу возникает ошибка «Файл не обнаружен». Это часто связано с тем, что в последних релизах платформы (начиная с 8.3.20) разработчики 1С произвели рефакторинг внутренних ресурсов.

Подключение и вызов обработки: актуальные имена ресурсов

Выясним причину ошибки, с которой сталкиваются многие разработчики. В старых версиях платформы обработка имела внутреннее имя StandartServersControl. Однако в современных релизах (8.3.20 и выше) её переименовали. Правильный путь к ресурсу теперь выглядит так: v8res://mngbase/StandardServersManagement.epf.

Разберем по шагам процесс программного открытия этой формы. Для этого нам понадобится создать команду (общую или в конкретном объекте) и прописать логику взаимодействия клиента и сервера.

Шаг 1. Подключение внешней обработки на стороне сервера.

Платформа позволяет подключать внутренние ресурсы как внешние обработки. Проанализируем код серверной процедуры:


&НаСервере
Процедура ПодключитьВнешнююОбработкуНаСервере()
    // Обратите внимание на корректное написание пути для версий 8.3.20+
    // Если версия платформы ниже, используйте "v8res://mngbase/StandartServersControl.epf"
    ПутьКРесурсу = "v8res://mngbase/StandardServersManagement.epf";
    ИмяОбработки = "StandardServersManagement";
    
    Попытка
        ВнешниеОбработки.Подключить(ПутьКРесурсу, ИмяОбработки, Ложь);
    Исключение
        ЗаписьЖурналаРегистрации("Ошибка подключения обработки управления", 
            УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        ВызватьИсключение "Не удалось подключить системную обработку управления серверами.";
    КонецПопытки;
КонецПроцедуры

Шаг 2. Вызов формы на стороне клиента.

После того как обработка зарегистрирована в сеансе, мы можем открыть её стандартным методом ОткрытьФорму.


&НаКлиенте
Процедура ВызватьУправлениеСерверами(Команда)
    ПодключитьВнешнююОбработкуНаСервере();
    
    // Формируем полное имя формы подключенной внешней обработки
    ИмяФормы = "ВнешняяОбработка.StandardServersManagement.Форма.Форма";
    
    Попытка
        ОткрытьФорму(ИмяФормы);
    Исключение
        Сообщить("Ошибка открытия формы управления серверами. Возможно, ресурс недоступен.");
    КонецПопытки;
КонецПроцедуры

Автоматизация запуска при старте системы

Теперь рассмотрим задачу автоматического вызова этого инструмента при запуске информационной базы. Для этого нам необходимо использовать модуль управляемого приложения.

Выясним, в каком обработчике лучше разместить код. Наиболее подходящим является ПриНачалеРаботыСистемы. Однако важно помнить, что этот обработчик выполняется на клиенте, а подключение обработки требует серверного контекста. Следовательно, нам нужно создать общий модуль с признаком «Сервер» и «Вызов сервера».

Предположим, у нас есть серверный общий модуль ОбслуживаниеСистемыПереопределяемый. Поместим туда код подключения:


// В общем модуле (Сервер, Вызов сервера)
Функция ПодключитьОбработкуАдминистрирования() Экспорт
    Попытка
        ВнешниеОбработки.Подключить("v8res://mngbase/StandardServersManagement.epf", "StandardServersManagement", Ложь);
        Возврат Истина;
    Исключение
        Возврат Ложь;
    КонецПопытки;
КонецФункции

Затем в модуле управляемого приложения пропишем запуск:


Процедура ПриНачалеРаботыСистемы()
    // Проверяем права пользователя или другие условия для автозапуска
    Если РольДоступна("ПолныеПрава") Тогда
        Если ОбслуживаниеСистемыПереопределяемый.ПодключитьОбработкуАдминистрирования() Тогда
            ОткрытьФорму("ВнешняяОбработка.StandardServersManagement.Форма.Форма");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Передача параметров и кастомизация

Проанализируем вопрос о передаче параметров подключения (адрес сервера, порт, логин). При стандартном вызове через v8res обработка считывает настройки из локального хранилища пользователя. Напрямую передать структуру параметров в ОткрытьФорму для этой системной обработки зачастую невозможно без её модификации.

Если перед нами стоит задача жестко задать параметры подключения (например, для мониторинга конкретного кластера), рекомендуется следующий алгоритм:

  1. Запустим 1С в режиме «Функции технического специалиста».
  2. Найдем обработку «Управление серверами».
  3. Сохраним её на диск как внешний файл .epf (через меню «Файл» - «Сохранить как»).
  4. Откроем полученный файл в Конфигураторе.
  5. В модуле формы, в процедуре ПриСозданииНаСервере, добавим чтение параметров из структуры Параметры.
  6. В основной конфигурации будем подключать уже эту модифицированную внешнюю обработку, лежащую в общем доступе или в справочнике «Дополнительные отчеты и обработки».

Пример модификации кода ПриСозданииНаСервере в сохраненной обработке:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Проверяем наличие переданных ключей в параметрах формы
    Если Параметры.Свойство("АдресСервера") Тогда
        Объект.АдресСервера = Параметры.АдресСервера;
    КонецЕсли;
    
    Если Параметры.Свойство("Порт") Тогда
        Объект.ПортСервера = Параметры.Порт;
    КонецЕсли;
    
    // Принудительное подключение, если параметры переданы
    Если Не ПустаяСтрока(Объект.АдресСервера) Тогда
        ВыполнитьПодключениеНаСервере();
    КонецЕсли;
КонецПроцедуры

Особенности безопасности

Важно помнить, что использование обработки управления серверами требует от пользователя специфических прав. На уровне операционной системы и кластера 1С:

Таким образом, мы рассмотрели полный цикл работы с инструментом StandardServersManagement. Мы выяснили, что ключ к успеху в новых версиях платформы — это правильный путь к ресурсу и понимание того, что обработка является лишь интерфейсом к сервису ras. Используя предложенные методы, вы сможете интегрировать мощный инструмент администрирования непосредственно в свою конфигурацию, обеспечив бесшовную работу системных администраторов в среде 1С.

← На главную