|
Как корректно отключать соединения от сервера 1С в v8.1. Делюсь. | ☑ | ||
---|---|---|---|---|
0
Rabajaba
26.09.08
✎
16:16
|
В связи с тем, что информация в КЗ Книга знаний: v8: Выгонялка пользователей для 1С 7.7, 8.0, 8.1 устарела для v8.1 предлагаю такой вариант корректного отключения пользователей.
Для нагладности пользователь и пароль для админа кластера и админа конкретной БД одинаковы. Сервер и База это строковые имена. Что конкретно делает этот код: перебор всех кластеров в конкретном сервере. после идет выборка всех процессов этого сервера и подключение к его рабочим процессам для отключения от конкретной базы. // подключимся к агенту, чтобы узнать все процессы Коннектор = Новый COMОбъект("v81.COMConnector"); Агент = Коннектор.ConnectAgent(Сервер); Кластеры = Агент.GetClusters(); Для каждого Кластер из Кластеры Цикл // получим и береберем процессы кластера Агент.Authenticate(Кластер, Пользователь,Пароль); Процессы = Агент.GetWorkingProcesses(Кластер); Для каждого Процесс из Процессы Цикл Порт = Процесс.MainPort; Попытка // теперь есть адрес и порт для подключения к рабочему процессу РабПроц = Коннектор.ConnectWorkingProcess(Сервер + ":" + СтрЗаменить(Порт, Символы.НПП, "")); // логин админа кластера РабПроц.AuthenticateAdmin(Пользователь, Пароль); // логин админа базы РабПроц.AddAuthentication(Пользователь,Пароль); ИнформационнаяБаза = РабПроц.CreateInfoBaseInfo(); ИнформационнаяБаза.Name = База; СоединенияБазы = РабПроц.GetInfoBaseConnections(ИнформационнаяБаза); // Разорвать соединения клиентских приложений. Для Каждого Соединение Из СоединенияБазы Цикл Если нРег(Соединение.AppID) = "1cv8" Тогда // убиваем только предрятия РабПроц.Disconnect(Соединение); КонецЕсли; КонецЦикла; Исключение ЛогОбмена("РезервноеКопирование.Остановка", ИнформацияОбОшибке().Описание); ЛогОшибок("Работа с процессов сервера для отключения пользователей"); КонецПопытки; КонецЦикла; КонецЦикла; |
|||
1
Serg_1960
26.09.08
✎
16:29
|
Актуальная тема <вариант корректного отключения пользователей> :)
Возможны варианты: Глобальный контекст УстановитьБлокировкуУстановкиСоединений (SetConnectionsLock) Синтаксис: УстановитьБлокировкуУстановкиСоединений(<Блокировка>) Параметры: <Блокировка> (обязательный) Тип: БлокировкаУстановкиСоединений. Новое описание блокировки установки соединений. Описание: Изменяет блокировку установки соединений. Для выполнения требуются права администратора информационной базы. |
|||
2
Salvador Limones
26.09.08
✎
16:31
|
(0) В чем прикол-то?
Переписал код с VBS в 1С для 8.1, а так алгоритм один-в-один. |
|||
3
Rabajaba
26.09.08
✎
16:32
|
Вариант в (1) указывает на то, что после установки никто не сможет зайти в БД.
Вариант (0) показывает как отключить пользователей "на горячую". |
|||
4
Rabajaba
26.09.08
✎
16:32
|
(2) вчитайтесь получше в код КБ сначала, а потом пишите.
|
|||
5
Salvador Limones
26.09.08
✎
16:35
|
(4) Мда.... Ты накурен?
|
|||
6
H A D G E H O G s
26.09.08
✎
16:36
|
(0) ПО стилю заголовка так Гения напоминает...
|
|||
7
Serg_1960
26.09.08
✎
16:40
|
(3) <никто не сможет зайти> - а если ипользуя ключ /UC и пароль блокировки?
|
|||
8
Rabajaba
26.09.08
✎
16:41
|
Ты понятие один в один используешь чисто чтобы поприкалываться?
Set connector = CreateObject("V81.COMConnector") Set AgentConnection = Connector.ConnectAgent(ServerName) Set Cluster = AgentConnection.GetClusters()(0) AgentConnection.Authenticate Cluster, "", "" Set WorkingProcess = AgentConnection.GetWorkingProcesses(Cluster)(0) ConnectString = WorkingProcess.HostName & ":" & WorkingProcess.MainPort Set WorkingProcessConnection = Connector.ConnectWorkingProcess(ConnectString) WorkingProcessConnection.AddAuthentication UserName, UserPass Set ibDesc = WorkingProcessConnection.CreateInfoBaseInfo() ibDesc.Name = BaseName Connections = WorkingProcessConnection.GetInfoBaseConnections(ibDesc) покажешь перебор кластеров и процессов? И рас ты такой умный, чего не переписал то? чего не выложил? жадный? |
|||
9
shachneff
26.09.08
✎
16:42
|
(1) Указанный метод не выполняет функцию выгоняния пользователей из базы. Он препятствует их входу в нее.
Программная обвязка может использовать флаг наличия блокировки, а так же время начала и окончания блокировки (при наличии) и обеспечивает корректный выход пользователей из системы методом ЗавершитьРаботуСистемы. (0) Приведенный автором код выгоняет всех резко и безальтернативно. |
|||
10
Rabajaba
26.09.08
✎
16:42
|
(7), прошу прощения, не указал, что так можно.
Эти два варианта преследуют немного разные задачи, но часто можно использовать и тот и тот. |
|||
11
Serg_1960
26.09.08
✎
16:47
|
Эй! (6) и (8) Вы чего, вечером в пятницу звереете что-ли? Чего завелись оба с пол оборота?
Фраза <корректного отключения> позабавила. Ничего себе "корректно"... Да это серпом по #цензура# - сразу и надолго :) Вот и предложил корректный вариант "от 1С" |
|||
12
Rabajaba
26.09.08
✎
16:51
|
"Корректного отключения от сервера" полностью фраза звучит. :)
Это не означает корректного отключения пользователя от базы. |
|||
13
Serg_1960
26.09.08
✎
16:51
|
(0) "в целом" полезное решение. Вот только мне не понятно: а Вы "свой собственный" процесс не прервете таким образом раньше остальных?
|
|||
14
goodfella
26.09.08
✎
16:52
|
(11) Это всё лимонес, та еще скатина.
|
|||
15
ShoGUN
26.09.08
✎
16:53
|
(10) Справился? :) А код тестировался? По идее он срубает и тот сеанс, из которого запущен.
|
|||
16
UnAmerican
26.09.08
✎
16:53
|
0 Так выгонишь и на работу в понедельник не приходи )).
|
|||
17
Rabajaba
26.09.08
✎
16:54
|
Этот код выполняется в фоновом задании в моем случае.
Да и потом это только основа, туда же можно ещё насовать проверок на пользователей, хостов и тп. |
|||
18
Rabajaba
26.09.08
✎
16:55
|
(15) отлично срубает, пока под предприятием тестил :)
|
|||
19
Serg_1960
26.09.08
✎
16:56
|
(17) Сорри. Я в последнее время, наверное, как-то "не так" услышанное воспринимаю. Все время слышу не то, что мне хотели сказать :) Как "рыба" - замечательно!
|
|||
20
H A D G E H O G s
26.09.08
✎
16:57
|
(11) Я? Завелся? Шутить изволите...
(14) Все правильно Сальвадор сказал.. Ничего уникального и суперсверхвозможного в (0) не вижу. |
|||
21
1C-Nick
26.09.08
✎
17:07
|
(6) +1 по заголовку думал Гений пишет =)
А вообще приведите пример для чего такое надо, чем не нравится механизм из типовой с завершением раобты системы в коде по значению в регистре сведений или по текущему времени? |
|||
22
Rabajaba
26.09.08
✎
17:11
|
Ночь. Архивирование. Винт ждет бекапа. Продолжать? :)
|
|||
23
Serg_1960
26.09.08
✎
17:12
|
(20)Вы глубоко не правы :( Автор не хотел быть "уникальным" или "оригинальным". Кому-то он, возможно, реально сбережет время.
Я знаю, все что я сказал и скажу - давно сказали до меня, - но это не повод молчать: Ирония в том, что специалист, в отличие от всех "остальных", понимает как много он не понимает... |
|||
24
Кураж
26.09.08
✎
17:13
|
Вот сколько это http://infostart.ru/projects/1836/ уже валяется, а изобретатели велосипедов никак не угомонятся!
|
|||
25
Serg_1960
26.09.08
✎
17:15
|
(22) И у меня по ночам "бурная" жизнь продолжается. А по утру (иногда) юзверам ключей не хватает из-за "зависших" процесов, а админ только руками разводит... :(
|
|||
26
Serg_1960
26.09.08
✎
17:18
|
(24) Вот видите, Ваша ссылка - еще один "плюс" к обсуждению велосипедов :))
|
|||
27
H A D G E H O G s
26.09.08
✎
17:19
|
(25) Зависшие, именно "зависшие" - потерявшие связь с сервером 1С процессы лечатся релизом 2.2 и соответствующей службой здесь:
http://www.infostart.ru/projects/1737/ |
|||
28
1C-Nick
26.09.08
✎
17:20
|
(22) (25) - я имел ввиду примеры когда завершение работы пользователей должно происходить таким способом, а не скажем завершение сеансов и выключение компьютеров по расписанию
|
|||
29
wPa
26.09.08
✎
17:25
|
(25) А рестартануть службу 1с и сиквеоа утром?
|
|||
30
H A D G E H O G s
26.09.08
✎
17:29
|
(27) Хотя я вот точно не скажу - остается ли захваченной лицензия при завершении соединения с сервером 1С, или нет..
|
|||
31
Serg_1960
26.09.08
✎
17:38
|
(27)-(30) Спасибо за отклик. У меня очень р-е-д-к-о (но бывает) - и причины не понятные (ночью обмен по почте идет). Как "защита от дурака" алгоритмом можно проверять "на всякий случай" и рубить. Сорри, я "одеяло на себя стянул"... больше не буду :)
|
|||
32
ОМЭЗ
26.09.08
✎
17:49
|
(27)А что это за файлы и для чего они нужны?
|
|||
33
H A D G E H O G s
26.09.08
✎
17:56
|
(32) Да это чушь всякая, мусор. Лучше не трогать.
|
|||
34
goodfella
26.09.08
✎
17:57
|
(33) Хлам. Согласен.
|
|||
35
ОМЭЗ
26.09.08
✎
18:04
|
(34)Ага только что поставил и смотрел
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |