public override void Put(IDataWriter wr_)
		{
			var fs_ = Descriptor.Fields;
			if(HasI32) wr_.AsInt(fs_[0], _i32);
			if(HasI64) wr_.AsLong(fs_[1], _i64);
			if(HasStr) wr_.AsString(fs_[2], Str);
			if(HasBts) wr_.AsBytes(fs_[3], Bts);
			if(HasBln) wr_.AsBool(fs_[4], _bln);
			if(HasFlt) wr_.AsFloat(fs_[5], _flt);
			if(HasCur) wr_.AsCurrency(fs_[6], _cur);
			if(HasDbl) wr_.AsDouble(fs_[7], _dbl);
			if(HasDat) wr_.AsDate(fs_[8], _dat);
			if(HasSi32) wr_.AsSi32(fs_[9], _si32);
			if(HasSi64) wr_.AsSi64(fs_[10], _si64);
			if(HasUi32) wr_.AsInt(fs_[11], (int)_ui32);
			if(HasUi64) wr_.AsLong(fs_[12], (long)_ui64);
			if(HasDec) wr_.AsDecimal(fs_[13], _dec);
			if(HasChr) wr_.AsChar(fs_[14], _chr);
			if(HasEnu) wr_.AsEnum(fs_[15], (int)_enu);
			if(HasF32) wr_.AsBit32(fs_[16], (int)_f32);
			if(HasF64) wr_.AsBit64(fs_[17], (long)_f64);
		}
		public override void Put(IDataWriter wr_)
		{
			var fs_ = Descriptor.Fields;
			if(HasName) wr_.AsString(fs_[3], _name);
			switch (_ztest_id_) 
			{
				case 0: break;
				case 1: wr_.AsString(fs_[0], _str); break; 
				case 2: wr_.AsBytes(fs_[1], _date); break; 
				case 3: wr_.AsMessage(fs_[2], _msg); break; 
				case 10: wr_.AsInt(fs_[4], _i32); break; 
				case 11: wr_.AsBool(fs_[5], _bol); break; 
				case 12: wr_.AsChar(fs_[6], _cha); break; 
				case 14: wr_.AsSi32(fs_[7], _si3); break; 
				case 15: wr_.AsBit32(fs_[8], (int)_fx3); break; 
				case 16: wr_.AsLong(fs_[9], (long)_ui64); break; 
				case 17: wr_.AsSi64(fs_[10], _si64); break; 
				case 18: wr_.AsLong(fs_[11], _i64); break; 
				case 19: wr_.AsDouble(fs_[12], _dbl); break; 
				case 20: wr_.AsFloat(fs_[13], _flt); break; 
				case 21: wr_.AsDate(fs_[14], _dat); break; 
			}
		}
		public override void Put(IDataWriter wr_)
		{
			var fs_ = Descriptor.Fields;
			if(HasValue) wr_.AsSi64(fs_[0], _value);
		}