Имя: Пароль:
1C
1С v8
как завершить сеанс определенного пользователя в системе? Стоит скуль
0 na1kk
 
19.05.18
14:58
пробовал через ПолучитьСоединенияИнформационнойБазы(), мне ничего не дает, т.к. у нее нет метода отключения из базы пользака.

Через

Коннектор = Новый COMОбъект("V8.COMConnector");
Сервер = Коннектор.ConnectServer("server");
Сервер.AddAuthentication("Login","password");
ИнформационнаяБаза = Сервер.CreateInfoBaseInfo();
ИнформационнаяБаза.Name = "1c";
СоединенияБазы = Сервер.GetIBConnections(ИнформационнаяБаза);

ругается на ком.объект сразу
1 Мимохожий Однако
 
19.05.18
15:00
Открой консоль администратора и удали сеанс пользователя.
2 na1kk
 
19.05.18
15:02
(1) не) нужно программно это сделать
3 Мимохожий Однако
 
19.05.18
15:06
(2) Регламентным заданием или по событию? По кнопке интерактивно, то достаточно (1).
4 na1kk
 
19.05.18
15:07
(3) рег.заданием, но нужно выбивать определенного пользователя, если он есть в системе
5 shuhard
 
19.05.18
15:07
(2)

    
    
    НомерСоединения=0;
    Пользователь=ПараметрыЗапуска[2];
    Пароль=ПараметрыЗапуска[3];
    Попытка
        СтрокаСоединения=СтрокаСоединенияИнформационнойБазы();
        ЭтоСоединение=НомерСоединенияИнформационнойБазы();
        База=ПараметрыЗапуска[1];//"upp_13";
        КОМ=Новый COMОбъект("V82.COMConnector");
        Сервер=ПараметрыЗапуска[0];
        Агент=КОМ.ConnectAgent(Сервер);
        Кластеры=Агент.GetClusters();
        Кластер=Кластеры.GetValue(0);
        Агент.Authenticate(Кластер,"","");        
        РабочиеПроцессы=Агент.GetWorkingProcesses(Кластер);
        // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        Для Каждого Процесс Из РабочиеПроцессы Цикл
            СтрокаСоединенияРП=Процесс.HostName+":"+Формат(Процесс.MainPort,"ЧГ=");
            СоединениеРП=КОМ.ConnectWorkingProcess(СтрокаСоединенияРП);
            СоединениеРП.AddAuthentication(Пользователь,Пароль);
            ОписаниеИБ=СоединениеРП.CreateInfoBaseInfo();
            ОписаниеИБ.Name=База;
            Соединения=СоединениеРП.GetInfoBaseConnections(ОписаниеИБ);
            Для Каждого Соединение Из Соединения Цикл
                Если Соединение.AppID="COMConsole" Тогда
                    Продолжить;
                КонецЕсли;
                Если Соединение.ConnID<>ЭтоСоединение Тогда
                    СоединениеРП.Disconnect(Соединение);  // всех кроме себя
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
        КОМ=Неопределено;
        ЗавершитьРаботуСистемы(Ложь);
    Исключение
        //Сообщить(ОписаниеОшибки());
    КонецПопытки;
6 na1kk
 
19.05.18
15:08
* если он активный в системе
7 na1kk
 
19.05.18
15:08
(5) вот на это и ругается
8 na1kk
 
19.05.18
15:08
КОМ=Новый COMОбъект("V82.COMConnector");
9 na1kk
 
19.05.18
15:08
пишет, что класс не зарегистрирован
10 Мимохожий Однако
 
19.05.18
15:08
Запрет входа в систему недостаточен?
11 Мимохожий Однако
 
19.05.18
15:10
(9) Зарегистрируй comcntrl.dll
12 na1kk
 
19.05.18
15:10
(10) нет, т.к. мне нужно чтобы пользак работал,и потом в опред.момент выбивало его
13 na1kk
 
19.05.18
15:10
(11) спасибо. попробую
14 Cyberhawk
 
19.05.18
15:13
(12) "нужно чтобы пользак работал,и потом в опред.момент выбивало его" // В каком момент? Когда заполнил большой документ и нажал "Записать"? :)
15 shuhard
 
19.05.18
15:14
(9) [пишет, что класс не зарегистрирован]
ну и ?
16 na1kk
 
19.05.18
15:14
(15) ага, я понял) копаю в этом направлении)