Scripts als Module

Scripts als Module registrieren

Product line

Standard

|

Expert

Operating mode

CLOUD ABO

|

ON-PREMISES

Modules

Services & CRM

Budget & Phases

Purchases

Resource Planning

Business Intelligence

Created: 14.08.2024
Updated: 19.08.2024 | Artikel ausgelagert.

In Python ist es möglich, Funktionen und Klassen aus anderen Scripts aufzurufen. Funktionen und Klassen, welche öfters bzw. in mehreren Scripts verwendet werden, können in ein eigenes Script (Modul) ausgelagert werden.

Auch für Custom Renderer  und List Controller , sowie für kundenspezifische Anpassungen der Ressourcenplanung  und von Schnittstellen (Extensions) werden Scripts als Module verwendet.

Ein Modul wird wie ein normales Script via Einstellungen > Berichte & Scripts > Scripts erzeugt: Wählen Sie mit der rechten Maustaste Neu > Scripteintrag.

Folgende Felder sind bei Modulen relevant:

Bezeichnung

Modulnamen dürfen keine Leerzeichen im Namen haben. Auch Umlaute sind nicht zu empfehlen.

Das Modul wird später mit diesem Namen importiert bzw. aufgerufen. Am besten wählen Sie eine Bezeichnung, die einen Hinweis auf den Inhalt gibt, sodass Sie auch in der Liste leicht erkennen können, um welches Modul es sich handelt.

Beachten Sie, dass Python case-sensitiv ist. Der Aufruf des Moduls muss also mit der gleichen Gross-/Kleinschreibung erfolgen, wie die Bezeichnung hier definiert wird.

Plattform

Bei Modulen muss hier Python ausgewählt sein.

In Vertec Versionen vor 6.6 gibt es dieses Feld noch nicht. In diesem Fall muss der Script Text mit einem # beginnen.

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 .

Beachten Sie, dass das Erteilen von erweiterten Berechtigungen während der Ausführung des erweiterten Codes systemweit greift, also auch, wenn man in einem Script etwas aus einem anderen Modul aufruft.

Script Text

Hier wird der Python Code eingefügt. Siehe dazu den Abschnitt Code in Scripts als Module weiter unten.

Script Editor...

Öffnet das Script im.Script Editor . Der Script Editor ist dann mit dem Scripteintrag direkt verbunden. Das heisst: wird im Script Editor Code angepasst, ändert sich der Script Text im Scripteintrag ebenfalls.

Code in Scripts als Module

In Modulen können Klassen und Funktionen definiert werden.

Funktionen

def funktionsname():
    ...

In Klammern können der Funktion Parameter übergeben werden. Funktionen ohne Parameter werden mit leeren Klammern erzeugt.

Um eine Funktion aus einem anderen Script (Modul) aufzurufen, muss dieses zuerst importiert werden:

import modulname

Der Modulname entspricht der Bezeichnung des Scripts (siehe oben). Der Aufruf der Funktion erfolgt via

modulname.funktionsname

import modulname
modulname.funktionsname

Klassen

class classname:
    ...

Falls die Klasse von einer anderen Klasse erbt, kann diese in Klammern übergeben werden:

class baseclassname:
   ...

class classname(baseclassname):
    ...

Innerhalb der Klasse können auch wieder Funktionen definiert werden.

Bei Custom Renderern , List Controllern  und Erweiterungen der Ressourcenplanung  ist vorgegeben, welche Funktionen Sie definieren können bzw. müssen. Der Zugriff erfolgt via modulname.classname.

Bei eigenen Sammlungen können Sie die Funktionen selbst definieren. Um eine Klasse von einem anderen Modul zu verwenden, muss dieses zuerst importiert werden:

import modulname

Sollen von dieser Klasse Funktionen verwendet werden, muss sowohl das Modul als auch die Klasse importiert werden:

from modulname import classname

Module bei Änderungen neu laden

Wird ein Modul geändert, wird es innerhalb der gleichen Session beim nächsten Aufruf erneut geladen (ab Vertec 6.4).

Andere Sessions erkennen den geänderten Scriptcode zwar via Notif Server, laden das Modul aber nicht erneut. In diesem Fall muss entweder Vertec neu gestartet oder das Modul mit dem Befehl reload(modulname) neu geladen werden. Entweder einmalig im Script Editor  oder auch direkt im Script:

import modulname
reload(modulname)
Bitte wählen Sie Ihren Standort