Имя: Пароль:
1C
1С v8
Команда cmd для отключения (удаления) всех сеансов 1С на компьютере.
0 Fedor
 
04.10.12
13:49
Подскажите, пожалуйста, команду cmd для отключения (удаления) всех сеансов 1С на компьютере.
1 PR
 
04.10.12
13:49
Зачем?
2 Maxus43
 
04.10.12
13:49
где? на сервере или процессы 1с8?
3 Heckfy
 
04.10.12
13:50
taskkill
4 shuhard
 
04.10.12
13:51
5 Fedor
 
04.10.12
13:51
(2) На сервере (там могут быть фоновые задания и запущена сама 1с)
6 Maxus43
 
04.10.12
13:51
(5) net stop <имя службы>
7 shuhard
 
04.10.12
13:53
(6) не а,
этим 8.2 не проймешь
8 Maxus43
 
04.10.12
13:53
(7) она работает с остановленной службой?)
9 Fedor
 
04.10.12
13:54
(6) службу отрубать не нужно. Только все сеансы. Чтоб другим cmd открыть конфигуратор и обновить конфу.
10 Maxus43
 
04.10.12
13:55
(9) разрешаю после net stop использовать net start. так же блокировку регл заданий надо поставить и блокировку соединений, чтоб не конектились пипл
11 Cube
 
04.10.12
13:56
(9) Установить блокировку базы не предлагать?
12 shuhard
 
04.10.12
13:58
(9) я тебе в (4) дал скрипт из боевой epf
13 Maxus43
 
04.10.12
13:58
делай штатно - и будет счастье, остальное от лукавого... в кмд порписывай запуск обработки по выгону юзеров, она поставит блокировки регл заданий и соединений. но для надёжности надо из 1с же принудительно оборвать соединения
14 shuhard
 
04.10.12
14:01
(13) угу

"C:\Program Files\1cv82\8.2.12.96\bin\1cv8.exe" ENTERPRISE /S"192.168.0.5:2541\xxx_2011" /N"xxxx" /P"xxxx" /ExecuteC:\Kill_All.epf /C"192.168.0.5:2540;xxxx_2011;xxxx;xxx"

c:\sleep.exe 10

taskkill  /f /im rphost.exe

c:\sleep.exe 10

"C:\Program Files\1cv82\8.2.12.96\bin\1cv8.exe" designer /S"192.168.0.5:2541\xxx_2011" /N"xxx" /P"xxx" /DumpIB"D:\bu_upp\bu.dt"
15 Maxus43
 
04.10.12
14:31
(14) а килить рпхост зачем?
16 Fedor
 
04.10.12
15:09
(11) Предлагать. Как установить блокировку базы?
17 shuhard
 
04.10.12
16:12
(15)[а килить рпхост зачем]
а память освободить, иначе вылетит птичка 45 ошибка =)
у меня, стыдно сказать, сервер 32Х и RAM 4 Гбайт
18 Fedor
 
04.10.12
16:14
Каким кодом в командной строке можно установить блокировку базы?
19 Fedor
 
04.10.12
16:16
(10) Как поставить блокировку регл заданий (в cmd)?
20 shuhard
 
04.10.12
16:16
(18) не парься
порочная технология
21 Maxus43
 
04.10.12
16:17
(17) вай вай, нам это не грозит, по > 30 Гб памяти на серваках)
22 Fedor
 
04.10.12
18:17
А как принудительно оборвать все сеансы?
23 shuhard
 
04.10.12
18:22
(22) тяжёлый случай:
я тебе в (4) дал скрипт из боевой epf
24 shuhard
 
04.10.12
18:22
(21) буржуины проклятые =)
25 Cube
 
05.10.12
07:03
(16) (18) Поиск рулит: v8: Пакетный запуск
26 Diose
 
05.10.12
08:57
Регламентно задание

/////////////////
Процедура   KillUser() Экспорт  //_KillUser_
ТекстСообщения = " ";    
   Попытка    
       
       Если Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr") > 0 Тогда
           // серверный вариант
           Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr=");
           ПодстрокаПоиска = Сред(СтрокаСоединенияИнформационнойБазы(), Поиск1 + 6);
           ИмяСервера = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1);
           // теперь ищем имя базы
           Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Ref=");
           ПодстрокаПоиска = Сред(СтрокаСоединенияИнформационнойБазы(), Поиск1 + 5);
           ИмяБазы = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1);
       Иначе
           // для других способов подключения алгоритм не актуален
           Возврат;
       КонецЕсли;
       
       Коннектор = Новый COMОбъект("V82.COMConnector");
       
       Агент = Коннектор.ConnectAgent(ИмяСервера);
       Кластеры = Агент.GetClusters();
       Для каждого Кластер из Кластеры Цикл
           АдминистраторКластера = ""; //
           ПарольКластера = "";        //
           Агент.Authenticate(Кластер, АдминистраторКластера, ПарольКластера);
           Процессы = Агент.GetWorkingProcesses(Кластер);
           Для каждого Процесс из Процессы Цикл
               Порт = Процесс.MainPort;
               // теперь есть адрес и порт для подключения к рабочему процессу
               РабПроц = Коннектор.ConnectWorkingProcess(ИмяСервера + ":" + СтрЗаменить(Порт, Символы.НПП, ""));
               РабПроц.AddAuthentication("", "");
               ИнформационнаяБаза = "";
               Базы = Агент.GetInfoBases(Кластер);
               Для каждого База из Базы Цикл
                   Если База.Name = ИмяБазы Тогда
                       ИнформационнаяБаза = База;
                       Прервать;
                   КонецЕсли;
               КонецЦикла;
               Если ИнформационнаяБаза = "" Тогда
                   // база не найдена
               КонецЕсли;
               
               Сеансы = Агент.GetInfoBaseSessions(Кластер, ИнформационнаяБаза);
               Для каждого Сеанс из Сеансы Цикл
                   Если нРег(Сеанс.AppID) = "backgroundjob" ИЛИ нРег(Сеанс.AppID) = "designer" Тогда
                       // если это сеансы конфигуратора или фонового задания, то не отключаем
                       Продолжить;
                   КонецЕсли;
                   Если Сеанс.UserName = ИмяПользователя() Тогда
                       // это текущий пользователь
                       Продолжить;
                   КонецЕсли;
                   
                   ТекстСообщения=": " +СокрЛП(Сеанс.UserName)+ "/"+ Сеанс.Host + "/" + Сеанс.AppID;
                   
                   Агент.TerminateSession(Кластер, Сеанс);
                   ЗаписьLog(ТекстСообщения);
               КонецЦикла;
               
               //ИнформационнаяБаза=     ИмяБазы;
               
               СоединенияБазы = Агент.GetInfoBaseConnections(Кластер, ИнформационнаяБаза);
               // Разорвать соединения клиентских приложений.
               Для Каждого Соединение Из СоединенияБазы Цикл
                   Если нРег(Соединение.Application) = "backgroundjob" ИЛИ нРег(Соединение.Application) = "designer" Тогда
                       // если это соединение конфигуратора или фонового задания, то не отключаем
                       Продолжить;
                   КонецЕсли;
                   //Если Соединение.UserName = ИмяПользователя() Тогда
                   //    // это текущий пользователь
                   //    Продолжить;
                   //КонецЕсли;
                   

                   РабПроц.Disconnect(Соединение);
                   
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
       
       
   
   исключение
       
           
   КонецПопытки;
   
   
   
КонецПроцедуры

////////////////
27 Fedor
 
05.10.12
11:03
(23) А что такое НомерСоединенияИнформационнойБазы()? Как получить этот номер?
28 Fedor
 
05.10.12
11:04
(27) А, ясно, вопрос снят.