|
выгонялка пользователей из 1с | ☑ | ||
---|---|---|---|---|
0
dron4ikkk
17.09.14
✎
10:17
|
Всем привет! Кто что может посоветовать по поводу выгонялки пользователей из базы? нашел код, но он не срабатывает:
в процедуре ПриНачалеРаботыСистемы Если Справочники.ПользователиАктивные.НайтиПоНаименованию(ИмяПользователя())=Справочники.ПользователиАктивные.ПустаяСсылка() Тогда ПолН= Справочники.ПользователиАктивные.СоздатьЭлемент(); ПолН.ОтВремя = Дата(1, 1, 1, 10, 13, 0); ПолН.ДоВремя = Дата(1, 1, 1, 10, 14, 0); ПолН.Допуск = Истина; ПолН.Наименование = ИмяПользователя(); ПолН.Счетчик = 0; ПолН.Записать(); Иначе Вр = Дата(1, 1, 1, Час(ТекущаяДата()), Минута(ТекущаяДата()), Секунда(ТекущаяДата())); //Формат(ТекущаяДата(),"ДФ=ЧЧммсс"); Пол= Справочники.ПользователиАктивные.НайтиПоНаименованию(ИмяПользователя()).ПолучитьОбъект(); Если ((Пол.ДоВремя>=Вр) и (Пол.ОтВремя<=Вр)) или (Пол.Допуск = ложь) тогда Предупреждение("Резервное копирование. Работу можно будет возобновить в " + пол.ДоВремя,5); ЗавершитьРаботуСистемы(Ложь); КонецЕсли; КонецЕсли; ПодключитьОбработчикОжидания("Выход",60,Ложь); Процедура Выход() Экспорт Вр = Дата(1, 1, 1, Час(ТекущаяДата()), Минута(ТекущаяДата()), Секунда(ТекущаяДата())); Пол= Справочники.ПользователиАктивные.НайтиПоНаименованию(ИмяПользователя()).ПолучитьОбъект(); Если ((Пол.ДоВремя>=Вр) и (Пол.ОтВремя<=Вр)) Или (Пол.Допуск = ложь) Тогда Если Пол.Счетчик = 0 Тогда Пол.Счетчик = 0; Пол.Записать(); Предупреждение("Завершение работы системы через 5 минут", 5); Иначе ТСчетчик = Счетчик; ТСчетчик = ТСчетчик-60; Пол.Счетчик = ТСчетчик; Пол.Записать(); Если ТСчетчик=0 Тогда Предупреждение("Резервное копирование. Работу можно будет возобновить в " + пол.ДоВремя,5); ЗавершитьРаботуСистемы(Ложь) КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
1
ДенисЧ
17.09.14
✎
10:20
|
Перезапускаем службу сервера и вуаля.
Пользователей нет. |
|||
2
dron4ikkk
17.09.14
✎
10:22
|
(1) жестко, текущие работы в документах не сохранятся
|
|||
3
ДенисЧ
17.09.14
✎
10:22
|
(2) тогда сначала позвони.
|
|||
4
dron4ikkk
17.09.14
✎
10:23
|
(3) вообще классно, каждый день звонить предлагаешь
? |
|||
5
Любопытная
17.09.14
✎
10:25
|
У Раруса в Альфа-Авто клевая выгонялка - выгоняет всех безотказно. подсмотри там
|
|||
6
kosts
17.09.14
✎
10:26
|
(4) В типовых есть. Можно глядеть.
Если будет выдано предупреждение, а пользователь где-то гуляет. То программа не закроется.
|
|||
7
dron4ikkk
17.09.14
✎
10:26
|
(5) ок спасибо!
|
|||
8
ДенисЧ
17.09.14
✎
10:27
|
(4) Предлагаю назначить время для обновлений и в это время выгонять всех без вопросов.
А если что-то суперэекстренное, то и позвонить можно. |
|||
9
бомболюк
17.09.14
✎
10:37
|
а сейчас штатными средствами гарантированно выгоняются все или нет? не приходится так сказать выживших добивать через консоль сервера?
|
|||
10
dron4ikkk
17.09.14
✎
10:48
|
(9) насчет этого не знаю)
|
|||
11
dron4ikkk
17.09.14
✎
10:48
|
(6) почему?
|
|||
12
dron4ikkk
17.09.14
✎
10:49
|
(6) Если ТСчетчик=0 Тогда
Предупреждение("Резервное копирование. Работу можно будет возобновить в " + пол.ДоВремя,5); ЗавершитьРаботуСистемы(Ложь) КонецЕсли; по сути должно автоматом выгонять |
|||
13
kosts
17.09.14
✎
11:33
|
(11) Все нормально, туплю
|
|||
14
John83
17.09.14
✎
14:51
|
УПП открой
PS а кто-нить знает выгонялку для файловой? |
|||
15
DasTPID
17.09.14
✎
15:09
|
(14)
Процедура ПриНачалеРаботыСистемы() ... //TPID+ ПодключитьОбработчикОжидания("АНеПораЛиОтдохнуть",600, Ложь); Процедура АНеПораЛиОтдохнуть() Экспорт Если Час(ТекущаяДата()) = 2 Тогда ЗавершитьРаботуСистемы(ложь); КонецЕсли КонецПроцедуры Не срабатывает, если бухи делают перепроведение документов или если оставить на ночь конфигуратор |
|||
16
shuhard
17.09.14
✎
15:13
|
(15) дык конекты на сервере режуться
вот рабочий код, параметры через строку запуска // до тех пор, пока соединений много, надо убивать всех, кроме себя // когда останется одно соединение закроем приложение и подождем внешним wait-ом // получим всё необходимое через строку запуска // адрес сервера;база;логин;пароль Сообщить("-->"+ПараметрЗапуска); ПараметрыЗапуска = РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска,";"); // вернётся массив //Сообщить(ПараметрыЗапуска[0]); //Сообщить(ПараметрыЗапуска[1]); //Сообщить(ПараметрыЗапуска[2]); //Сообщить(ПараметрыЗапуска[3]); Если ПараметрыЗапуска.ВГраница()<>3 Тогда ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; НомерСоединения=0; Пользователь=ПараметрыЗапуска[2]; Пароль=ПараметрыЗапуска[3]; Попытка СтрокаСоединения=СтрокаСоединенияИнформационнойБазы(); ЭтоСоединение=НомерСоединенияИнформационнойБазы(); База=ПараметрыЗапуска[1]; КОМ=Новый COMОбъект("V82.COMConnector"); Сервер=ПараметрыЗапуска[0]; Агент=КОМ.ConnectAgent(Сервер); Кластеры=Агент.GetClusters(); Кластер=Кластеры.GetValue(0); Агент.Authenticate(Кластер,"",""); РабочиеПроцессы=Агент.GetWorkingProcesses(Кластер); // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Для Каждого Процесс Из РабочиеПроцессы Цикл СтрокаСоединенияРП=Процесс.HostName+":"+Формат(Процесс.MainPort,"ЧГ="); СоединениеРП=КОМ.ConnectWorkingProcess(СтрокаСоединенияРП); СоединениеРП.AddAuthentication(Пользователь,Пароль); ОписаниеИБ=СоединениеРП.CreateInfoBaseInfo(); ОписаниеИБ.Name=База; Соединения=СоединениеРП.GetInfoBaseConnections(ОписаниеИБ); Для Каждого Соединение Из Соединения Цикл Если Соединение.AppID="COMConsole" Тогда Продолжить; КонецЕсли; Если Соединение.ConnID<>ЭтоСоединение Тогда СоединениеРП.Disconnect(Соединение); // всех кроме себя КонецЕсли; КонецЦикла; КонецЦикла; КОМ=Неопределено; ЗавершитьРаботуСистемы(Ложь); Исключение //Сообщить(ОписаниеОшибки()); КонецПопытки; Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить |
|||
17
КонецЦикла
17.09.14
✎
15:17
|
"...\bin\1cv8.exe" ENTERPRISE /F"КаталогИБ" /NИмя /PПароль /WA- /AU- /DisableStartupMessages /CЗавершитьРаботуПользователей
|
|||
18
break
17.09.14
✎
15:19
|
желательно еще перед выгоном блокировку ставить
|
|||
19
shuhard
17.09.14
✎
15:19
|
(17) не а, не работает для зависших сеансов, а за день таких туча набегает
|
|||
20
КонецЦикла
17.09.14
✎
15:19
|
(19) У меня вроде работает
|
|||
21
КонецЦикла
17.09.14
✎
15:19
|
Хотя я один обычно дома... хз... :)
|
|||
22
КонецЦикла
17.09.14
✎
15:23
|
Это к вопросу о файловой. Помогало когда говорили "да вася же вышел!"
|
|||
23
shuhard
17.09.14
✎
15:44
|
(21) а те 1с.exe сруби на клиенте дома, ты же не на файловой это проверяешь ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |