COM: отключить одно своё тестовое соединение ИБ

Учебные задачи

Получаем настоящий дескриптор соединения из выбранной своей ИБ. Disconnect не принимает сгенерированный UUID.

Где и как запускать

Синтаксический пример толстого клиента Windows, обращающегося к COM-интерфейсу своего отдельного учебного сервера. Эти COM-методы в справке имеют контекст «Интеграция». Здесь COM не запускался.

Подготовка

  1. Подготовьте собственный локальный учебный агент по 127.0.0.1:1540, ровно один свой кластер и один свой рабочий процесс. На компьютере примера должен быть зарегистрирован совместимый V85.COMConnector.

  2. Заполните в своей форме ИмяАгента, ПарольАгента, ИмяАдминистратораКластера и ПарольКластера. Для доступа к своей ИБ нужны ИмяАдминистратораБазы и ПарольБазы. Все пароли вводятся скрыто и не печатаются.

  3. Подключение рабочего процесса берёт действительный адрес из полученного описания процесса. Это не подключение по случайному GUID или к неизвестной машине.

  4. Административный пример запускайте отдельно. В своей целевой ИБ оставьте одно ненужное тестовое соединение с согласованным завершением и без несохранённой работы.

Менеджер = Новый COMОбъект("V85.COMConnector");
Агент = Менеджер.ConnectAgent("127.0.0.1:1540");
Агент.AuthenticateAgent(ИмяАгента, ПарольАгента);
Кластеры = Агент.GetClusters().Выгрузить();
Кластер = Кластеры[0];
Агент.Authenticate(Кластер, ИмяАдминистратораКластера, ПарольКластера);
Процессы = Агент.GetWorkingProcesses(Кластер).Выгрузить();
ОписаниеПроцесса = Процессы[0];
Адрес = ОписаниеПроцесса.HostName + ":" + Формат(ОписаниеПроцесса.MainPort, "ЧГ=0;ЧДЦ=0");
Процесс = Менеджер.ConnectWorkingProcess(Адрес);
Процесс.AuthenticateAdmin(ИмяАдминистратораКластера, ПарольКластера);
Процесс.AddAuthentication(ИмяАдминистратораБазы, ПарольБазы);
Базы = Процесс.GetInfoBases().Выгрузить();
Если Базы.Количество() <> 1 Тогда
    ВызватьИсключение "Нужна одна собственная учебная ИБ";
КонецЕсли;
База = Базы[0];
Соединения = Процесс.GetInfoBaseConnections(База).Выгрузить();
Если Соединения.Количество() <> 1 Тогда
    ВызватьИсключение "Нужно одно согласованное тестовое соединение";
КонецЕсли;
Процесс.Disconnect(Соединения[0]);
Сообщить("Запрошено отключение своего тестового соединения");

Разбор по шагам

  1. Прочитайте реальные соединения собственной ИБ.

  2. Откажитесь при отсутствии или неоднозначном количестве.

  3. Передайте настоящий дескриптор в Disconnect.

Как проверить результат

  1. Не создаётся фиктивный объект Соединение.

  2. Отключение не выдаётся за сохранение работы пользователя.

Ожидаемый результат

Это короткий синтаксический пример для указанного учебного стенда. Здесь он не выполнялся; сообщение после вызова не заменяет отдельную проверку фактического состояния.

На что обратить внимание

  1. Принудительный разрыв может оборвать текущую операцию; счётчик соединений не доказывает владение без собственной подготовки.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.