Script: Listeneinstellungen kopieren

Kopiert die Listeneinstellungen von Ordner, LinkContainern und Ressourcenplanungsansichten

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 28.11.2005
Aktualisiert: 11.05.2023 | Berücksichtigt dynamische Spalten und kann auch auf Ressourcenplanungsansichten ausgeführt werden.

Kopiert die Listeneinstellung eines Ordners, LinkContainers oder einer  Ressourcenplanungsansicht in die aktuelle Ansicht.

Es ist wichtig, dass sorgfältig darauf geachtet wird, was übertragen wird. Werden Listeneinstellungen an Orte übertragen, wo sie nicht passen, kann Vertec damit zum Absturz gebracht werden.

Deshalb empfehlen wir Ihnen, das Script nicht zu registrieren, sondern es über den Script Editor zu verwenden.

Sie können Listeneinstellungen, die Sie für alle Listen einer Klasse (z.B. alle Adresslisten) verwenden möchten, auch als Standard hinterlegen. Siehe dazu den Artikel über die Listeneinstellungen - Button Als Standard speichern.

Versionen

Vertec Version Besonderheit Version Script
Ab Vertec 6.6 Berücksichtigt dynamische Spalten und kann auch auf Ressourcenplanungsansichten ausgeführt werden. CopyListeneinstellungen.py

Ausführen

Ordner und LinkContainer

Das Script muss auf dem Ordner/LinkContainer ausgeführt werden, der die Listeneinstellungen erhalten soll.

Wählen Sie diesen an und öffnen Sie dann den Script Editor .

Führen Sie das Script aus. Es erscheint ein Browser, wo der Ordner/LinkContainer, von dem die Listeneinstellungen kopiert werden sollen, ausgewählt werden kann.

Ressourcenplanungsansichten

Die Listeneinstellungen von Tabellen in der Ressourcenplanung erfolgt wie gewohnt über den Button Listeneinstellungen direkt auf der Tabelle.

Das Kopieren erfolgt jedoch auf der Definition der Ressourcenplanungsansicht. Diese sind unter Einstellungen > Ressourcenplanung > Ressourcenplanungsansichten zu finden.

Öffnen Sie die Ressourcenplanungsansicht, auf welche Sie Listeneinstellungen übertragen möchten. Öffnen Sie dann den Script Editor und führen Sie das Script aus.

Es erscheint ein Browser, wo die Ressourcenplanungsansicht, von der die Listeneinstellungen kopiert werden sollen, ausgewählt werden kann.

Scripttext

# 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)
Bitte wählen Sie Ihren Standort