Выкинуть пользователей из 1С 7.7 обработка
Эти процедуры необходимо добавить в глобальный модуль:
Процедура ОстановкаСистемы() ОчиститьОкноСообщений(); Сигнал(); Сообщить("ВНИМАНИЕ! ОСТАНОВКА ПРОГРАММЫ!","!!!"); Сообщить("Просьба сохранить все необходимые документы или элементы справочников.","!!!"); Если ПопыткаВыхода=1 Тогда Коммент="Предупреждение об остановке системы."; ЗаписьЖурналаРегистрации(Коммент,,,,4); КонецЕсли; Если ПопыткаВыхода=4 Тогда ОчиститьОкноСообщений(); Сигнал(); Сигнал(); Сигнал(); Предупреждение("Ваше время истекло! ОСТАНОВКА СИСТЕМЫ.",1); Коммент="Отключение охамевшего пользователя."; ЗаписьЖурналаРегистрации(Коммент,,,,4); ЗавершитьРаботуСистемы(0); КонецЕсли; Ответ=0; Если ПопыткаВыхода<4 Тогда // Если не проверять, то при отключении (см. выше) система успевает снова задать вопрос.
Ответ=Вопрос("Вы готовы к остановке системы",4,10); КонецЕсли; Если Ответ=7 Тогда // Ответ - НЕТ Сигнал(); Коммент="Отсрочка отключения № "+Строка(ПопыткаВыхода); ЗаписьЖурналаРегистрации(Коммент,,,,4); ПопыткаВыхода=ПопыткаВыхода+1; ИначеЕсли Ответ=6 Тогда // Ответ - ДА Сигнал(); Сигнал(); ОчиститьОкноСообщений(); Коммент="Отключение раб. станции "+Строка(ИмяКомпьютера())+"."; ЗаписьЖурналаРегистрации(Коммент,,,,4); ПопыткаВыхода=ПопыткаВыхода+1; ЗавершитьРаботуСистемы(1); ИначеЕсли Ответ=-1 Тогда // Ответ не получен. Выход по таймауту. ОчиститьОкноСообщений(); Сигнал(); Сигнал(); Сигнал(); Предупреждение("Внимание! ОСТАНОВКА СИСТЕМЫ.",3); Коммент="Отключение неответившей раб. станции "+Строка(ИмяКомпьютера())+"."; ЗаписьЖурналаРегистрации(Коммент,,,,4); ЗавершитьРаботуСистемы(0); КонецЕсли; КонецПроцедуры Процедура АнализЗавершенияРаботы() ФИмя=СтопФайл; Если ФС.СуществуетФайл(ФИмя) = 1 Тогда Если НЕ(НазваниеНабораПрав()="Админ") Тогда ПопыткаВыхода = 1; ОстановкаСистемы(); КонецЕсли; КонецЕсли; ФИмя=""; КонецПроцедуры Процедура ПриНачалеРаботыСистемы() ... ОбработкаОжидания("АнализЗавершенияРаботы",10); ... КонецПроцедуры //ПриНачалеРаботыСистемы()
И необходим файл-флажок:
Файл-флаг создается: Sub ExitAll() StopFile="stop.all" Set FSO = CreateObject("Scripting.FileSystemObject") Set tf = FSO.CreateTextFile (IBDir & StopFile) tf.Close End Sub
Удаление файла-флажка:
StopFile=IBDir & "stop.all" Set FSO = CreateObject("Scripting.FileSystemObject") If FSO.FileExists(StopFile) Then FSO.DeleteFile StopFile End if
