VBScripts in Vertec

Grundlagen Visual Basic Scripts

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 20.06.2003
Aktualisiert: 13.07.2023 | Hinweis, dass nur noch Python Scripts erstellt werden sollen.

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.

Objekte

Das "vertec" Objekt (IVtcSession)

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.

Das Listen-Objekt (IVtcObjectList)

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:

EigenschaftBeschreibung
countgibt 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.

Das Einzel-Objekt (IVtcObject)

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.

Beispiel

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.

Bitte wählen Sie Ihren Standort