//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++
//	|                   Запись движения по регистру оперативного учета                          |
//	+                                      ShmalevoZ                                            +
//	|                                       2009-10                                             |
//	+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++---+++

//---------------------------------------------------------------------------------------------
// Собственные атрибуты
Перем гИдентификатор;
Перем гСписокАтрибутов;


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


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


//******************************************************************************
// ВыброситьОшибку(Текст)
//
// Параметры: 
//  Текст					- текст сообщения
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Выбрасывает ошибку времени выполнения
//
Процедура ВыброситьОшибку(Текст)
	
	_this()._ВыброситьИскл(Текст);
	
КонецПроцедуры // ВыброситьОшибку()


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


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


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


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