//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|            Базовый класс для классов-обработчиков событий (абстрактный)                   |
//	+                                      ShmalevoZ                                            +
//	|                                       2007-12                                             |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++

//---------------------------------------------------------------------------------------------
// Собственные атрибуты
Перем гИдентификаторБазовогоОбъектаИерархии;


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


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


//******************************************************************************
// Конструктор()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Предопределенный метод
//
Процедура Конструктор()
	
	гИдентификаторБазовогоОбъектаИерархии	= "Общие.Событие.Делегат";
	
	//---------------------------------------------------------------------------------------------
	// Динамический атрибут "ПараметрДелегата_НеИспользовать" должен
	// быть добавлен базовым классом Общие.Абстрактный.Объект.Сериализуемый, но
	// если его значение ранее не было сохранено, то в нем будет пустое значение.
	// Приведем его к необходимому типу.
	_this().ПараметрДелегата_НеИспользовать	= 0 + _this().ПараметрДелегата_НеИспользовать;
	
КонецПроцедуры // Конструктор()


//******************************************************************************
// НеобходимаРегистрация()
//
// Параметры: 
//
// Возвращаемое значение:
//  Число
//
// Описание:
//  Возвращает признак необходимости регистрации делегата в системе
//
Функция НеобходимаРегистрация() Экспорт
	
	Результат	= ?(_this().ПараметрДелегата_НеИспользовать = 1, 0, 1);
	
	Возврат Результат;
КонецФункции // НеобходимаРегистрация()


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


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


//******************************************************************************
// ПолучитьИдентификаторыКонтекстов(ТаблицаПараметров)
//
// Параметры: 
//  Нет
//
// Возвращаемое значение:
//  Идентификаторы контекстов, разделенных запятыми/точкой с запятой
//
// Описание:
//  Абстрактный метод
//
Функция ПолучитьИдентификаторыКонтекстов() Экспорт
	
	Возврат "";
	
КонецФункции // ПолучитьИдентификаторыКонтекстов()


//******************************************************************************
// Приоритет()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Число					: приоритет вызова класса из менеджера событий
//
// Описание:
//  Возвращает числовое выражение приоритета класса при вызове из менеджера событий,
//  чем меньше число, тем выше приоритет. Значение по-умолчанию 100
//
Функция Приоритет() Экспорт
	
	Возврат 100;
	
КонецФункции // Приоритет()


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


//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|                                                                                           |
//	+                              Абстрактные методы класса                                    +
//	|                                                                                           |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++


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


//******************************************************************************
// Представление(Вариант = 0)
//
// Параметры: 
//  Вариант		- вариант возвращаемого представления : 0 - краткое, 1 - развернутое
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  ТекстОписания
//
Функция Представление(Вариант = 0) Экспорт
	
	Возврат "Абстрактный делегат событий";
	
КонецФункции // Представление()


//******************************************************************************
// Системный()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Число
//
// Описание:
//  Возвращает признак системного делегата
//
Функция Системный() Экспорт
	
	Возврат 0;
	
КонецФункции // Системный()
