Имя: Пароль:
1C
1С v8
Не разрываются программно соединения
0 Холодильник
 
24.06.14
18:01
Есть код на vbs, который всегда работал и разрывал текущие соединения с базой.
После установки новой платформы(8.3) он перестал разрывать соединения.

Что надо исправить в коде, или в настройках консоли серв 1С, чтобы соединения разрывались?


Set Bases = CreateObject("Scripting.Dictionary")
Bases.Add "test" , "test"

ServerName = "Serv1C"



For Each Base In Bases

    
    BaseName    =   Bases.Item(Base)

    If Base = BaseName then

        Set connector = CreateObject("V83.COMConnector")
        Set AgentConnection = Connector.ConnectAgent(ServerName & ":1540")
        Set Cluster = AgentConnection.GetClusters()(0)
        AgentConnection.Authenticate Cluster, "", ""
        WorkingProcesses = AgentConnection.GetWorkingProcesses(Cluster)
    
        For Each WorkingProcess In WorkingProcesses
    
            ConnectString = WorkingProcess.HostName & ":" & WorkingProcess.MainPort
            Set WorkingProcessConnection = Connector.ConnectWorkingProcess(ConnectString)
            WorkingProcessConnection.AddAuthentication "Admin", "123"
            Set ibDesc = WorkingProcessConnection.CreateInfoBaseInfo()
            ibDesc.Name = BaseName
            Connections = WorkingProcessConnection.GetInfoBaseConnections(ibDesc)

            For Each Connection In Connections
                       If (Connection.AppID <> "COMConsole") Then
                                                   WorkingProcessConnection.Disconnect Connection
                       Else
                           Set ConnectionCOMConsole = Connection
                    End If
            Next
            
            WorkingProcessConnection.Disconnect ConnectionCOMConsole
    
        Next
    
    End if

    Next
1 Холодильник
 
24.06.14
18:12
2 Холодильник
 
24.06.14
18:16
+ смотрю соединения - после выполнения кода из 1 - польз переподключаются.
т.е. в консоли время начала их сеанса = времени выполнения скрипта
3 Segate
 
24.06.14
18:31
У меня вот такое нормально работает...

    ИД_Скл = СокрЛП(ТекСтр.НомерСоединенияSQL);
    Попытка
        Если УничтожатьSQL Тогда
            Если НЕ ПустаяСтрока(ИД_Скл) Тогда
                Команда_SQL.CommandText = "kill "+СокрЛП(ИД_Скл);
                Команда_SQL.Execute(,1,128);
            КонецЕсли;    
        КонецЕсли;
    Исключение
        Сообщить(ОписаниеОшибки());
        КнопкаВыполнитьНажатие();
        Возврат;
    КонецПопытки;
    Если УничтожатьV8 Тогда
        Если ТекСтр.IConnection <> Неопределено Тогда
            Если НЕ ПустаяСтрока(СокрЛП(ТекСтр.НомерСоединенияV8)) Тогда
                СчПопыток          = 30;
                ОперацияВыполнена = Ложь;
                Пока (НЕ ОперацияВыполнена)и(СчПопыток >0)  Цикл
                    Состояние("Ждем завершения клиентского потока..."+Строка(СчПопыток));
                    ОбработкаПрерыванияПользователя();
                    Попытка
                        ТекСтр.РабочийПроцесс.Disconnect(ТекСтр.IConnection);
                        ОперацияВыполнена = Истина;
                    Исключение
                        ОперацияВыполнена = Ложь;
                        СчПопыток = СчПопыток - 1;
                    КонецПопытки;    
                    Для Сч = 1 по 500000 Цикл
                        // Ждем
                    КонецЦикла;    
                КонецЦикла;
                Если НЕ ОперацияВыполнена Тогда
                    Сообщить("Непредвиденная ошибка уничтожения клиентского потока на сервере V8",СтатусСообщения.ОченьВажное);
                    Возврат;
                КонецЕсли;    
            КонецЕсли;    
        КонецЕсли;    
    КонецЕсли;
4 Segate
 
24.06.14
18:37
Но это для одного конкретного пользователя из списка.... я думаю для всех, ты цикл сможешь сам дописать )