
Перем гТипыСвойств;


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


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


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


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


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


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


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