Anzeige und Bearbeitung von zusätzlichen Registern in Stammdaten

Bei einer Projektsteuerung können Mitarbeiter verplant werden. Um hier eine valide Eingabe tätigen zu können, sollen im Mitarbeiterstamm des Standards Fehlzeiten (geplante Urlaube, Weiterbildung etc.) hinterlegt werden können. Da die anzulegenden Metadaten nicht von neuen Registern/Feldgruppen, sondern von der Beziehung abhängen, wollen wir diesen Punkt zuerst klären.

Frage: Handelt es sich um eine 1:N-Beziehung?
  • Die Antwort ist Ja: Sie müssen den Hauptdatensatz des Standards, den eigenen Datensatz, das Daten-Edit-Element des Standards und ein Multi-Daten-Edit-Element anlegen
  • Die Antwort ist Nein: Sie müssen den Hauptdatensatz des Standards und das Daten-Edit-Element des Standards anlegen

Die Fehlzeiten sind eine 1:N-Beziehung. Im Kapitel Erstellung eines Stammdatendialoges wird beschrieben, wie die 1:N-Beziehungen in den Metadaten definiert werden. Sie werden in der Eigenschaft "Detail-Datensätze" des Hauptdatensatzes eingetragen. Daher muss auch der Hauptdatensatz angelegt werden. Da wir die neue 1:N-Beziehung beim Hauptdatensatz hinterlegen müssen, fangen wir mit dem neuen Datensatz an. Die zugrunde liegende Tabelle ist "BPKMitarbeiterFehlzeiten". Wir verwenden den Assistenten "Tabelle importieren". In allen Bereichen (Datensatz und Elemente) legen wir dafür die Gruppe "Mitarbeiterstamm" an.

  • Anlage des Datensatzes "recMitarbeiterstammFehlzeiten"
    • "Titel" = "Fehlzeiten"
    • "Primärschlüsseltyp 1" = "Tan basierend auf Tabelle 1"
    • Nacharbeiten der Felder
      • "DatumVon"
        • "Titel" = "Von"
        • "Datentyp" = "Date"
      • "DatumBis"
        • "Titel" = "Bis"
        • "Datentyp" = "Date"
      • "Fehlzeit"
        • "Titel" = "Art"
  • Anlage des Datensatzes "recMitarbeiterstamm"
    • "Anhängen an Datensatz der Partner-Kennung" = "Sage.Wawi"
    • "Detail-Datensätze" = "virtueller Feldname = Fehlzeiten, Detail-Datensatz-Referenz = recMitarbeiterstammFehlzeiten.<ihre_partnerid>.<ihre_loesungid>, Datensatz-Beziehung = MasterKey=Nummer, DetailKey = Mitarbeiter"
  • Anlage des Multi-Daten-Edit-Elementes "mdeMitarbeiterstammFehlzeiten" mit "Datenherkunft zuordnen" = "recMitarbeiterstammFehlzeiten"
    • Nacharbeiten der Felder
      • "FehlzeitId"
        • "Sichtbarkeit" = "Versteckt"
      • "Mitarbeiter"
        • "Sichtbarkeit" = "Versteckt"
  • Anlage des Daten-Edit-Elementes "ediMitarbeiterstamm"
    • "Anhängen an Daten-Edit-Element der Partner-Kennung" = "Sage.Wawi"
      • Anlage der Daten-Edit-Element-Registerkarte "Fehlzeiten"
        • Anlage der Daten-Edit-Element-Gruppe "Fehlzeiten"
          • Anlage des Daten-Edit-Element-Feldes "Fehlzeiten"
            • "Typ" = "Unterelement"
            • "Unterelement" = "mdeMitarbeiterstammFehlzeiten.<ihre_partnerid>.<ihre_loesungid>"
            • "Zeilenanzahl" = "4"
  • Anlage des Kontextmenüs "MitarbeiterFehlzeiten"
    • Anlage des Kontextmenüeintrags "Loeschen"
      • "Funktionstitel" = "Löschen"
      • "Funktionskurztitel" = "Löschen"
      • "Position in Sortierung" = "1"
      • "Schalflächenposition" = "1"
      • "Funktionsaufruf" = "DatensatzLoeschen.Sage.System"
      • "für Wawi?" aktivieren
  • Zuordnung des Kontextmenüs "MitarbeiterFehlzeiten" zum Multi-Daten-Edit-Element "mdeMitarbeiterstammFehlzeiten"
Frage: Basieren Daten, die in der Liste angezeigt werden, auf Daten, die in der Mandanten-Datenbank mit Werten gespeichert werden, die nicht der gewünschten Anzeige entsprechen (in unserem Beispiel „Fehlzeit“)?
  • Antwort ist Ja: Sie benötigen zusätzlich String Ressourcen.
  • Antwort ist Nein: Daten werden weiterhin als Integerwerte bzw. Checkboxen angezeigt

Laut Beschreibung im Beispiel gibt es festgelegte Arten der Fehlzeiten. Diese Arten legen wir als String-Ressource an:

NameIDWert
Fehlzeit0Verfügbar
Fehlzeit1Urlaub
Fehlzeit2Sonderurlaub
Fehlzeit3Krankmeldung

Wählen Sie den Datensatz "recMitarbeiterstammFehlzeiten" aus und selektieren Sie dann das Feld "Fehlzeit". Ändern sie die Eigenschaft "Datentyp" in "Indizierter String" und hinterlegen Sie die String-Ressourcen in der Eigenschaft "Datentyp Ergänzung".

Frage: Müssen Daten erfasst und/oder angezeigt werden, die zwar in den zugrunde liegenden Tabellen des Stammdatendialogs gespeichert, aber auf Daten beruhen, die in anderen Bereichen der Applikation erfasst werden?
  • Antwort ist Ja: Sie benötigen zusätzliche Datenreferenzen und/oder Datenklassen und/oder serverseitige Datenbeschaffung
  • Antwort ist Nein: Weiter mit Validierungen

Der Vertreter ist ein Mitarbeiter. Die Datenklasse für Mitarbeiter ist im Standard bereits vorhanden. Wählen Sie den Datensatz "recMitarbeiterstammFehlzeiten" aus und selektieren Sie dann das Feld "Vertreter". Ändern sie die Eigenschaft "Datentyp" in "Schlüssel 1 einer Datenklasse" und hinterlegen Sie in der Eigenschaft "Datenklasse" "clsMitarbeiter.Sage.System".

Frage: Müssen Eingaben/Änderungen vor dem Speichern, oder das Löschen von Datensätzen validiert werden?
  • Die Antwort ist Ja: Sie brauchen einen Makroaufruf und eine .Net-Assembly, die serverseitig ausgeführt wird
  • Die Antwort ist Nein: Die Anzeige einer zusätzlichen Registerkarte in Standard-Stammdaten ist abgeschlossen

Die Aufgabe ist, zu prüfen, ob bei einer Fehlzeit "Urlaub bezahlt" und "Sonderurlaub" eine Vertretung angegeben wurde. Wie bereits mehrfach erwähnt, erfolgt eine Vaildierung immer serverseitig. Wir codieren die Validierung und hinterlegen im Datensatz "recMitarbeiterstammFehlzeiten" im Ereignis "Vor Änderung":

Zeile
Befehl
Parameter 1
Parameter 2
1WennIsRunningOnServer()
2AufrufenDllSagede.ADID.Projektsteuerung.RealTimeData.dllSagede.ADID.Projektsteuerung.RealTimeData.Macros.MitarbeiterstammFehlzeitenBeforeUpdate
3Wenn[_Canceled]
4FehlerMelden100065830.ADID_Projektsteuerung.Platzhalter.0[_CanceledMessage]
5Abbruch

6EndeWenn

7EndeWenn

Hinweis für Developer Partner

WDB-Eintrag 203334:

Dokument "Zusatzdokumentation zum Wiki für Developer Partner", Kapitel 2.1 MacroProcessBase

Anhang ADID.Projektsteuerung.rar

Dateien/Klassen MitarbeiterstammFehlzeitenBeforeUpdate