//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|                                   Делегат событий                                         |
//	+                                      ShmalevoZ                                            +
//	|                                       2010-08                                             |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++


//---------------------------------------------------------------------------------------------
// Собственные атрибуты
Перем гРасположениеОбработкиСообщения;
Перем гКонтекстОкнаСообщения;


//******************************************************************************
// _НормализоватьКонтекст(СсылкаКонтекст)
//
// Параметры: 
//  СсылкаКонтекст			: контекст класса
//
// Возвращаемое значение:
//  Ссылка					: возвращает ссылку на контекст класса
//
// Описание:
//  Возвращает ссылку на контекст класса
//
Функция _НормализоватьКонтекст(СсылкаКонтекст)
	
	Возврат СсылкаКонтекст;
	
КонецФункции // _НормализоватьКонтекст()


//******************************************************************************
// _this()
//
// Параметры: 
// 	Нет
//
// Возвращаемое значение:
//  Ссылка					: возвращает ссылку на контекст класса
//
// Описание:
//  Возвращает ссылку на контекст класса
//
Функция _this()
	
	Возврат _НормализоватьКонтекст(Контекст);
	
КонецФункции // _this()


//******************************************************************************
// Конструктор()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Предопределенный метод
//
Процедура Конструктор()
	
	Если _this().ПараметрДелегата_НеИспользовать = 0 Тогда
		// проверим существование необходимых файлов
		гРасположениеОбработкиСообщения	= _this()._ПолучитьКаталогКласса() + "message.ert";
		Если ФС.СуществуетФайл(гРасположениеОбработкиСообщения) = 0 Тогда
			_this().ПараметрДелегата_НеИспользовать = 1;
			Сообщить("Не найден файл " + гРасположениеОбработкиСообщения);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры // Конструктор()


//******************************************************************************
// Сообщение(Текст, ЗапретЗакрытия, Режим)
//
// Параметры: 
//  Текст, ЗапретЗакрытия, Режим
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Выводит экран форму сообщения
//
Процедура Сообщение(Текст, ЗапретЗакрытия, Режим)
	
	Параметры	= СоздатьОбъект("СписокЗначений");
	Параметры.Установить("Режим",			Режим);
	Параметры.Установить("Текст", 			Текст);
	Параметры.Установить("ЗапретЗакрытия",	ЗапретЗакрытия);
	
	Сервис		= СоздатьОбъект("Сервис");
	Сервис.ОткрытьПлавающуюФорму("Отчет#", Параметры, гРасположениеОбработкиСообщения);
	
КонецПроцедуры // Сообщение()


//******************************************************************************
// ОбработатьСобытие_СетьЗапросНаБлокировку(Параметры, ТекстСсылкиНаДелегата)
//
// Параметры: 
//  Параметры, ТекстСсылкиНаДелегата
//
// Возвращаемое значение:
//  Число
//
// Описание:
//  Обработка события. 
//
Функция ОбработатьСобытие_СетьЗапросНаБлокировку(Параметры, ТекстСсылкиНаДелегата)
	
	Результат	= 0;
	
	Если Вопрос("Разрешить удаленную блокировку работы программы?", "Да+Нет") = "Да" Тогда
		Результат	= 1;
	КонецЕсли;
	
	Возврат Результат;
КонецФункции // ОбработатьСобытие_СетьЗапросНаБлокировку()


//******************************************************************************
// ОбработатьСобытие_СетьПредупреждениеОБлокировке(Параметры, ТекстСсылкиНаДелегата)
//
// Параметры: 
//  Параметры, ТекстСсылкиНаДелегата
//
// Возвращаемое значение:
//  Число
//
// Описание:
//  Обработка события
//
Функция ОбработатьСобытие_СетьПредупреждениеОБлокировке(Параметры, ТекстСсылкиНаДелегата)
	
	Текст	= "ВНИМАНИЕ! В ближайшее время работа программы будет заблокирована!";
	Сообщение(Текст, 0, "Предупреждение");
	
	Возврат 1;
КонецФункции // ОбработатьСобытие_СетьПредупреждениеОБлокировке()


//******************************************************************************
// ОбработатьСобытие_СетьЗаблокировать(Параметры)
//
// Параметры: 
//  Параметры
//
// Возвращаемое значение:
//  Число
//
// Описание:
//  Обработка события
//
Функция ОбработатьСобытие_СетьЗаблокировать(Параметры)
	
	Если ТипЗначенияСтр(гКонтекстОкнаСообщения) = "ГрупповойКонтекст" Тогда
		Возврат 1;
	КонецЕсли;
	
	Текст	= "ВНИМАНИЕ! Работа программы удаленно заблокирована!";
	Сообщение(Текст, 1, "Блокировка");
	
	Возврат 1;
КонецФункции // ОбработатьСобытие_СетьЗаблокировать()


//******************************************************************************
// ОбработатьСобытие_СетьРазблокировать(Параметры)
//
// Параметры: 
//  Параметры
//
// Возвращаемое значение:
//  Число
//
// Описание:
//  Обработка события
//
Функция ОбработатьСобытие_СетьРазблокировать(Параметры)
	
	Если ТипЗначенияСтр(гКонтекстОкнаСообщения) <> "ГрупповойКонтекст" Тогда
		Сообщить("Нет открытой формы");
		Возврат 0;
	КонецЕсли;
	
	Сервис	= СоздатьОбъект("Общие.Сервис.Контекст");
	Сервис.ВыполнитьМетод(гКонтекстОкнаСообщения, "ЗакрытьФорму");
	гКонтекстОкнаСообщения	= "";
	
	Возврат 1;
КонецФункции // ОбработатьСобытие_СетьРазблокировать()


//******************************************************************************
// ОбработатьСобытие_СетьПриОткрытииОкнаСообщений(Параметры)
//
// Параметры: 
//  Параметры
//
// Возвращаемое значение:
//  Число
//
// Описание:
//  Обработка события
//
Функция ОбработатьСобытие_СетьПриОткрытииОкнаСообщений(Параметры)
	
	гКонтекстОкнаСообщения	= Параметры.ПолучитьЗначение(1);
	Режим					= Параметры.ПолучитьЗначение(2);
	
	Если Режим = "Предупреждение" Тогда
		гКонтекстОкнаСообщения	= "";
	КонецЕсли;
	
	Возврат 1;
КонецФункции // ОбработатьСобытие_СетьПриОткрытииОкнаСообщений()

//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|                                                                                           |
//	+                           Методы, вызываемые из менеджера событий                         +
//	|                                                                                           |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++


//******************************************************************************
// Представление(Вариант = 0)
//
// Параметры: 
//  Вариант = 0
//
// Возвращаемое значение:
//  Строка					- пользовательское представление делегата
//
// Описание:
//  Возвращает пользовательское представление делегата
//
Функция Представление(Вариант = 0) Экспорт
	
	Результат	= "Запрос на удаленную блокировку";
	
	Возврат Результат;
КонецФункции // Представление()


//******************************************************************************
// ПолучитьИдентификаторыСобытий()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Строка					- идентификаторы событий через запятую
//
// Описание:
//  Возвращает идентификаторы обрабатываемых событий
//
Функция ПолучитьИдентификаторыСобытий() Экспорт
	
	Результат	= "Сеть.ЗапросНаБлокировку, Сеть.ПредупреждениеОБлокировке, Сеть.Заблокировать, Сеть.Разблокировать, Сеть.ПриОткрытииОкнаСообщений";
	
	Возврат Результат;
КонецФункции // ПолучитьИдентификаторыСобытий()


//******************************************************************************
// ПолучитьИдентификаторыКонтекстов()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Строка					- список идентификаторов через запятую
//
// Описание:
//  Возвращает список идентификаторов типов обрабатываемых контекстов через запятую
//
Функция ПолучитьИдентификаторыКонтекстов() Экспорт
	
	Результат	= "*";
	
	Возврат Результат;
КонецФункции // ПолучитьИдентификаторыКонтекстов()


//******************************************************************************
// ОбработатьСобытие(Событие, Параметры, ТекстСсылкиНаДелегата)
//
// Параметры: 
//  Событие					: строка, идентификатор события
//  Параметры				: параметры события
//  ТекстСсылкиНаДелегата	: текст ссылки на глобальный объект класса
//
// Возвращаемое значение:
//  Число					: статус возврата обработки события
//
// Описание:
//  Вызывается менеджером событий при возникновении события, обратываемого классом
//	в контексте обрабатываемого типа
//
Функция ОбработатьСобытие(Событие, Параметры, ТекстСсылкиНаДелегата) Экспорт
	
	//---------------------------------------------------------------------------------------------
	// Возвращаем флаг 
	Результат	= 1;
	
	Если Событие = "Сеть.ЗапросНаБлокировку" Тогда
		Результат	= ОбработатьСобытие_СетьЗапросНаБлокировку(Параметры, ТекстСсылкиНаДелегата);
	ИначеЕсли Событие = "Сеть.ПредупреждениеОБлокировке" Тогда
		Результат	= ОбработатьСобытие_СетьПредупреждениеОБлокировке(Параметры, ТекстСсылкиНаДелегата);
	ИначеЕсли Событие = "Сеть.ПриОткрытииОкнаСообщений" Тогда
		Результат	= ОбработатьСобытие_СетьПриОткрытииОкнаСообщений(Параметры);
	ИначеЕсли Событие = "Сеть.Заблокировать" Тогда
		Результат	= ОбработатьСобытие_СетьЗаблокировать(Параметры);
	ИначеЕсли Событие = "Сеть.Разблокировать" Тогда
		Результат	= ОбработатьСобытие_СетьРазблокировать(Параметры);
	КонецЕсли;
	
	Возврат Результат;
КонецФункции // ОбработатьСобытие()


//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|                                                                                           |
//	+                       Методы, вызываемые из изменяемого контеста                          +
//	|                                                                                           |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++

