Index: src/moduls/ui/WebVision/vca_sess.cpp
===================================================================
--- src/moduls/ui/WebVision/vca_sess.cpp	(revision 1978)
+++ src/moduls/ui/WebVision/vca_sess.cpp	(working copy)
@@ -6287,11 +6287,70 @@
 	vals.clear();
 	if( addr().empty() )    return;
     }
+    //    mess_debug(__func__,"\n\n\nSource: %s",addr().c_str());
+        if(addr()=="<EVAL>")	return;
+
+    //    mess_debug(__func__,"vals.size()= %d",vals.size());
+    //    mess_debug(__func__,"arh_per= %lld",arh_per);
+    //    mess_debug(__func__,"arh_beg= %lld",arh_beg);
+    //    mess_debug(__func__,"arh_end= %lld",arh_end);
+
+        string type=TSYS::strSepParse(addr(),0,':');
+
+        //mess_debug(__func__,"Type: %s",type.c_str());
+
+        if(type=="val")
+        {
+    //    	mess_debug(__func__,"tTime= %lld",tTime);
+    //    	mess_debug(__func__,"tSize= %lld",tSize);
+    //    	mess_debug(__func__,"tTimeGrnd= %lld",tTimeGrnd);
+    //    	mess_debug(__func__,"bufLim= %d",bufLim);
+
+        	string value = addr().substr(type.size()+1,string::npos);
+
+        	double v=atof(value.c_str());
+
+        	//mess_debug(__func__,"value=%s, v=%f",value.c_str(),v);
+    /*
+        	if(full || tTimeGrnd < arh_beg)
+        	{
+        		mess_debug(__func__,"full= %s",(full)?"true":"false");
+      			vals.clear();
+        		arh_per=1e6;
+        		for(int64_t i=tTimeGrnd; i<=tTime; i+=arh_per)
+        		{
+        			vals.push_back(SHg(i,v));
+        		}
+        	}
+        	else
+        	{
+        		vals.push_back(SHg(tTime,v));
+        	}
+
+        	//while(vals.size() > bufLim)	vals.pop_front();
+        	while ( vals.front().tm<tTimeGrnd )
+        		vals.pop_front();
+    */
+        	vals.clear();
+        	vals.push_back(SHg(tTimeGrnd,v));
+        	vals.push_back(SHg(tTime,v));
+        	arh_beg=vals[0].tm;
+        	arh_end=vals[vals.size()-1].tm;
+        	val_tp = 2;
+        }
+        else		//default is addr
+    {
+
+    if(type!=addr())
+    	mLoadaddr = addr().substr(type.size()+1,string::npos);
+    else
+    	mLoadaddr = addr();
+
     //> Get archive parameters
     if( !arh_per || tTime > arh_end )
     {
 	XMLNode req("info");
-	req.setAttr("arch",arch)->setAttr("path",addr()+"/%2fserv%2fval");
+	req.setAttr("arch",arch)->setAttr("path",loadaddr()+"/%2fserv%2fval");
 	if( mod->cntrIfCmd(req,user,false) || atoi(req.attr("vtp").c_str()) == 5 )
 	{ arh_per = arh_beg = arh_end = 0; return; }
 	else
@@ -6308,7 +6367,7 @@
     if( owner().tTimeCurent && trcPer && owner().valArch.empty() && (!arh_per || (arh_per >= trcPer && (tTime-valEnd())/vmax(wantPer,trcPer) < 2)) )
     {
 	XMLNode req("get");
-	req.setAttr("path",addr()+"/%2fserv%2fval")->
+	req.setAttr("path",loadaddr()+"/%2fserv%2fval")->
 	    setAttr("tm",TSYS::ll2str(tTime))->
 	    setAttr("tm_grnd","0");
 	if( mod->cntrIfCmd(req,user,false) ) return;
@@ -6356,7 +6415,7 @@
     XMLNode req("get");
     m1: req.clear()->
 	    setAttr("arch",arch)->
-	    setAttr("path",addr()+"/%2fserv%2fval")->
+	    setAttr("path",loadaddr()+"/%2fserv%2fval")->
 	    setAttr("tm",TSYS::ll2str(tTime))->
 	    setAttr("tm_grnd",TSYS::ll2str(tTimeGrnd))->
 	    setAttr("per",TSYS::ll2str(wantPer))->
@@ -6402,6 +6461,7 @@
     }
     //> Check for archive jump
     if( arch.empty() && (bbeg-tTimeGrnd)/bper ) { tTime = bbeg-bper; goto m1; }
+    }
 }
 
 void VCADiagram::TrendObj::loadSpectrumData( const string &user, bool full )
Index: src/moduls/ui/WebVision/vca_sess.h
===================================================================
--- src/moduls/ui/WebVision/vca_sess.h	(revision 1978)
+++ src/moduls/ui/WebVision/vca_sess.h	(working copy)
@@ -321,6 +321,7 @@
 		~TrendObj( );
 
 		string	addr( )		{ return mAddr; }
+		string	loadaddr( )		{ return mLoadaddr; }
 		double	bordL( )	{ return mBordLow; }
 		double	bordU( )	{ return mBordUp; }
 		int	color( )	{ return mColor; }
@@ -355,6 +356,7 @@
 	    private:
 		//Attributes
 		string		mAddr;		//A parameter or an archive item address
+		string		mLoadaddr;
 		double mBordLow, mBordUp;	//Borders
 		double		mCurvl;		//Curent value
 		int		mColor;		//Values line color
Index: src/moduls/ui/Vision/vis_shapes.cpp
===================================================================
--- src/moduls/ui/Vision/vis_shapes.cpp	(revision 1978)
+++ src/moduls/ui/Vision/vis_shapes.cpp	(working copy)
@@ -2575,11 +2575,70 @@
 	if(addr().empty())	return;
     }
 
+//    mess_debug(__func__,"\n\n\nSource: %s",addr().c_str());
+    if(addr()=="<EVAL>")	return;
+
+//    mess_debug(__func__,"vals.size()= %d",vals.size());
+//    mess_debug(__func__,"arh_per= %lld",arh_per);
+//    mess_debug(__func__,"arh_beg= %lld",arh_beg);
+//    mess_debug(__func__,"arh_end= %lld",arh_end);
+
+    string type=TSYS::strSepParse(addr(),0,':');
+
+    //mess_debug(__func__,"Type: %s",type.c_str());
+
+    if(type=="val")
+    {
+//    	mess_debug(__func__,"tTime= %lld",tTime);
+//    	mess_debug(__func__,"tSize= %lld",tSize);
+//    	mess_debug(__func__,"tTimeGrnd= %lld",tTimeGrnd);
+//    	mess_debug(__func__,"bufLim= %d",bufLim);
+
+    	string value = addr().substr(type.size()+1,string::npos);
+
+    	double v=atof(value.c_str());
+
+    	//mess_debug(__func__,"value=%s, v=%f",value.c_str(),v);
+/*
+    	if(full || tTimeGrnd < arh_beg)
+    	{
+    		mess_debug(__func__,"full= %s",(full)?"true":"false");
+  			vals.clear();
+    		arh_per=1e6;
+    		for(int64_t i=tTimeGrnd; i<=tTime; i+=arh_per)
+    		{
+    			vals.push_back(SHg(i,v));
+    		}
+    	}
+    	else
+    	{
+    		vals.push_back(SHg(tTime,v));
+    	}
+
+    	//while(vals.size() > bufLim)	vals.pop_front();
+    	while ( vals.front().tm<tTimeGrnd )
+    		vals.pop_front();
+*/
+    	vals.clear();
+    	vals.push_back(SHg(tTimeGrnd,v));
+    	vals.push_back(SHg(tTime,v));
+    	arh_beg=vals[0].tm;
+    	arh_end=vals[vals.size()-1].tm;
+    	val_tp = 2;
+    }
+    else		//default is addr
+    {
+
+    if(type!=addr())
+    	mLoadaddr = addr().substr(type.size()+1,string::npos);
+    else
+    	mLoadaddr = addr();
+
     //> Get archive parameters
     if(!arh_per || tTime > arh_end)
     {
 	XMLNode req("info");
-	req.setAttr("arch",shD->valArch)->setAttr("path",addr()+"/%2fserv%2fval");
+	req.setAttr("arch",shD->valArch)->setAttr("path",loadaddr()+"/%2fserv%2fval");
 	if( view->cntrIfCmd(req,true) || atoi(req.attr("vtp").c_str()) == 5 )
 	{ arh_per = arh_beg = arh_end = 0; return; }
 	else
@@ -2595,8 +2654,9 @@
     int trcPer = shD->trcPer*1000000;
     if( shD->tTimeCurent && trcPer && shD->valArch.empty() && (!arh_per || (arh_per >= trcPer && (tTime-valEnd())/vmax(wantPer,trcPer) < 2)) )
     {
+
 	XMLNode req("get");
-	req.setAttr("path",addr()+"/%2fserv%2fval")->
+	req.setAttr("path",loadaddr()+"/%2fserv%2fval")->
 	    setAttr("tm",TSYS::ll2str(tTime))->
 	    setAttr("tm_grnd","0");
 	if( view->cntrIfCmd(req,true) )	return;
@@ -2647,7 +2707,7 @@
 
     m1:	req.clear()->
 	    setAttr("arch",shD->valArch)->
-	    setAttr("path",addr()+"/%2fserv%2fval")->
+	    setAttr("path",loadaddr()+"/%2fserv%2fval")->
 	    setAttr("tm",TSYS::ll2str(tTime))->
 	    setAttr("tm_grnd",TSYS::ll2str(tTimeGrnd))->
 	    setAttr("per",TSYS::ll2str(wantPer))->
@@ -2695,6 +2755,7 @@
     }
     //> Check for archive jump
     if(shD->valArch.empty() && (bbeg-tTimeGrnd)/bper)	{ tTime = bbeg-bper; goto m1; }
+    }
 }
 
 void ShapeDiagram::TrendObj::loadSpectrumData( bool full )
Index: src/moduls/ui/Vision/vis_shapes.h
===================================================================
--- src/moduls/ui/Vision/vis_shapes.h	(revision 1978)
+++ src/moduls/ui/Vision/vis_shapes.h	(working copy)
@@ -322,6 +322,7 @@
 		~TrendObj( );
 
 		string	addr( )		{ return mAddr; }
+		string	loadaddr( )		{ return mLoadaddr; }
 		double	bordL( )	{ return mBordLow; }
 		double	bordU( )	{ return mBordUp; }
 		QColor	color( )	{ return mColor; }
@@ -354,6 +355,7 @@
 	    private:
 		//Attributes
 		string		mAddr;		//A parameter or an archive item address
+		string		mLoadaddr;
 		double mBordLow, mBordUp;	//Borders
 		double		mCurvl;		//Curent value
 		QColor		mColor;		//Values line color
Index: src/moduls/ui/Vision/vis_run.cpp
===================================================================
--- src/moduls/ui/Vision/vis_run.cpp	(revision 1978)
+++ src/moduls/ui/Vision/vis_run.cpp	(working copy)
@@ -553,8 +553,8 @@
 	    QPoint pnt((i_e/elLine)*(pagl.width()/2),im.height()+fntSize*(2+i_e%elLine));
 	    if(sD->prms[i_e].val().empty() || !sD->prms[i_e].color().isValid()) continue;
 	    //>>> Trend name request
-	    reqName.setAttr("path",sD->prms[i_e].addr()+"/%2fserv%2fval");
-    	    if(cntrIfCmd(reqName,true) || reqName.text().empty())	reqName.setText(sD->prms[i_e].addr());
+	    reqName.setAttr("path",sD->prms[i_e].loadaddr()+"/%2fserv%2fval");
+    	    if(cntrIfCmd(reqName,true) || reqName.text().empty())	reqName.setText(sD->prms[i_e].loadaddr());
 
 	    painter.fillRect(QRect(pnt.x()+2,pnt.y()+2,fntSize-5,fntSize-5),QBrush(sD->prms[i_e].color()));
 	    painter.drawRect(QRect(pnt.x()+2,pnt.y()+2,fntSize-5,fntSize-5));
@@ -727,7 +727,7 @@
 		for(unsigned i_p = 0; i_p < dgDt->prms.size(); i_p++)
     		    if(dgDt->prms[i_p].val().size() && dgDt->prms[i_p].color().isValid())
     		    {
-			CSVr += ";\""+TSYS::path2sepstr(dgDt->prms[i_p].addr())+"\"";
+			CSVr += ";\""+TSYS::path2sepstr(dgDt->prms[i_p].loadaddr())+"\"";
 			if(firstPrm < 0) firstPrm = i_p;
 		    }
 		CSVr += "\x0D\x0A";
@@ -760,7 +760,7 @@
 		CSVr += _("\"Frequency (Hz)\"");
 		for(unsigned i_p = 0; i_p < dgDt->prms.size(); i_p++)
     		    if(dgDt->prms[i_p].fftN && dgDt->prms[i_p].color().isValid())
-			CSVr += ";\""+TSYS::path2sepstr(dgDt->prms[i_p].addr())+"\"";
+			CSVr += ";\""+TSYS::path2sepstr(dgDt->prms[i_p].loadaddr())+"\"";
 		CSVr += "\x0D\x0A";
 		//>>> Place data
 		int fftN = rwdg->size().width();		//Samples number
