Script to test the performance of individual columns of a folder
Product line
Standard
|Expert
Operating mode
CLOUD ABO
|ON-PREMISES
Modules
Services & CRM
Budget & Phases
Purchases
Resource Planning
Business Intelligence
This Python script allows to determine the performance of a folder (specified by the ID). As a result, a list is returned with the load time of each column.
Copy the below Script Text in the Script Editor .
Then find out the internal ID of the folder you want to analyze, right-click on the folder and select Properties. There you will find the Interne Id
:
Now switch to the Script Editor and click on the Run arrow ( Ctrl+E
). An input box will appear, where you specify the above-determined folder ID:
Click OK
.
In the output window, the list of columns with the respective loading times appears:
List settings must be available for the columns to be determined, otherwise the message appears
Der angegebene Ordner hat keine persistenten Spaltendefinitionen. Sie können erstellt werden durch eine minimale Änderung, z.B. einer Spaltenbreite.
If this message appears, you can simply make a column a little wider in the corresponding folder or change something else, then the script will work.
# 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))