Имя: Пароль:
1C
1С v8
Удалить соединения 1С
0 Черников
 
28.12.11
12:38
Имеем УПП 1.3.19 платформа 8.2.14.540 клиент серверный вариант

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

Дункан Маклауд! :)
3 shuhard
 
28.12.11
13:20
(2) =)
4 Черников
 
28.12.11
13:30
(1) Сейчас еще раз аккуратно проверим!
5 shuhard
 
28.12.11
13:38
(4) может ты не обратил внимание на главное, на порт сервера, к которому надо присосаться ?
6 Черников
 
28.12.11
14:08
(1)У нас этот код удалил свое соединение, а другие не тронул !