Один из способов закрыть 1С в терминальной сессии.

1. Vix 28 30.08.20 16:05 Сейчас в теме
Один из способов закрытия 1С в терминальной сессии, когда пользователи любят пользоваться крестиком, а 1С висит в диспетчере задач.
Делюсь одним из способов, которым я решил проблему с пользователями, которые упорно жмут крестик в терминальной сессии, уходят домой и 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 скрипт ни в какую не взлетал, сделал через обычную командную строку и мирюсь с его морганием)
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user958326 30.08.20 17:25 Сейчас в теме
(1)
Почему только для 8.3.4? Смотрели как в обновляторе это реализовано?
3. Vix 28 30.08.20 17:29 Сейчас в теме
(2) Это я тестировал только на платформе 8.3.4, на которой работает предприятие, поэтому за другие не стал писать, обновлятор не глядел.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот