So registrieren Sie Scripts in Vertec
Produktlinie
Standard
|Expert
Betriebsart
CLOUD ABO
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Scripts in Vertec können als Menüpunkte, als Eventscripts oder als Module registriert werden.
Hier in diesem Artikel geht es um das Registrieren von Scripts als Menüpunkte. Das Registrieren von Scripts auf Events oder Scripts als Module finden Sie in den separaten Artikeln.
Für das Registrieren von Scripts braucht es Administratorrechte .
Klicken Sie unter Einstellungen > Berichte & Scripts mit der rechten Maustaste auf Scripts und wählen Sie Neu > Scripteintrag
.
Aktivieren Sie die Checkbox In Vertec Menüs anzeigen
:
In Vertec Versionen vor 6.7.0.12 gibt es diese Checkbox noch nicht. Lesen Sie in diesem Fall einfach weiter.
Bezeichnung |
Unter diesem Namen erscheint das Script später im Menü Aktionen. Es sollte also darauf geachtet werden, dass der Name aussagekräftig ist, aber nicht allzu lang. |
Plattform |
Hier kann angegeben werden, um welche (Code-)Sprache es sich bei dem Script handelt:
In Vertec Versionen vor 6.6 gibt es dieses Feld noch nicht. In diesem Fall muss der Script Text mit einem # beginnen, wenn es sich um ein Python Script handelt. |
Klassen |
Geben Sie hier an, für welche Art von Objekten (Klassen) in Vertec das Script ausgeführt werden kann. Der Menüpunkt erscheint im Menü Aktionen (bzw. im Kontextmenü) nur dort, wofür es registriert wurde. Ist eine Klasse in der Auswahl nicht vorhanden, kann sie auch einfach von Hand ins Feld eingetippt werden. Beachten Sie dabei, dass Klassennamen mit grossem Anfangsbuchstaben geschrieben werden müssen. Klassen in Vertec, die von der Klasse UserEintrag erben. Scripts können also nicht auf Container (Ordner) registriert werden. Versionen vor 6.7.0.12: Gültig sind alleVersionen ab 6.7.0.12 bei Scripts nach neuer Art (siehe Abschnitt Änderungen ab Vertec Version 6.7.0.12 ): Gültig sind alle Klassen in Vertec, die von der Klasse Eintrag erben. Scripts können also auch auf Container (Ordner, Expression-Ordner, Link Container etc.) registriert werden. |
Anzeigebedingung |
Hier kann eine Anzeigebedingung als OCL Expression angegeben werden, mit welcher gesteuert werden kann, ob das Script im Menü Aktionen (bzw. im Kontextmenü) erscheint oder nicht. Durch Klick auf den Button mit den drei Punkten öffnet sich der Expression Editor. Das Resultat dieser Expression muss einen Ja/Nein Wert (Boolean) zurückliefern. Nur wenn die Bedingung erfüllt ist, erscheint das Script im Menü Aktionen. Versionen vor 6.7.0.12Die Bedingung gilt nur für Scripts auf einzelnen Objekten. Bei Scripts, die zur Anzeige auf Listen konfiguriert sind, wird die Bedingung nicht ausgewertet. Die OCL Expression bezieht sich auf das
Versionen ab 6.7.0.12Bei Scripts nach neuer Art (siehe Abschnitt Änderungen ab Vertec Version 6.7.0.12
) bezieht sich die Anzeigebedingung auf die Liste der ausgewählten Objekte (
|
Auf einzelne Objekte anwendbar |
Vertec Versionen vor 6.7.0.12. Setzen Sie hier ein Häkchen, falls das Script auf dem einzelnen Objekt (z.B. auf einer Rechnung) angewendet werden kann. Bei Scripts, die vor 6.7.0.12 registriert wurden, befindet sich diese Checkbox nach dem Update auf 6.7.0.12 auf der Seite Weitere Info. Siehe dazu Abschnitt Änderungen ab Vertec Version 6.7.0.12 . |
Auf Listen (Container) anwendbar |
Vertec Versionen vor 6.7.0.12. Setzen Sie hier ein Häkchen, falls das Script auf einer Liste von Objekten (z.B. auf einer Projektliste) angewendet werden kann. Bei Scripts, die vor 6.7.0.12 registriert wurden, befindet sich diese Checkbox nach dem Update auf 6.7.0.12 auf der Seite Weitere Info. Siehe dazu Abschnitt Änderungen ab Vertec Version 6.7.0.12 . |
Erweiterte Berechtigungen |
Sollen registrierte Scripts später auch von Usern mit eingeschränkten Benutzerrechten ausgeführt werden können, kann für die entsprechenden Codestellen eine erweiterte Berechtigung erteilt werden. Siehe dazu den Artikel Erweiterte Berechtigungen in Scripts . |
Script Text |
Hier wird der Script Code eingefügt. Siehe dazu den Abschnitt Code in Scripts als Menüpunkte weiter unten. |
Ausführen... |
Um das Script zu Testzwecken auszuführen, klicken Sie auf den Button Ausführen. Achten Sie darauf, dass der aktuelle Kontext stimmen muss, um ein Script so zu testen. Andernfalls müssen Sie den Test auf dem betreffenden Eintrag über den Menübutton Aktionen ausführen. |
Script Editor... |
Öffnet das Script, falls es sich um ein Python Script handelt, im Script Editor . Der Script Editor ist dann mit dem Scripteintrag verbunden. Das heisst: wird im Script Editor Code angepasst, ändert sich der Script Text im Scripteintrag ebenfalls. |
Scripts auf einzelnen Objekten können entweder über das Menü Aktionen:
Oder via Rechtsklick ausgeführt werden:
Scripts auf Listen können über das Menü Aktionen oder per Rechtsklick auf den Ordner ausgeführt werden:
Bei Scripts nach neuer Art (siehe Abschnitt Änderungen ab Vertec Version 6.7.0.12) können Scripts auch auf selektierten Objekten ausgeführt werden:
Wird ein solches Script wie ein herkömmliches Listenscript via Menü Aktionen oder per Rechtsklick auf den Container (Ordner) ausgeführt, werden alle Einträge der Liste übergeben:
Beim Script Code muss es sich um gültigen Python Code (oder veraltet auch VBScript) handeln. Aus dem Script heraus ist das ganze Vertec Objektmodell zugänglich.
Die Checkboxen Auf einzelne Objekte anwendbar
oder Auf Listen (Container) anwendbar
werden von der Hauptseite des Scripteintrags entfernt.
In Vertec Menüs anzeigen
auf der Hauptseite angezeigt. In diesem Fall greift das neue Verhalten (Code ab Vertec 6.7.0.12
).Die Variable argobject
steht im Script nicht zur Verfügung. Stattdessen gibt es die Variable selectedobjects
. Diese enthält die Liste der für die Ausführung des Scripts gewählten Objekte:
currentobject
, welche den Container (Ordner) enthält.for obj in selectedobjects: ...
Die Variable argobject
liefert das zurzeit aktuelle Objekt (den aktuellen Eintrag) in Vertec.
projekt = argobject
currentobject
, welche den übergeordneten Container (Ordner) enthält.argobject.eintraege
aufrufbar.
projektlist = argobject.eintraege for projekt in projektlist: ...