//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|              Обработка перехваченных событий                                              |
//	+                                        ShmalevoZ                                          +
//	|                                                                                           |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++

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


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


//******************************************************************************
// Конструктор()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Предопределенный метод
//
Процедура Конструктор()
	
	Если _this().ПараметрДелегата_НеИспользовать = 0 Тогда
		_this().ПараметрДелегата_НеИспользовать	= 1;
	КонецЕсли;
	
КонецПроцедуры // Конструктор()


//******************************************************************************
// ОбработатьСобытие_ПослеСозданияФормы(Параметры, ТекстСсылкиНаДелегата)
//
// Параметры: 
//  Параметры, ТекстСсылкиНаДелегата
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  ТекстОписания
//
Функция ОбработатьСобытие_ПослеСозданияФормы(Параметры, ТекстСсылкиНаДелегата)
	
	//+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++  
	// Изменяем :
	//	- восстанавливаем значения ранее введенного пользователем документа того же вида
	//		(восстанавливаем только реквзиты шапки)

	Результат			= 1;
	СсылкаКонтекст		= Параметры.ПолучитьЗначение(1);
	ДиалогФормы			= СоздатьОбъект("Форма.Диалог");
	ТаблицаРеквизитов	= ДиалогФормы.ПолучитьТаблицуАтрибутов(СсылкаКонтекст);
	
	//+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++  
	ВидДокумента			= СсылкаКонтекст.Вид();
	Префикс					= "ЗначенияПоУмолчанию_Документа_" + ВидДокумента;
	КоличествоРеквизитов	= Метаданные.Документ(ВидДокумента).РеквизитШапки();
	Для НомерРеквизита = 1 По КоличествоРеквизитов Цикл
		Идентификатор	= Метаданные.Документ(ВидДокумента).РеквизитШапки(НомерРеквизита).Идентификатор;
		СсылкаКонтекст.УстановитьАтрибут(Идентификатор, ВосстановитьЗначение(Префикс + "Реквизит_" + Идентификатор));
	КонецЦикла;
	
	//+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++  
	// И перерисуем форму
	СсылкаКонтекст.Форма.Обновить();
	РасширениеФормы	= СоздатьОбъект("РасширениеФормы");
	РасширениеФормы.УстановитьФорму(СсылкаКонтекст.Форма);
	РасширениеФормы.СбросМодифицированности();
	
	Возврат Результат;
КонецФункции // ОбработатьСобытие_ПослеСозданияФормы()


//******************************************************************************
// ОбработатьСобытие_ПослеЗакрытияФормы(Параметры)
//
// Параметры: 
//  Параметры
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  ТекстОписания
//
Функция ОбработатьСобытие_ПослеЗакрытияФормы(Параметры)
	
	СсылкаКонтекст			= Параметры.ПолучитьЗначение(1);
	ВидДокумента			= СсылкаКонтекст.Вид();
	Префикс					= "ЗначенияПоУмолчанию_Документа_" + ВидДокумента;
	КоличествоРеквизитов	= Метаданные.Документ(ВидДокумента).РеквизитШапки();
	Для НомерРеквизита = 1 По КоличествоРеквизитов Цикл
		Идентификатор	= Метаданные.Документ(ВидДокумента).РеквизитШапки(НомерРеквизита).Идентификатор;
		СохранитьЗначение(Префикс + "Реквизит_" + Идентификатор, СсылкаКонтекст.ПолучитьАтрибут(Идентификатор));
	КонецЦикла;
	
КонецФункции // ОбработатьСобытие_ПослеЗакрытияФормы()


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

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


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


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


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

