Один из способов закрыть 1С в терминальной сессии.
Один из способов закрытия 1С в терминальной сессии, когда пользователи любят пользоваться крестиком, а 1С висит в диспетчере задач.
Делюсь одним из способов, которым я решил проблему с пользователями, которые упорно жмут крестик в терминальной сессии, уходят домой и 1С висит в диспетчере задач. Не самое универсальное решение, написал на скорую руку, думаю есть и более универсальные решения, буду рад посмотреть и на другие решения. Делал под версию 8.3.4.389.
При активном сеансе в файл пишется статус "Активно", при не активном, "Диск". Далее можно через обработчик ожидания при начале работы системы вызывать процедуру "ЗавершениеРаботыПриЗакрытииТерминала". Можно в планировщик задач завернуть. Вообщем жду комментарии, т.к. делал на версии 8.3.4.389, у меня VB скрипт ни в какую не взлетал, сделал через обычную командную строку и мирюсь с его морганием)
Делюсь одним из способов, которым я решил проблему с пользователями, которые упорно жмут крестик в терминальной сессии, уходят домой и 1С висит в диспетчере задач. Не самое универсальное решение, написал на скорую руку, думаю есть и более универсальные решения, буду рад посмотреть и на другие решения. Делал под версию 8.3.4.389.
Процедура ЗавершениеРаботыПриЗакрытииТерминала()
Network = Новый COMobject("Wscript.Network");
UserName = Network.UserName;
Попытка
//ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
//в версии 8.3.4.389 были проблемы с запуском, пока в коммент
//ScrptCtrl.Language="vbscript";
Команда = "query user "+UserName+"> " + Каталог1С+UserName+".txt";
КомандаСистемы(Команда);
МассивФайла = ПрочитатьТекстовыйФайл(Каталог1С+UserName+".txt");
Для Каждого ТекСтрока Из МассивФайла Цикл
НашлиСтатус = Найти(ТекСтрока,"Диск");
Если НашлиСтатус > 0 Тогда
ЗавершитьРаботуСистемы(ЛОЖЬ);
КонецЕсли;
КонецЦикла;
Исключение
КонецПопытки;
КонецПроцедуры
Функция ПрочитатьТекстовыйФайл(ФайлДанных = "С:\неопределен.TXT")
Попытка
Массив = Новый Массив;
ФайлНаДиске = Новый Файл(ФайлДанных);
Если ФайлНаДиске.Существует() Тогда
Текст = Новый ЧтениеТекста(ФайлДанных,КодировкаТекста.OEM,Символы.ПС,,ЛОЖЬ);
Пока Истина Цикл
СтрокаФайла = Текст.ПрочитатьСтроку();
Если СтрокаФайла = Неопределено Тогда
Возврат Массив;
Иначе
Массив.Добавить(СтрокаФайла);
КонецЕсли;
КонецЦикла;
УдалитьФайлы(ФайлДанных, "*.txt");
Иначе
Возврат Массив;
КонецЕсли;
Исключение
КонецПопытки;
Возврат Массив;
КонецФункции
ПоказатьПри активном сеансе в файл пишется статус "Активно", при не активном, "Диск". Далее можно через обработчик ожидания при начале работы системы вызывать процедуру "ЗавершениеРаботыПриЗакрытииТерминала". Можно в планировщик задач завернуть. Вообщем жду комментарии, т.к. делал на версии 8.3.4.389, у меня VB скрипт ни в какую не взлетал, сделал через обычную командную строку и мирюсь с его морганием)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот