НО после убиения сеансов происходит задержка в несколько секунд ! ,
не говоря уже о выводе сообщения !!! Может есть способ изменить данное поведение.
Ускорить закрытие и убрать оповещение...
>> Убить процесс
Это я понимаю... Но как понять что это мой процесс ?
Допустим открыто несколько экземпляров конфигуратора с разными базами.
Но нужно закрыть только отладочный сеанс и сам конфигуратор по одной базе !!!
если прав хватает, из предприятия, через ком соединение, агента сервера, просто завершаешь свои/нужные сеансы,
через пару секунд, твои запущенные 1С-ки выдадут сообщение: Сеанс завершен Администратором (что то типа такого)
>> из предприятия, через ком соединение, агента сервера, просто завершаешь свои/нужные сеансы
Эээ... а можно пример. Кажется, это будет то что нужно...
(7) по идее сначала надо получить список текущих соединений, со всеми атрибутами, НомерамиСеансов и т.д.
и по этим атрибутам затем завершать
вот пример, какой-то старой процедуры, посмотрите, может что из нее и пригодится
Процедура ОтключитьСеансы(прНомерСоединения = Неопределено, прНомерСеанса = Неопределено)
лкСоединения = АгентСервера.GetInfoBaseSessions(глКластер, глБазаАгента);
Для каждого Сеанс из лкСоединения Цикл
//Если нРег(Сеанс.AppID) = "backgroundjob" ИЛИ нРег(Сеанс.AppID) = "designer" Тогда
лкАППИмя = НРег(Сеанс.AppID);
Если лкАППИмя = "backgroundjob"
или лкАППИмя = НРег("COMConsole") Тогда
// если это фонового задания, то не отключаем
Продолжить;
КонецЕсли;
Если прНомерСоединения = Неопределено Тогда
АгентСервера.TerminateSession(глКластер, Сеанс);
ИначеЕсли Сеанс.SessionID = прНомерСеанса
и Сеанс.connection.ConnID = прНомерСоединения Тогда
АгентСервера.TerminateSession(глКластер, Сеанс);
КонецЕсли;
КонецЦикла;
лкСоединения = АгентСервера.GetInfoBaseConnections(глКластер, глБазаАгента);
// Разорвать соединения клиентских приложений.
Для Каждого Соединение Из лкСоединения Цикл
Если нРег(Соединение.Application) = "backgroundjob" Тогда
// если это соединение конфигуратора или фонового задания, то не отключаем
Продолжить;
КонецЕсли;
Если прНомерСоединения = Неопределено Тогда
WorkingProcessConnection.Disconnect(Соединение);
ИначеЕсли Соединение.SessionID = прНомерСеанса
и Соединение.ConnID = прНомерСоединения Тогда
WorkingProcessConnection.Disconnect(Соединение);
КонецЕсли;
КонецЦикла
КонецПроцедуры
Спасибо всем !!! Вопрос закрыт.
>>FatPanzer, soft_wind. "Старая процедура" рулит :) Очень помогло...
Оказывается не у одного меня возник подобный интерес...
нагуглил прям оформленную статью, которая доходчиво все объяснила.
https://infostart.ru/1c/articles/77671/