Die Vorgehensweise gilt für alphanummerische Datenfelder. Für Aufnahme der Termin-Datenfelder in die Listbox, kontaktieren Sie bitte Ihren PLANTA-Consultant, da hierfür Anlage von neuen DIs und Wertebereichen erforderlich ist.
Für diesen Menüpunkt ein Makro-Modul mit dem folgenden Code anlegen.
Sollen bestimmte Parameter, die im Export-Dialog angegeben werden können, vorbelegt werden, muss dieses Makro individuell angepasst werden. Bei Fragen hierzu wenden Sie sich bitte an Ihren PLANTA-Consultant
get_listboxvalue() aus dem Customizing Helper Modul implementiert lediglich ein Mapping zwischen tatsächlichen Werten in Datentabellen und den IDs festgelegter Listboxwerte in der entsprechenden Tabelle, kann aber kein X-beliebigen Werte aus einem Listbox-Datensatz auslesen.
Lösungsvorschlag: Zusammensetzen und Auseinanderschneiden der Schlüsselwerte über einen Python-Wertebereich
Ein neues DI vom Typ X / ALG wird als Python-Wertebereich angelegt.
Dieses DI wird in der Inkarnation als ID-Feld und im Datenbereich der Listbox für LB-Auswahl benutzt.
Die Methode computeOutput liest die entsprechenden Schlüssel-DIs aus und konkateniert sie mit einer Pipe "|" als Trennzeichen, was mit der Methode format der String-Klasse in Python erreicht werden kann.
Die processInput-Methode trennt die Werte analog wieder auf und schreibt sie in die einzelnen Schlüssel-DIs.
Als Voraussetzung für das korrekte Funktionieren dieses Verfahrens ist die Verwendung des Pipe-Zeichens in Schlüsselwerten verboten.
Die Beispielimplementierung prüft nicht auf das Vorhandensein von Pipes in Schlüsselwerten beim Zusammensetzen und auch nicht auf überschüssige Trenner bzw. Werte beim Zerschneiden
PY
def computeOutput(di):
record = di.get_dtp_record()
key0 = record.get_di_by_id(<key0_numeric_di_no>).get_value()
# etc. für weitere DIs
multicol_key_template = '{0}|{1}|{2}'
multicol_key_value = multicol_key_template.format(key0, key1, key2)
return multicol_key_value
computeOutput.deps = ('DI<key0_textual_di_no>', 'DI<key1_textual_di_no>', ) # etc. für weitere DIs
PY
def processInput(di, oldvalue):
record = di.get_dtp_record()
key0_di = record.get_di_by_id(<key0_numeric_di_no>)
# etc. für weitere DIs
new_value = di.get_value()
key_values = new_value.split('|', 3)
key0_di.set_value(key_values[0])
return new_value
processInput.deps = ('DI<key0_textual_di_no>', 'DI<key1_textual_di_no>', ) # etc. für weitere DIs
Eine textual_di_no ist z.B. der String 000123, numeric_di_no dagegen die Zahl 123
Weiterführende Dokumentation ist zu finden unter PythonValueRange sowie in der Python-Referenz: http://docs.python.org/py3k/ bzw. http://docs.python.org/py3k/library/stdtypes.html#str.split
Eine Kopie vom Modul Mitarbeiterboard (MOD0099GU) erstellen. (Hier: MOD100003)
Im neu erstellten Modul die nicht gewünschten Untermodule löschen (hier: Meine Tätigkeiten, Wochenkalender, Infos, Meine Planungsobjekte) oder bei diesen Untermodulen im Feld Anzeigen die gleichnamige Checkbox deaktivieren.
Die Reihenfolge der restlichen Untermodule so anpassen, dass das Untermodul Zeiterfassung (MOD009ABV) als erstes geöffnet wird. Hierzu für dieses Modul folgende Parameter bearbeiten:
Soll das Modul über einen Link auf der Ressourcen-ID aufgerufen werden,
bei dem gewünschten Ressourcen-DI im Feld Aktions-ID die Nummer des neuen Makros (hier: 100004) und im Feld DF-Verhaltene4 eintragen.
Soll das Modul über ein Kontextmenü aufgerufen werden,
das DI004336 Button/IronPython hinzufügen und bei diesem im Feld Aktions-ID die Nummer des neuen Makros (hier: 100004) und im Feld DF-Verhaltenm4 eintragen.
Aktualisierung von Feldern beim Speichern, wenn ein Wert geändert wurde
PATH = r'C:\Program Files (x86)\Applikation\anwendung.exe'
# Der String, der den Pfad zur Applikation darstellt, wird mit "r" vorangestellt,
# weil sonst der Backslash \ als Escape-Zeichen interpretiert werden würde.
# Siehe http://docs.python.org/reference/lexical_analysis.html#string-literals
ARGS = 'argument1=PLANTA argument2=Nocheins'
# Die Argumente, die an die Applikation übertragen werden sollen, einfach als
# einen fortlaufenden String deklarieren.
def execute_client_script(path, args):
ppms.client_exec("""import clr
clr.AddReference('System')
from System.Diagnostics import Process
Process.Start(r'{path}', r'{args}')""".format(path=path, args=args))
execute_client_script(PATH, ARGS)
Customizen einer Prozessregel zum Einkopieren einer Phase
Customizen einer Prozessregel, mit der eine zukünftige Phase eines Prozessmodells um bereits vorhandene Prozessschritte eines anderen Prozessmodells erweitert werden kann
Sollen in einem individuellen Modul die übergeordnete Ressource oder die Start- und Endperiode angepasst werden, müssen in diesem Modul folgende Anpassungen durchgeführt werden:
Im Parameter Python-Modulunterklasse im Modul Module die Python-Modulunterklasse ppms.module_subclasses.resource.ResourceDatasheet hinterlegen.
Den Menüpunkt Speichern (34) mit einem Makro mit dem folgenden Code überschreiben: