Script: Copy List Settings

Copies the list settings of folders, link containers, and resource planning views

Product line

Standard

|

Expert

Operating mode

CLOUD ABO

|

ON-PREMISES

Modules

Services & CRM

Budget & Phases

Purchases

Resource Planning

Business Intelligence

Created: 28.11.2005
Machine translated
Updated: 11.05.2023 | Takes into account dynamic columns and can also run on resource planning views.

Copies the list setting of a folder, link container, or resource planning view to the current view.

It is important to pay careful attention to what is being transferred. If list settings are transferred to locations where they do not fit, Vertec can crash.

Therefore, we recommend that you do not register the script, but use it through the Script Editor.

You can also define list settings that you want to use for all lists of a class (e.g. all address lists) as default. See the article about list settings – Button Als Standard speichern.

Versions

Vertec version Special feature Version Scripting
From Vertec 6.6 Takes into account dynamic columns and can also run on resource planning views. Copylistsettings.py

Execute

Folders and link containers

The script must be run on the folder / link container that you want to get the list settings.

Select it and then open the Script Editor .

Run the script. A browser will appear where you can select the folder / link container from which you want to copy the list settings.

Resource planning views

The list settings of tables in resource planning are done as usual via the button Listeneinstellungen directly on the table.

However, the copying takes place on the definition of the resource planning view. These are under Einstellungen > Ressourcenplanung > Ressourcenplanungsansichten to find.

Open the resource planning view to which you want to transfer list settings, then open the Script Editor and run the script.

A browser appears where you can select the resource planning view from which the list settings are to be copied.

Script Text

# coding: windows-1252
#
#---Bezeichnung: Listeneinstellungen kopieren
#   Klassen: Eintrag
#   CondExpression:
#   ObjectScript: No
#   ContainerScript: Yes
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Kopiert die Listeneinstellung eines anderen
#   Ordners in den aktuellen Ordner. Muss auf dem Ordner
#   ausgeführt werden, der die Listeneinstellungen erhalten soll.
#   Der Ordner, von dem die Listeneinstellungen übernommen werden sollen,
#   kann über eine Ordnerauswahl ausgewählt werden.
#---28.11.2005, Vertec AG: erstellt
#---15.10.2013, mw: Angepasst auf 5.8: xTranslation gelöscht, Abbruchbedingungen implementiert.
#---10.03.2017, sr: Script in Python erstellt
#---21.03.2017, tk: Script ist auch auf LinkContainern ausführbar
#---                Kopieren der Attribute editing, ghostrow und controlDefinition
#---20.03.18,  tik: Angepasst auf 6.2: Verweis auf alte Attribute entfernt (fontSize, fontName etc.)
#---                Exceptionhandling geändert, sodass Fehlermeldungen an den Anwender durchgereicht werden
#---08.10.2021, ll: Zeile if not sourceid.isnumeric(): angepasst.
#---24.11.2021, Funktion copymlmember und selectobjectintree hinzugefügt.
#---01.03.2022, uhe: Sprache DD hinzugefügt.
#---02.08.2022, sth: Member 'isFixed' hinzugefügt.
#---04.05.2023, tha: Angepasst an 6.6: Funktionalität um ViewTypes erweitert, Member 'isDynamic' hinzugefügt
#---08.05.2023, sth: copymlmember korrigiert, Abschlussmeldung hinzugefügt

lngList = ['DE','DD','EN','FR','IT','NV']

def copymember(sourcegridcol, destinationgridcol, name):
    setattr(destinationgridcol, name, getattr(sourcegridcol, name))

def copymlmember(sourcegridcol, destinationgridcol, name):
    for lng in list(lngList):
        mlStr = sourcegridcol.getmlvalue(name, lng)
        if mlStr:
            destinationgridcol.setmlvalue(name, mlStr, lng)

def main(destination):
    #Ist das aktuelle Objekt ein Ordner

    if not destination.eval("oclisKindOf(AbstractOrdner) or oclisKindOf(LinkContainer) or oclisKindOf(ViewType)"):
        vtcapp.msgbox('Sie können dieses Skript nur auf Ordnern, LinkContainern und Ressourcenplanungsansichten ausführen')
        return
    
    if destination.eval("oclIsKindOf(LinkContainer)"):
        destination = destination.rolle
    
    if destination:
        source = vtcapp.selectobjectintree("Zu kopierende Listeneinstellungen auswählen ", [], browsefilter="", selectfilter="AbstractOrdner, LinkContainer, ViewType")
        if source:
            #Analog zur destination
            if source.eval("oclIsKindOf(LinkContainer)"):
                source = source.rolle
            #Erst werden die bestehenden GridDef's gelöscht.
            for griddef in list(destination.griddefs):
                destination.griddefs.remove(griddef)
            #Hole nun die GridDefs des Source-Ordners
            for griddefs in source.griddefs:
                griddefd = vtcapp.createobject('GridDef')
                destination.griddefs.append(griddefd)
                #Kopiere die GridDefs
                copymember(griddefs, griddefd, 'klasse')
                copymember(griddefs, griddefd, 'zeilenhoehe')
                copymember(griddefs, griddefd, 'editing')
                copymember(griddefs, griddefd, 'ghostrow')
                #---Kann nun die gridcoldefs kopieren.
                for gridcols in griddefs.gridcols:
                    gridcold = vtcapp.createobject('GridColDef')
                    griddefd.gridcols.append(gridcold)
                    copymember(gridcols, gridcold, 'alignment')
                    copymember(gridcols, gridcold, 'breite')
                    copymember(gridcols, gridcold, 'color')
                    copymember(gridcols, gridcold, 'controlName')
                    copymember(gridcols, gridcold, 'expression')
                    copymember(gridcols, gridcold, 'writeableExpression')
                    copymember(gridcols, gridcold, 'fontColor')
                    copymember(gridcols, gridcold, 'nurLesen')
                    copymember(gridcols, gridcold, 'orderIdx')
                    copymember(gridcols, gridcold, 'isFixed')
                    copymember(gridcols, gridcold, 'isDynamic')                  
                    copymember(gridcols, gridcold, 'rendererName')
                    copymember(gridcols, gridcold, 'sortOrder')
                    copymember(gridcols, gridcold, 'summiert')
                    copymember(gridcols, gridcold, 'tabStop')
                    copymlmember(gridcols, gridcold, 'titel')
                    copymember(gridcols, gridcold, 'controlDefinition')
            # Nur für Ordner:
            if source.eval('oclisKindOf(AbstractOrdner)') and destination.eval('oclisKindOf(AbstractOrdner)'):
                destination.tabsproklasse = source.tabsproklasse
                
    vtcapp.msgbox('Kopiervorgang beendet')

main(argobject)