Script zum Testen der Performance von einzelnen Spalten eines Ordners
Product line
Standard
|Expert
Operating mode
CLOUD ABO
|ON-PREMISES
Modules
Services & CRM
Budget & Phases
Purchases
Resource Planning
Business Intelligence
Dieses Python Script ermöglicht es, die Performance eines (über die ID angegebenen) Ordners zu ermitteln. Als Resultat wird eine Liste zurückgeliefert mit der Ladezeit der einzelnen Spalten.
Kopieren Sie untenstehenden Scripttext in den Script Editor .
Eruieren Sie dann die Interne Id des Ordners, den Sie analysieren wollen: Klicken Sie mit der rechten Maustaste auf den Ordner und wählen Sie Eigenschaften. Darin finden Sie die Interne Id
:
Nun wechseln Sie in den Script Editor und klicken auf den Pfeil Ausführen (Ctrl+E
). Es erscheint eine Inputbox, wo Sie die oben ermittelte ID des Ordners angeben:
Klicken Sie auf OK
.
Im Ausgabefenster erscheint die Liste der Spalten mit den jeweiligen Ladezeiten:
Für die zu ermittelnden Spalten müssen Listeneinstellungen vorhanden sein, sonst erscheint die Meldung
Der angegebene Ordner hat keine persistenten Spaltendefinitionen. Sie können erstellt werden durch eine minimale Änderung, z.B. einer Spaltenbreite.
Wenn diese Meldung erscheint, können Sie im entsprechenden Ordner einfach eine Spalte etwas breiter machen oder sonst etwas ändern, danach funktioniert das Script.
# import time import vtcapp # Zu evaluierenden Ordner per interne ID definieren ordid = vtcapp.inputbox("Ordnerperformance", "ID des Ordners eingeben", "") try: ord = vtcapp.getobjectbyid(ordid) except: vtcapp.msgbox("Kein Ordner mit dieser ID gefunden.",0,"Ordnerperformance") else: if not ord.evalocl("self->oclIsKindOf(AbstractOrdner)"): vtcapp.msgbox("Kein Ordner mit dieser ID gefunden.",0,"Ordnerperformance") else: # Objekte des Ordners laden. start = time.time() lstobj = ord.evalocl("eintraege.list") end = time.time() print("{} Ordnerobjekte laden: {}".format(len(lstobj), str(end-start))) # Spaltendefinitionen des Ordners(boldId) als Liste erzeugen lstcols = ord.evalocl("gridDefs.gridcols->orderby(orderidx)") # Falls keine Spaltendefinitionen vorhanden sind, dann gibt # es vermutlich keine persistenten. Den User darauf hinweisen. if not lstcols: vtcapp.msgbox("Der angegebene Ordner hat keine persistenten Spaltendefinitionen. Sie können erstellt werden durch eine minimale Änderung, z.B. einer Spaltenbreite.",0,"Ordnerperformance") else: # zur Messung der Laufzeit durch Liste der Spalten iterieren for col in lstcols: start = time.time() #zusätzlich durch die Ordnerelemente iterieren, um das #Berechnen der OCL-Expression für jede Zeile/Zelle zu simulieren for obj in lstobj: temp = obj.evalocl(col.expression) end = time.time() if col.titel: titel = col.titel else: titel = "(kein Spaltentitel)" print(titel.encode() + ':', str(end-start))