Grundlagen Visual Basic Scripts
Produktlinie
Standard
|Expert
Betriebsart
CLOUD ABO
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Hinweis: Neue Scripts sollten immer als Python Scripts , nicht als VBScripts verfasst werden. VBScripts stehen nur aus Abwärtskompatibilitätsgründen noch zur Verfügung und sind aus Sicherheitsgründen in den Cloud Clients nicht empfohlen bzw. ganz deaktiviert. Siehe dazu auch Punkt 7 unseres 10-Punkte-Plans für eine zukunftsfähige Vertec-Installation .
Vertec unterstützt die Microsoft Scripting Engine (VBScript), um benutzerdefinierte Scripts ausführen zu können.
Aus einem Vertec Script ist wiederum das ganze Vertec Objektmodell zugänglich. Dies geschieht wie der Zugriff aus Word über eine (interne) COM / ActiveX Schnittstelle.
Ein Script kann entweder als Scripteintrag oder in einem Text-Editor (z.B. Notepad) erstellt werden. Mehr Informationen über VBScript finden Sie unter: Programming with VBScript oder unter: VBScript Language Reference auf der Microsoft Homepage.
Scripts, die immer wieder verwendet werden, können in Vertec registriert werden. Sie sind dann über den Menüpunkt Aktionen oder im Kontextmenü (über die rechte Maustaste) abrufbar. Siehe dazu den Artikel über das Registrieren von Scripts.
Der Zugriff auf das Vertec Objektsystem aus einem Script erfolgt immer über die globale Variable vertec
. Diese Variable ist vom Objekttyp IVtcSession und kennt die folgenden wichtigsten Methoden (es sind nur die wichtigsten aufgeführt, die vollständige Liste findet sich im Artikel COM Interfaces):
Eigenschaft | Beschreibung |
---|---|
eval(expression as string) | Evaluiert die angegebene OCL Expression und gibt eine Liste von Objekten zurück. |
argobject | gibt das momentan aktuelle Objekt in Vertec zurück. |
createobject(Klassentyp) | erzeugt ein neues Objekt in Vertec vom angegebenen Klassentyp. |
In den meisten Skripts wird man eine Liste von Objekten (z.B. alle aktiven Projekte) bearbeiten. Das Listen-Objekt ist vom Objekttyp IVtcObjektList und kennt folgende wichtige Methoden und Eigenschaften:
Eigenschaft | Beschreibung |
---|---|
count | gibt die totale Anzahl von Objekten in der Liste zurück. |
objects(i) | gibt das i-te Objekt zurück. Achtung: die Liste beginnt bei 0 und geht bis count-1. |
Einzelne Objekte werden im Objekttyp IVtcObjekt abgelegt. Auf ein einzelnes Objekt kommen Sie entweder über vertec.argobject, indem Sie bei einer Liste von Objekten eines herauspicken (über objects(i)) oder als Resultat von eval("OCL Expression").Das Einzel-Objekt kennt folgende wichtige Methoden und Eigenschaften:
Eigenschaft | Beschreibung |
---|---|
eval(expression as string) | Evaluiert die angegebene OCL Expression , ausgehend vom einzelnen Objekt. |
member(name as string) |
Gibt den Inhalt des Members mit dem angegebenen Namen zurück. So ergibt beispielsweise <myprojekt>.member("code")</myprojekt> den Projektcode zurück. Members können auch geschrieben werden:member("membernamen") = "Ihr Text". |
classname | gibt den Klassennamen des Objektes zurück, z.B. Projekt oder Projektbearbeiter. |
Ansonsten stehen Ihnen alle Funktionen des VBScript zur Verfügung.
Damit Sie einen schnellen Einstieg finden, hier ein Skript-Beispiel. Dieses erzeugt eine neue Projektphase mit dem Code des aktuellen Jahres für alle aktiven Projekte, welche noch keine solche Phase haben:
option explicit dim projektliste dim projekt dim phasenliste dim phase dim i '---hole alle aktiven Projekte set projektliste = vertec.eval("projekt->select(aktiv)") '---Fahre nun durch alle aktiven Projekte durch for i = 0 to projektliste.count - 1 set projekt = projektliste.objects(i) '---Hole die Phase mit Code des aktuellen Jahres, ausgehend vom aktiven Projekt. set phasenliste = projekt.eval("phasen->select (code='" & year(date) & "')") '---Wenn noch keine Phase mit dem gewünschten Code vorhanden, neue erzeugen. if phasenliste.count = 0 then set phase = vertec.createobject("Projektphase") '---Setze das Projekt. phase.member("projekt") = projekt phase.member("code") = year(date) end if next
Es empfiehlt sich, Option Explicit
zu verwenden, da so keine Variablen im Skript benutzt werden können, die vorher nicht definiert wurden.
Beachten Sie ausserdem die Verwendung der verschiedenen Arten von Anführungszeichen. Die doppelten Anführungszeichen bezeichnen Stringwerte in VBScript. Das Argument der Funktion eval
muss daher in doppelten Anführungszeichen stehen. Innerhalb der angegebenen OCL Expression gilt aber die OCL Konvention. Diese verlangt einfache Anführungszeichen für Stringwerte.