
// Набор свойств
Перем гСвойства;
Перем гКоллекцияФиксирована;


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


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


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


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


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


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


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


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


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


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