gifts2017

принудительное отключение пользователей

Опубликовал shard (shard) в раздел Администрирование - Защита, права, пароли

принудительное отключение пользователей (инструкция по доработке глобального модуля)
часто ли вам приходилось работать непосредственно у клиента, у которого в базе одновременно работает больше одного человека? часто ли приходилось выгонять пользователей, неожиданно воспылавших желанием бурной деятельности? конечно если вы работаете непосредственно на сервере или в терминале, то проблем меньше. в первом случае можно просто выдернуть сетевой шнур - "дешево и сердито", но если на сервер завязаны другие задачи, то возмущению пользователей может не быть предела. во втором случае можно либо снимать процессы пользователей из диспетчера или воспользоваться удаленным управлением - при наличии соответствующих прав, конечно. а если ничего этого нет? если терминальный режим не предусмотрен, сидите вы не на сервере, а в бухгалтерии, а какой-нибудь невовремя ушедший кассир оставил открытым окно программы и закрытым помещение кассы? чтобы избежать подобных ситуаций и писалась данная дописка. немного изменив код глобального модуля (согласно прилагаемой инструкции) вы получите возможность автоматического корректного завершения работы пользователей (режим 1с:предприятие) помимо их желания.
однако следует быть осторожным с операторами. возможна например ситуация, когда они набирают большую (да хотя бы и на 200 строк) реализацию и куда-то отлучаются по особо важным делам на часик-другой не сохранив документ-выкинет и не сохранит.
работает на любых конфигурациях на любых платформах.

для тех кто не хочет изменять код - смотрите http://infostart.ru/projects/739/

Скачать файлы

Наименование Файл Версия Размер
принудительное отключение.txt 785
.1225872418 3,53Kb
25.09.09
785
.1225872418 3,53Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Епрст (Ёпрст) 05.11.08 12:02
Все баяны сюда постить будешь ?
Ну не работает ЭТО в реальной системе, ну не работает...
Любое модальное окошко - и привет котёнку.
2. Аркадий Кучер (Abadonna) 05.11.08 12:08
3. shard (shard) 05.11.08 12:09
(1) насчет модального окна верно. но есть и _действительно_ 100% безотказный способ, правда аппаратный. его вы все знаете.
4. Епрст (Ёпрст) 05.11.08 12:10
5. Аркадий Кучер (Abadonna) 05.11.08 12:16
(3)>правда аппаратный. его вы все знаете.
Не гони пургу :) Лучше по ссылочке глянь :)))
6. shard (shard) 05.11.08 12:23
(5) зергут, но приходилось и аппаратный иногда применять)))
7. Schtass (sCHTASS) 12.11.08 11:02
Зацените v7backup. Намного эффективно выгоняет.

To 1) или если 1С залочена пользователем
8. Александр (Atheist) 14.11.08 21:13
Я при выбросе пользователей обхожусь без дополнительных компонент. Создаю константу "МинутДоЗавершения" В глобальнике при начале работы системы при помощи ОбработкаОжидания() вызываю процедуру, которая считывает константу и если значение константы больше нуля, то начинается отсчет времени и выдается сообщение с предупреждением о скором закрытии 1С. Потом по достижению счетчиком нуля вызывается ЗавершитьРаботуСистемы(0); и пользователи благополучно вылетают. А те, кто пытается войти, получают ругательное сообщение, которое повисев несколько секунд исчезает вместе с 1С.
Единственная возможная проблема - это модальное окно, например, в интерфейсе есть строка меню с вызовом справочника, на который у пользователя нет прав. Вообще не приходилось с такой ситуацией сталкиваться, да и лень что-то смоделировать такое, но думаю это решаемая проблема:
Попытка
ЗавершитьРаботуСистемы(0);
Исключение
WSH=СоздатьОбъект("WScript.Shell");
WSH.SendKeys("^{ENTER}");
ЗавершитьРаботуСистемы(0);
КонецПопытки
9. Александр (Atheist) 14.11.08 21:16
Похоже нельзя в тексте указывать фигурные скобки, в общем вместо [] нужно поставить фигурные скобки
Попытка
ЗавершитьРаботуСистемы(0);
Исключение
WSH=СоздатьОбъект("WScript.Shell");
WSH.SendKeys("^[Enter]");
ЗавершитьРаботуСистемы(0);
КонецПопытки
10. Владимир Б (antares_of) 02.12.11 15:58
(8) Atheist, Да я тоже пользуюсь таким способом. Очень удобно тем более если конфа писана переписана уже давно)
В принципе и константу можно не создавать а использовать какую нибудь существующую со значением перечисления и не периодическую и сделать например так:
В гдобальном модуле добавить:
Процедура Выгнать()
Если ИмяПользователя() <> "Программист" Тогда
Если Константа.ВыходитьИзСистемы1С = Перечисление.Булево.Да Тогда
Предупреждение("Работа программы будет завершена в связи с плановыми работами",5);
ЗавершитьРаботуСистемы(0);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

ОбработкаОжидания("Выгнать",10);