Aus diesem Grund habe ich ein Script erstellt, das die Systemvariablen mit Hilfe eines Zählers (Script_Lines="1,30,0") blockweise in die Variable Script_Infos schreibt. Das u.g. Script kann über einen Neo-Creator-Button mehrfach manuell ausgeführt werden und tickert damit alle Systemvariablen der CCU blockweise (z.B. 30 Zeilen) in die Variable Script_Infos.
Code: Alles auswählen
!Systemvariable_Lesen
!mit Zeilenzähler: Zeileneinträge aufsteigend/blockweise mit Script_Lines_Index und Anzahl=Script_Lines_Count in Script_Infos eintragen
!Autor:GoSh Stand:02.10.2020
var Script_Infos; !Systemvariable Zeichenkette, die in einem Mediola-Textfeld angezeigt wird
var Script_Lines; !Systemvariable Werteliste(Parts,Count,Index), z.B.: "1,30,0"
integer Script_Lines_Parts; !0=Alle Systemvariable, 1=Nur Zeilenanzahl Script_Lines_Count
integer Script_Lines_Count; !Anzahl darstellbarer Zeilen in einem Mediola-Textfeld
integer Script_Lines_Index; !Script_Lines_Index*Script_Lines_Count = 1.Zeile in Script_Infos
integer SysVar_Count; !Anzahl Systemvariable
string itemID;
string address;
object dp_obj;
integer Counter; !Zeilenzähler
boolean Testflag=false; !true/false;
Script_Infos = dom.GetObject("Script_Infos");
Script_Infos.State(""); !Leeren vor dem Neu-Eintragen
Script_Lines = dom.GetObject("Script_Lines").ValueList();
Script_Lines_Parts = Script_Lines.StrValueByIndex(",", 0).ToInteger();
Script_Lines_Count = Script_Lines.StrValueByIndex(",", 1).ToInteger();
Script_Lines_Index = Script_Lines.StrValueByIndex(",", 2).ToInteger();
foreach(itemID, dom.GetObject(ID_SYSTEM_VARIABLES).EnumIDs()) {SysVar_Count=SysVar_Count+1;} !Anzahl Systemvariable
if (Testflag==true) {
WriteLine("Script_Lines="#Script_Lines#"\n"#"Script_Lines_Count="#Script_Lines_Count.ToString()#"\n"#"Script_Lines_Index="#Script_Lines_Index.ToString());
WriteLine("Script_Lines_Index*Script_Lines_Count="#(Script_Lines_Index*Script_Lines_Count));
WriteLine("SysVar_Count="+SysVar_Count);
}
foreach(itemID, dom.GetObject(ID_SYSTEM_VARIABLES).EnumIDs())
{
Counter=Counter+1;
!WriteLine(itemID);
dp_obj = dom.GetObject(itemID);
!Script_Infos.State(Script_Infos.State()#dp_obj.Timestamp()#" "#dom.GetObject(itemID).HssType()#"="#dp_obj.Name()#"\n");
if ((Counter > (Script_Lines_Index+0)*Script_Lines_Count) && (Counter <= (Script_Lines_Index+1)*Script_Lines_Count) && (Script_Lines_Parts==1))
{ !ggf. Zeilentrennung mit #"|" #"\n"
if (dp_obj.Name()=="Script_Infos")
{Script_Infos.State(Script_Infos.State()#"\n"#Counter.ToString()#". "#dp_obj.Name()#" ("#dp_obj.ID()#")"#" = "#"");}
else
{Script_Infos.State(Script_Infos.State()#"\n"#Counter.ToString()#". "#dp_obj.Name()#" ("#dp_obj.ID()#")"#" = "#dp_obj.Value());}
}
else
{
if (Script_Lines_Parts==0) {Script_Infos.State(Script_Infos.State()#"\n"#Counter.ToString()#". "#dp_obj.Name()#" ("#dp_obj.ID()#")"#" = "#dp_obj.Value());}
}
!if (Testflag==true) {WriteLine("Script_Infos.State()="#Script_Infos.State());}
}
if (Testflag==true) {WriteLine("Script_Infos.State()="#Script_Infos.State());}
!Script_Lines_Index um 1 erhöhen und in Script_Lines eintragen, solange wie Zeilenanfang <= SysVar_Count
Script_Lines_Index=Script_Lines_Index+1;
if ((Script_Lines_Index*Script_Lines_Count) > SysVar_Count) {Script_Lines_Index=0;} !Reset auf Anfang
Script_Lines =Script_Lines_Parts.ToString()#","#Script_Lines_Count.ToString()#","#Script_Lines_Index.ToString();
!WriteLine(Script_Lines);
dom.GetObject("Script_Lines").ValueList(Script_Lines);
!WriteLine(dom.GetObject("Script_Lines").ValueList());
Hab hier im Forum schon viele Tipps bekommen und dachte mir, meine Lösung ist evt. auch für andere von Nutzen ...