В процессе разработки на платформе 1С:Предприятие 8.3 часто возникает необходимость предоставить пользователю или администратору удобный доступ к инструментам управления кластером серверов прямо из интерфейса управляемого приложения. Одним из таких инструментов является встроенная обработка «Управление серверами». В отличие от классической консоли администрирования (MMC), данная обработка является кроссплатформенной и доступна в тонком и веб-клиенте.
В этой статье мы подробно разберем, как программно подключить этот инструмент, исправим распространенные ошибки именования ресурсов в новых версиях платформы и реализуем механизм автоматического запуска при входе в систему.
Прежде чем приступать к написанию кода, проанализируем, как работает этот механизм. Обработка «Управление серверами» не взаимодействует с кластером напрямую. Она использует программный интерфейс, предоставляемый вспомогательной службой ras (Remote Administration Server).
Для корректной работы обработки необходимо убедиться, что:
ras (обычно через команду ras cluster --daemon).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 обработка считывает настройки из локального хранилища пользователя. Напрямую передать структуру параметров в ОткрытьФорму для этой системной обработки зачастую невозможно без её модификации.
Если перед нами стоит задача жестко задать параметры подключения (например, для мониторинга конкретного кластера), рекомендуется следующий алгоритм:
.epf (через меню «Файл» - «Сохранить как»).ПриСозданииНаСервере, добавим чтение параметров из структуры Параметры.Пример модификации кода ПриСозданииНаСервере в сохраненной обработке:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверяем наличие переданных ключей в параметрах формы
Если Параметры.Свойство("АдресСервера") Тогда
Объект.АдресСервера = Параметры.АдресСервера;
КонецЕсли;
Если Параметры.Свойство("Порт") Тогда
Объект.ПортСервера = Параметры.Порт;
КонецЕсли;
// Принудительное подключение, если параметры переданы
Если Не ПустаяСтрока(Объект.АдресСервера) Тогда
ВыполнитьПодключениеНаСервере();
КонецЕсли;
КонецПроцедуры
Важно помнить, что использование обработки управления серверами требует от пользователя специфических прав. На уровне операционной системы и кластера 1С:
ВнешниеОбработки.Подключить.Таким образом, мы рассмотрели полный цикл работы с инструментом StandardServersManagement. Мы выяснили, что ключ к успеху в новых версиях платформы — это правильный путь к ресурсу и понимание того, что обработка является лишь интерфейсом к сервису ras. Используя предложенные методы, вы сможете интегрировать мощный инструмент администрирования непосредственно в свою конфигурацию, обеспечив бесшовную работу системных администраторов в среде 1С.