ЗавершитьРаботуПользователей (БСП)

Автор: 1С
ОбщийМодуль.СоединенияИБГлобальный
БСП

Завершить работу пользователей. Выполнить завершение активных сеансов, если превышено время ожидания, а затем

// Выполнить завершение активных сеансов, если превышено время ожидания, а затем
// завершить текущий сеанс.
//
Процедура ЗавершитьРаботуПользователей() Экспорт

	// Получим текущее значение параметров блокировки.
	ТекущийРежим = СоединенияИБВызовСервера.ПараметрыБлокировкиСеансов(Истина);
	
	ВремяНачалаБлокировки = ТекущийРежим.Начало;
	ТекущийМомент = ТекущийРежим.ТекущаяДатаСеанса;
	
	Если ТекущийМомент < ВремяНачалаБлокировки Тогда
		ТекстСообщения = НСтр("ru = 'Блокировка работы пользователей запланирована на %1.'");
		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ВремяНачалаБлокировки);
		ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"), 
			"e1cib/app/Обработка.БлокировкаРаботыПользователей", 
			ТекстСообщения, БиблиотекаКартинок.Информация32);
		Возврат;
	КонецЕсли;
		
	КоличествоСеансов = ТекущийРежим.КоличествоСеансов;
	Если КоличествоСеансов <= 1 Тогда
		// Отключены все пользователи, кроме текущего сеанса.
		// В последнюю очередь предлагаем завершить сеанс, запущенный с параметром "ЗавершитьРаботуПользователей".
		// Такой порядок отключений необходим для обновления конфигурации с помощью пакетного файла.
		СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Ложь);
		Оповестить("ЗавершениеРаботыПользователей", Новый Структура("Статус, КоличествоСеансов", "Готово", КоличествоСеансов));
		СоединенияИБКлиент.ЗавершитьРаботуЭтогоСеанса();
		Возврат;
	КонецЕсли; 
	
	БлокировкаУстановлена = ТекущийРежим.Установлена;
	Если Не БлокировкаУстановлена Тогда
		Возврат;
	КонецЕсли;
	
	// Если информационная база файловая, то часть соединений не может быть завершена принудительно.
	Если СтандартныеПодсистемыКлиент.ПараметрКлиента("ИнформационнаяБазаФайловая") Тогда
		Возврат;
	КонецЕсли;
	
	// После начала блокировки сеансы всех пользователей должны быть отключены
	// если этого не произошло пробуем принудительно прервать соединения.
	ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей");
	
	Попытка
		ПараметрыАдминистрирования = СоединенияИБКлиент.СохраненныеПараметрыАдминистрирования();
		Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда
			СоединенияИБВызовСервера.УдалитьВсеСеансыКромеТекущего(ПараметрыАдминистрирования);
		Иначе 
			СоединенияИБКлиентСервер.УдалитьВсеСеансыКромеТекущего(ПараметрыАдминистрирования);
		КонецЕсли;
		СоединенияИБКлиент.СохранитьПараметрыАдминистрирования(Неопределено);
	Исключение
		СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Ложь);
			ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
			"e1cib/app/Обработка.БлокировкаРаботыПользователей", 
			НСтр("ru = 'Завершение сеансов не выполнено. Подробности см. в Журнале регистрации.'"), БиблиотекаКартинок.Предупреждение32);
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СоединенияИБКлиент.СобытиеЖурналаРегистрации(),
			"Ошибка", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),, Истина);
		Оповестить("ЗавершениеРаботыПользователей", Новый Структура("Статус,КоличествоСеансов", "Ошибка", КоличествоСеансов));
		Возврат;
	КонецПопытки;
	
	СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Ложь);
	ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
		"e1cib/app/Обработка.БлокировкаРаботыПользователей", 
		НСтр("ru = 'Завершение сеансов выполнено успешно'"), БиблиотекаКартинок.Информация32);
	Оповестить("ЗавершениеРаботыПользователей", Новый Структура("Статус,КоличествоСеансов", "Готово", КоличествоСеансов));
	СоединенияИБКлиент.ЗавершитьРаботуЭтогоСеанса();
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ЗавершитьРаботуЭтогоСеанса (БСП)

ИнтерактивнаяОбработкаПриСменеПароляПриЗапуске (БСП)

ЗавершитьРаботуЭтогоСеансаЗавершение (БСП)

ЗавершитьОбработкуПользователяИБ (БСП)

ЗавершитьСеансыОбластиДанных (БСП)

ЗаписатьФайлПротоколаОшибкиИЗавершитьРаботу (БСП)

Настройки (БСП)

ПриОткрытииФормыБлокировкиРаботыПользователей (БСП)

ПолучитьНастройкуРаботаСПочтой (БСП)

TurboConf ИР адаптер 2.59