//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|                      Абстрактные сохраняемые настройки классов                             |
//	+                                      ShmalevoZ                                            +
//	|                                       2009-07                                             |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++

//---------------------------------------------------------------------------------------------
// Собственные атрибуты
Перем гСхема;
Перем гСекция;
Перем гПараметры;


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


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


//******************************************************************************
// БазовыйКласс()
//
// Параметры: 
//  
//
// Возвращаемое значение:
//  Общие.Абстрактный.Запись
//
// Описание:
//  Объект - родитель
//
Функция БазовыйКласс()
	
	Возврат _this()._БазовыйКласс("Общие.Абстрактный.Запись");
	
КонецФункции // БазовыйКласс()


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


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


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


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


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


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