Version 8.1

Breaking Changes

  • Die Version ist binärinkompatibel
  • DevExpress Version 17.2.6.0
  • Stimulsoft Version 2018.2.3.0


In der nächsten Version ändert sich im Bereich "Feld-Attribute anhängen?" für die Eigenschaft "Sichtbarkeit" folgendes Verhalten: Felder mit "Sichtbarkeit = Versteckt" können durch die Eigenschaft "Feld-Attribute anhängen?" nicht mehr geändert werden. Da einige Felder in den Belegerfassungen im Standard auf "Sichtbarkeit = Versteckt" eingestellt sind, aber durchaus auch in den Erfassungen angezeigt werden könnten, werden diese Felder des Standards geändert.

Verkaufsbelegposition

Feld Artikeltyp

strVKBelegPosition

  • Feldtitel von Artikelpositionstyp in Artikeltyp

mdeVKBelegPositionen

  • Zeilennummer von 0 auf 1
  • Sichtbarkeit von Versteckt auf Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediVKBelegerfassung

Anlage in Feldgruppe „PositionSonstiges“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld Gesamteigenmasse

strVKBelegPosition

  • Feldtitel von Gesamteigenmasse in Gesamteigenmasse (kg)

mdeVKBelegPositionen

  • Sichtbarkeit von Versteckt auf Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False
  • Schreibschutz? = True

ediVKBelegerfassung

Anlage in Feldgruppe „PositionSonstiges“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld VKGesamtgewicht

strVKBelegPosition

  • Feldtitel von VKGesamtgewicht in Gesamtgewicht (kg)

mdeVKBelegPositionen

  • Sichtbarkeit von Versteckt auf Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediVKBelegerfassung

Anlage in Feldgruppe „PositionSonstiges“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld VkGrundpreisMengeneinheit

strVKBelegPosition

  • Feldtitel von VkGrundpreisMengeneinheit in Grundpreiseinheit

mdeVKBelegPositionen

Anlage in Vorlage Standard mit

  • Spaltennummer = 0
  • Zeilennummer = 1
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediVKBelegerfassung

Anlage in Feldgruppe „Positionseinheiten“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld VkMengeBasisGrundpreis

strVKBelegPosition

  • Feldtitel von VkMengeBasisGrundpreis in Grundpreisbasis

mdeVKBelegPositionen

Anlage in Vorlage Standard mit

  • Spaltennummer = 0
  • Zeilennummer = 1
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediVKBelegerfassung

Anlage in Feldgruppe „Positionseinheiten“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld VkUmrechnungsfaktorGrundpreisME

strVKBelegPosition

  • Feldtitel von VkUmrechnungsfaktorGrundpreisME in BME enthält GrundME

mdeVKBelegPositionen

Anlage in Vorlage Standard mit

  • Spaltennummer = 0
  • Zeilennummer = 1
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediVKBelegerfassung

Anlage in Feldgruppe „Positionseinheiten“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld VKMittlererEKPreis

strVKBelegPosition

  • Feldtitel von VKMittlererEKPreis in kalkulatorischer EK
  • Schreibschutz? deaktiviert

Der Schreibschutz wird durch serverseitige Codierung sichergestellt (Feld ist in der ReadOnlyFieldList). Durch die Deaktivierung der Eigenschaft „Schreibschutz?“ wird bei programmatische Änderung des Feldes der Beleg Dirty.

mdeVKBelegPositionen

  • Zeilennummer = 1
  • Feldbreite = 6
  • Sichtbarkeit von Versteckt auf Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediVKBelegerfassung

Anlage in Feldgruppe „PositionSonstiges“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld VKRoherloes

strVKBelegPosition

  • Feldtitel von VKRoherloes in Roherlös

mdeVKBelegPositionen

  • Zeilennummer = 1
  • Feldbreite = 6
  • Sichtbarkeit von Versteckt auf Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediVKBelegerfassung

Anlage in Feldgruppe „PositionSonstiges“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Einkaufsbelegposition

Feld Artikeltyp

strEKBelegPosition

  • Feldtitel von Artikelpositionstyp in Artikeltyp

mdeEKBelegPositionen

  • Zeilennummer von 0 auf 1
  • Sichtbarkeit von Versteckt auf Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

ediEKBelegerfassung

Anlage in Feldgruppe „PositionSonstiges“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Feld Gesamteigenmasse

strEKBelegPosition

  • Feldtitel von Gesamteigenmasse in Gesamteigenmasse (kg)

mdeEKBelegPositionen

  • Sichtbarkeit von Versteckt auf Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False
  • Schreibschutz? = True

ediEKBelegerfassung

Anlage in Feldgruppe „PositionSonstiges“ mit

  • Position = 0
  • Sichtbarkeit = Eingeblendet
  • Deaktiviert = True
  • Mit TAB anspringen? = False

Berechtigungen

Da alle Felder von Versteckt auf Eingeblendet umgestellt werden, werden für alle Felder Feldberechtigungen eingetragen.

Die Felder „kalkulatorischer EK“ und „Roherlös“ können kritische Informationen sein. Die Feldberechtigungen dieser Felder werden daher anhand der bereits vergebenen Berechtigungen von „Kalkulation/ Preisfindung“ und „Kalkulation/ Roherlös“ im Datenbankupdate behandelt.

Neuerungen

1:N:M-Beziehungen

Die 1:N:M-Beziehungen ließen sich bereits vorher im AppDesigner definieren. Nun wurde auch die Darstellung auf dem Client, sowie die Behandlung der CRUD-Methoden vom System implementiert.

Die Definition der M-Beziehung erfolgt analog der Definition der N-Beziehung. Die Verknüpfung erfolgt ebenfalls in der Eigenschaft "Detail-Datensätze", nur das die Hinterlegung des Detail-Datensatzes jetzt in der entsprechenden N-Beziehung zu erfolgen hat. Gleiches gilt für die Zuordnung für die UI-Darstellung. Das Multi-Data-Edit-Element der M-Beziehung muss einem Data-Edit-Element der N-Beziehung zugeordnet werden.

Beispiel für einen Stammdatendialog für einen Datensatz

Als Ausgangspunkt nehmen wir das Beispiel "Projektsteuerung" aus Beispiel für die Zusammenhänge der Metadatenobjekte und ergänzen die N-Beziehung "BPKProjektsteuerungMitarbeiter" um einige Felder und legen die M-Beziehung "BPKProjektsteuerungMitarbeiterFehlzeiten" an.

Führen Sie die SQL-Statements aus Vorbereitung der Datenbank auf einer Demodatenbank aus. Zusätzlich führen Sie bitte diese SQL-Statements aus:

SQL-Statements
CREATE TABLE "BPKProjektsteuerungMitarbeiterFehlzeiten"
(
    "FehlzeitId"	INTEGER NOT NULL DEFAULT 0,
    "Mandant"		SMALLINT NOT NULL DEFAULT 0,
    "SteuerungId"	INTEGER NOT NULL DEFAULT 0,
    "Mitarbeiter"	VARCHAR(20) NOT NULL,
    "DatumVon"		DATETIME NOT NULL,
    "DatumBis"		DATETIME NOT NULL,
    "Fehlzeit"		SMALLINT NOT NULL DEFAULT 0,
    "Timestamp"		ROWVERSION,
    CONSTRAINT PK_BPKProjektsteuerungMitarbeiterFehlzeiten PRIMARY KEY CLUSTERED ("FehlzeitId", "Mandant")
)
GO

INSERT INTO USysCatalog ([Table], Revision) VALUES ('BPKProjektsteuerungMitarbeiterFehlzeiten', 1)
GO

ALTER TABLE "BPKProjektsteuerungMitarbeiter"
ADD "Firmenwagen"					KHKBoolean NOT NULL DEFAULT 0,
    "Navigation"					KHKBoolean NOT NULL DEFAULT 0,
    "Mitnahme"						KHKBoolean NOT NULL DEFAULT 0,
    "Notebook"						KHKBoolean NOT NULL DEFAULT 0,
    "StellvertreterProjektleitung"	KHKBoolean NOT NULL DEFAULT 0,
    "ZugriffProjekt"				KHKBoolean NOT NULL DEFAULT 0
GO

Die Datenstruktur wurde angelegt, um eine 1:N:M-Beziehung darstellen zu können. Ferner geht es hier um die Anlage von Metadaten, nicht um Datenbankdesign oder Performance Optimierungen. Daher verzichten wir auf zusätzliche Indizes oder Löschweitergaben.

Das Beispiel beschreibt die Anlage einer 1:N-Beziehung. Der aktuelle Stand des Beispiels sieht so aus:

Zu einer Projektsteuerung können N-Mitarbeiter hinterlegt werden. Die Anlage der Metadaten werden in dem Beispiel beschrieben, hier kurz die Zusammenfassung:

Datensätze

"recProjektsteuerung" und "recProjektsteuerungMitarbeiter" auf Basis der zugehörigen SQL-Tabellen.

Die 1:N-Beziehung wird in der Eigenschaft "Detail-Datensätze" des Datensatzes "recProjektsteuerung" hinterlegt. Die Datensatz-Beziehung geht über die SteuerungId.

Elemente

"ediProjektsteuerung" und "mdeProjektsteuerungMitarbeiter" auf Basis der Datensätze.

Die 1:N-Beziehung wird in "ediProjektsteuerung" durch die Hinterlegung eines Feldes mit Feldname = virtueller Name der Datensatz-Beziehung, sowie "Typ" des Feldes = "Unterelement" mit Zuweisung von "mdeProjektsteuerungMitarbeiter" definiert.

1:N:M-Beziehung

Vorbereitung

Legen Sie folgende Strings an:

NameIDWert
Fehlzeit0Frei
Fehlzeit1bezahlter Urlaub
Fehlzeit2Resturlaub
Fehlzeit3Weiterbildung
Fehlzeit4Krankheit

Datensatz

Legen Sie den Datensatz "recProjektsteuerungMitarbeiterFehlzeiten" mit Hilfe des Assistenten "Tabelle importieren" (BPKProjektsteuerungMitarbeiterFehlzeiten) an.

  • Ändern Sie "Primärschlüsseltyp 1" auf "TAN-basierend auf Tabelle 1"
  • Ändern Sie den "Titel" des Feldes "DatumVon" auf "Von"
  • Ändern Sie den "Titel" des Feldes "DatumBis" auf "Bis"
  • Ändern Sie den Datentyp der Felder "DatumVon" und "DatumBis" von "DateTime" auf "Date"
  • Ändern Sie den Datentyp des Feldes "Fehlzeit" von "Integer" auf "Indizierter String" und weisen Sie die angelegten Strings zu.
N:M-Beziehung

Hinterlegen Sie in der Eigenschaft "Detail-Datensätze" des Datensatzes "recProjektsteuerungMitarbeiter" folgende Daten:

  • "Virtueller Feldname" = "MitarbeiterFehlzeiten"
  • "Detail-Datensatz-Referenz" = "recProjektsteuerungMitarbeiterFehlzeiten.<partnerid>.<loesungid>"
  • "Datensatz-Beziehung" = "Schlüssel Master-Datensatz = SteuerungId", "Schlüssel Detail-Datensatz = SteurungId", "Schlüssel Master-Datensatz = Mitarbeiter", "Schlüssel Detail-Datensatz = Mitarbeiter"

Damit ist die 1:N:M-Beziehung auf Seiten der Datensätze definiert.

Element

Die M-Beziehung muss einem Data-Edit-Element der N-Beziehung zugeordnet werden. In diesem Beispiel existiert kein "Bearbeiten-Dialog" für die Mitarbeiter, da die 1:N-Zuordnung nur aus der Hinterlegung von Mitarbeiternummern besteht. Für die Beschreibung der 1:N:M-Beziehung sind die nachfolgenden Änderungen an der Tabelle "recProjektsteuerungMitarbeiter" ohne Belang. Da aber dieses Beispiel auch für Beispiel für die Zusammenhänge der Metadatenobjekte verwendet werden soll, wollen wir zuerst die 1:N-Beziehung komplementieren.

Fügen Sie die neuen Felder in "recProjektsteuerungMitarbeiter" hinzu.

"Datentyp" für alle neuen Felder auf "Indizierter String" mit Index -1 und 0 und Ja/Nein-Strings aus Sage.System.Common

Anpassen der Titel entsprechend nachfolgender Tabelle:

FeldnameTitel
FirmenwagenHat Firmenwagen
NavigationNavi-Gerät vorhanden
MitnahmeKollegen mitnehmen
NotebookHat Notebook
StellvertreterProjektleitungstellv. Projektleitung
ZugriffProjektZugriff auf Projektdaten

Um diese Daten besser bearbeiten zu können, legen wir für die N-Beziehung einen "Bearbeiten-Dialog" (Data-Edit-Element) an.

Legen Sie das Data-Edit-Element "ediProjektsteuerungMitarbeiter" an.

  • "Titel" = "Mitarbeiter"
  • "Verwendungszweck" = "Stammdatendialog für einen Datensatz"
  • "Dialoggruppe" = "Stammdaten"
  • "Datensatz" = "recProjektsteuerungMitarbeiter.<partnerid>.<loesungid>"
  • "Primärschlüssel 1 für Datensatz" = "1"
  • "Primärschlüssel 2 für Datensatz" = "2"
  • Anlegen der Registerkarte "Mitarbeiter"
    • Anlegen der Elementgruppe "Mitarbeiter"
      • Zuordnung der Felder "Mitarbeiter", "Matchcode" und "Gruppe"
    • Anlegen der Elementgruppe "Fahrzeug"
      • Zuordnung der Felder "Firmenwagen", "Navigation" und "Mitnahme"
    • Anlegen der Elementgruppe "Sonstiges"
      • Zuordnung der Felder "Notebook", "StellvertreterProjektleitung" und "ZugriffProjekt"

Der Aufruf des Dialoges erfolgt über einen Kontextmenüeintrag. Dem Multi-Data-Edit-Element "mdeProjektsteuerungMitarbeiter" ist bereit das Kontextmenü "ProjektsteuerungMitarbeiter" zugeordnet. Wir erweitern dieses Kontextmenü um den Eintrag "Bearbeiten" und verschieben dabei den bestehenden Eintrag "Löschen" auf Position 2 mit Aktivierung einer neuen Gruppe ("Gruppe beginnen?" = True).

Legen Sie den Kontextmenüeintrag "Bearbeiten" im Kontextmenü "ProjektsteuerungMitarbeiter" an.

  • "Funktionstitel" = "Bearbeiten"
  • "Funktionskurztitel" = "Bearbeiten"
  • "Position in Sortierung" = "1"
  • "Schaltflächenposition" = "1"
  • "Funktionsaufruf" = "DatensatzBearbeiten.Sage.System"
  • "Child-Element" = "ediProjektsteuerungMitarbeiter.<partnerid>.<loesungid>"
  • "für Wawi?" aktivieren

Damit haben wir den Bearbeiten-Dialog für die 1:N-Beziehung implementiert.

N:M-Beziehung

Legen Sie das Kontextmenü "ProjektsteuerungMitarbeiterFehlzeiten" an.

  • Legen Sie den Kontextmenüeintrag "Loeschen" an.
    • "Funktionstitel" = "Löschen"
    • "Funktionskurztitel" = "Löschen"
    • "Position in Sortierung" = "1"
    • "Schaltflächenposition" = "1"
    • "Funktionsaufruf" = "DatensatzLoeschen.Sage.Wawi"
    • "für Wawi?" aktiviern

Legen Sie das Multi-Data-Edit-Element "mdeProjektsteuerungMitarbeiterFehlzeiten" an.

  • "Titel" = "Fehlzeiten"
  • "Datensatz" = "recProjektsteuerungMitarbeiterFehlzeiten.<partnerid>.<loesungid>"
  • "Kontextmenü" = "ProjektsteuerungMitarbeiterFehlzeiten"
  • Legen Sie die Vorlage "Standard" an.
    • Importieren Sie die Felder
    • Setzen Sie die Eigenschaft "Sichtbarkeit" = "Versteckt" bei den Feldern "FehlzeitId", "Mitarbeiter" und "SteuerungId"

Legen Sie im Data-Edit-Element "ediProjektsteuerungMitarbeiter" im Register "Mitarbeiter" die Element-Feldgruppe "Fehlzeiten" an.

  • "Neue Zeile beginnen" aktivieren
  • "Feldgruppen-Rahmen?" aktivieren

Legen Sie das Feld "MitarbeiterFehlzeiten" (virtueller Feldname der N:M-Beziehung der Datensätze) in der Feldgruppe "Fehlzeiten" an.

  • "Typ" = "Unterelement"
  • "Unterelement" = "mdeProjektsteuerungMitarbeiterFehlzeiten.<partnerid>.<loesungid>"
  • "Zeilenanzahl" = "4"

Damit ist die M-Beziehung auch auf UI-Ebene definiert worden. Datensätze der M-Beziehung können angelegt und gelöscht werden.

Auch für die M-Beziehung kann ein "Bearbeiten-Dialog" angelegt werden. Das Verfahren ist identisch zur N-Beziehung.

Legen Sie das Data-Edit-Element "ediProjektsteuerungMitarbeiterFehlzeiten" an.

  • "Titel" = "Fehlzeiten"
  • "Verwendungszweck" = "Stammdatendialog für einen Datensatz"
  • "Dialoggruppe" = "Stammdaten"
  • "Datensatz" = "recProjektsteuerungMitarbeiterFehlzeiten.<partnerid>.<loesungid>"
  • "Primärschlüssel 1 für Datensatz" = "1"
  • Anlegen der Registerkarte "Fehlzeiten"
    • Anlegen der Elementgruppe "Fehlzeiten"
      • Zuordnung der Felder "Fehlzeit", "DatumVon" und "DatumBis"

Wir erweitern das Kontextmenü "ProjektsteuerungMitarbeiterFehlzeiten" um den Eintrag "Bearbeiten" und verschieben dabei den bestehenden Eintrag "Löschen" auf Position 2 mit Aktivierung einer neuen Gruppe ("Gruppe beginnen?" = True).

Legen Sie den Kontextmenüeintrag "Bearbeiten" im Kontextmenü "ProjektsteuerungMitarbeiterFehlzeiten" an.

  • "Funktionstitel" = "Bearbeiten"
  • "Funktionskurztitel" = "Bearbeiten"
  • "Position in Sortierung" = "1"
  • "Schaltflächenposition" = "1"
  • "Funktionsaufruf" = "DatensatzBearbeiten.Sage.System"
  • "Child-Element" = "ediProjektsteuerungMitarbeiterFehlzeiten.<partnerid>.<loesungid>"
  • "für Wawi?" aktivieren

Beispiel für eine Erfassung

Zu einer Verkaufsposition können beliebig viele Zusatztexte und/oder Zusatzwerte erfasst werden. Eine weitere Tiefe soll dieses Beispiel aber nicht haben. Es werden noch das Laden, Speichern und eine Aktion auf einen Eintrag codiert.

Führen Sie dazu in einer Demodatenbank der Sage 100 diese SQL-Statements aus:

SQL-Statements
CREATE TABLE "BPKVKBelegePositionenZusatz"
(
    "BelPosID"    INTEGER NOT NULL DEFAULT 0,
    "ZusatzID"    INTEGER NOT NULL DEFAULT 0,
    "Mandant"     SMALLINT NOT NULL DEFAULT 0,
    "BelID"    	  INTEGER NOT NULL DEFAULT 0,
    "Sortierung"  INTEGER NOT NULL DEFAULT 0,
    "Zusatztext"  VARCHAR(50) NULL,
    "Zusatzwert"  MONEY NULL DEFAULT 0,
    "Timestamp"   ROWVERSION,
    CONSTRAINT PK_BPKVKBelegePositionenZusatz PRIMARY KEY CLUSTERED ("BelPosID", "ZusatzID", "Mandant")
)
GO

INSERT INTO USysCatalog ([Table],Revision) VALUES ('BPKVKBelegePositionenZusatz','1')
GO

Damit die Zusatzdaten pro Position erfasst werden können, sind folgende Metadaten anzulegen.

Legen Sie die Datenstruktur "strBPKVKBelegPositionZusatz" an.

  • "Titel" = "Zusatzdaten"
  • Legen Sie die Felder "BelPosiD", "ZusatzID", "Zusatztext" und "Zusatzwert" an (Datentyp entsprechend der Tabellendefinition).

Legen Sie die Datenstruktur "strVKBelegPosition" an.

  • "Anhängen an Datenstruktur der Partner-Kennung" = "Sage.Wawi"
  • "Detail-Datenstrukturen" = "Virtueller Feldname = PositionZusatz, Detail-Datenstruktur-Referenz = strBPKVKBelegPositionZusatz.<partnerid>.<loesungid>"

Legen Sie das Multi-Data-Edit-Element "mdeBPKVKBelegPositionenZusatz" an.

  • "Titel" = "Zusatzdaten"
  • "Datenstruktur" = "strBPKVKBelegPositionZusatz.<partnerid>.<loesungid>"
  • Legen Sie die Vorlage "Standard" an.
    • Importieren Sie die Felder
    • Setzen Sie die Eigenschaft "Sichtbarkeit" = "Versteckt" bei den Feldern "BelPosID" und "ZusatzID"

Legen Sie das Data-Edit-Element "ediBPKVKBelegPositionenZusatz" an.

  • "Titel" = "Zusatzdaten"
  • "Verwendungszweck" = "Erfassung"
  • "Dialoggruppe" = "Erfassungen"
  • "Datenstruktur" = "strBPKVKBelegPositionZusatz.<partnerid>.<loesungid>"
  • "Primärschlüssel 1 für Datensatz" = "1"
  • "Primärschlüssel 2 für Datensatz" = "2"
    • Legen Sie das Daten-Element-Register "Zusatzdaten" an.
      • Legen Sie die Daten-Element-Feldgruppe "Zusatzdaten" an.
        • Legen Sie das Feld "PositionZusatz" an.
          • "Typ" = "Unterelement"
          • "Unterelement" = "mdeBPKVKBelegPositionenZusatz.<partnerid>.<loesungid>"
          • "Zeilenanzahl" = "4"

Legen Sie das Kontextmenü "VKBelegPositionenErfassung" an.

  • "Anhängen an Kontextmenü der Partner-Kennung" = "Sage.Wawi"
    • Legen Sie den Kontextmenüeintrag "ZusatzdatenBearbeiten" an.
      • "Funktionstitel" = "Zusatzdaten bearbeiten"
      • "Funktionskurztitel" = "Zusatzdaten bearbeiten"
      • "Position in Sortierung" = "1"
      • "Schaltflächenposition" = "1"
      • "Funktionsaufruf" = "DatensatzBearbeiten.Sage.System"
      • "Child-Element" = "ediBPKVKBelegPositionenZusatz.<partnerid>.<loesungid>"
      • "für Wawi?" aktivieren

In der Belegerfassung können nun Zusatzdaten pro Position erfasst werden.

Wenn Sie nun mehrere Positionen in der Erfassung haben und zu jeder Position andere Zusatztexte/Zusatzwerte, so werden diese Daten alle korrekt angezeigt, auch wenn die Selektion der Position sich ändert. Die Zuordnung zu einer Position ist also vorhanden. Wenn Sie allerdings bei einer Position z.B. die Menge ändern, dann sind die Zusatzdaten nach dem Ausführen des Daten-Service nicht mehr vorhanden. Für den Transfer der Daten muss durch Codierung selber gesorgt werden.

Die M-Beziehung kann nicht als Objekt in die DCMProperties-Property gesichert werden, da durch ein Sprung nach COM dieses Objekt nicht erhalten bleibt. Die Objekt-Items müssen also flach gesichert und gelesen werden. Dafür benutzen wir ein Hilfsfeld. Legen Sie zusätzlich in den Metadaten folgendes an:

Legen Sie in der Datenstruktur "strVKBelegPosition" das Feld "BPKZusatzdatenCount" an.

  • "Datentyp" = "Integer"

Legen Sie das Multi-Data-Edit-Element "mdeVKBelegPositionen" an (oder benutzen Sie den Anhängen an-Assistenten).

  • "Anhängen an Multi-Data-Edit-Element der Partner-Kennung" = "Sage.Wawi"
  • Legen Sie die Vorlage "Standard" an.
    • "Feld-Attribute anhängen?" aktivieren
    • Legen Sie das Feld "BPKZusatzdatenCount" an.
      • "Sichtbarkeit" = "Versteckt"

Legen Sie das Daten-Edit-Element "ediVKBelegerfassung" an (oder benutzen Sie den Anhängen an-Assistenten).

  • "Anhängen an Daten-Edit-Element der Partner-Kennung" = "Sage.Wawi"
  • Legen Sie das Register "Positionen" an.
    • "Feld-Attribute anhängen?" aktivieren
    • Legen Sie die Feldgruppe "PositionSonstiges" an.
      • "Feld-Attribute anhängen?" aktivieren
      • Legen Sie das Feld "BPKZusatzdatenCount" an.
        • "Sichtbarkeit" = "Versteckt"

Ferner wollen wir noch einen Daten-Service implementieren.

Legen Sie das Kontextmenü "VKBelegPositionenErfassungZusatzdaten" an.

  • Legen Sie den Kontextmenüeintrag "ZeileEinfuegen" an.
    • "Funktionstitel" = "Zeile einfügen"
    • "Funktionskurztitel" = "Zeile einfügen"
    • "Position in Sortierung" = "1"
    • "Schaltflächenposition" = "1"
    • "Funktionsaufruf" = "DataServiceExecute.Sage.System"
    • "Parameter 1 Funktionsaufruf" = "ZusatzdatenZeileEinfuegen"
    • "Parameter 2 Funktionsaufruf" = "Vollstaendig:Ersetzen"
    • "für Wawi?" aktivieren

Zusätzlich werden die verwendeten DCMs (siehe Codierung) unter "Erweiterungen/ Ereignisse" eingetragen.

Hinweis für Developer Partner

WDB-Eintrag 203334:

Anhang Beispiel_1NM_Belegposition_81.rar

Mehrere umschaltbare Navigations-Elemente im Daten-Edit-Element

Die Eigenschaft "Navigations-Element" ist ab der Version 8.1 eine 1:N-Beziehung und wird daher in einem Zusatzdialog hinterlegt (Beispiel ediAdressenstamm.Sage.System):

Werden mehr als ein Navigations-Element in einem Daten-Edit-Element hinterlegt, wird vom System in der Applikation die Schaltfläche "Bearbeiten" hinzugefügt. Über diese Schaltfläche kann ein Navigations-Element gewählt werden:

Für eine programmatische Umstellung steht der Makro-Befehl "NavigationUmschalten" zur Verfügung. (Makrobefehle)

Navigations-Elemente können an Standard-Daten-Edit-Elemente angehängt werden. Dabei wird aber ein Listen-Element nur angehängt, wenn dem Standard-Daten-Edit-Element bereits mindestens 1 Navigations-Element zugeordnet ist.

Die Definition des Primary-Keys in den Schlüsselfeldern der Datenquelle muss bei allen Datenquellen identisch sein.

Kontextmenüeinträge von Listen-Elementen werden nach dem folgenden Verfahren zusammengeführt:

Grundsätzliche Vorgehensweise

Da das Menü als ganzes im Data-Edit-Element angezeigt wird (das Menü vom Data-Edit-Element selbst, das Menü von der Liste und das Menü von der Liste-Selektion), wird es nach wie vor bereits Serverseitig komplett zusammengebaut und zum Client geschickt.
Der Client filtert dann über eine Herkunftsangabe die nicht von der aktuell eingestellten Liste stammenden Einträge aus.

Mischen der Menüs

Verwendet das Daten-Edit-Element mehrere Navigationselemente, so können deren Menüs verschiedene Menüeinträge enthalten.
Das Mischen funktioniert dann wie folgt:

  • Sobald in einem Navigationselement ein gleichnamiger Eintrag gefunden wird, wird er im Haupt-Menü ersetzt und die Herkunft vermerkt (wie bisher).
  • Weitere gleichnamige Einträge in einem folgenden Navigationselement werden nicht mehr ersetzt, aber an dem bereits gemergten Eintrag ebenfalls die Herkunft vermerkt.
  • Zur Laufzeit: Stammt ein gemergter Menüeintrag im Haupt-Menü nicht aus dem aktiven Navigationselement, wird er herausgefiltert.

Schnelländerung Metadaten

Beim Bearbeiten von Feldern gibt es die neue Option (Menüband im Register Metadaten, oder im PopUp-Menü) "Werte übernehmen". Um geänderte Werte in andere Felder zu übernehmen, geht man wie folgt vor:

  • Man ändert ein oder mehrere Werte eines Feldes im Arbeits- oder Eigenschaftsbereich
  • Man markiert die Felder im Arbeitsbereich, die die eben geänderten Werte übernehmen sollen.
  • Es wird ein Dialog mit den Änderungen angezeigt. Einzelne, nicht allgemein gültige Änderungen, können in diesem Dialog ausgeklammert (Checkbox deaktivieren) werden.

Makrobefehl "AuskunftÖffnen"

Mit dem neuen Makrobefehl "AuskunftÖffnen" kann eine Auskunft direkt ohne Umweg nach Access geöffnet werden. Damit vereinfacht sich auch die Übergabe von Parametern.

Die Funktionsaufrufe "gbOpenAuskunft" und "gbOpenAuskunftParameter" entfallen NICHT.

Beispiel "Auskunft Umsatzliste aus dem Kontextmenü der Position der Verkaufsbelegerfassung"

Folgende Metadaten sind anzulegen:

  • Datenquelle "dtsStatVK" mit Assistent "Tabelle importieren" von "KHKStatVK" mit den Feldern "Periode", "Menge", "Umsatz"
    • "Titel" = "Umsatzauskunft"
    • "SQL-Tabellen" = "KHKStatVK"
    • "SQL Where-Bedingung" = "KHKStatVK.Mandant = $[Mandant] $[IfParameterExists(Artikelnummer," AND Artikel = $[Parameter(Artikelnummer)]",'')] $[IfParameterExists('',AuspraegungsHandle" AND AuspraegungID = $[Parameter(AuspraegungsHandle)]",'')] $[IfParameterExists(Kunde," AND Kunde = $[Parameter(Kunde)]",'')]"
    • "SQL Gruppierung" = "Periode"
    • "Sortierung nach Feld" = "Periode"
    • Aggregat Funktion SUM() für die Felder "Menge" und "Umsatz"
  • Listen-Element "lstStatVK" mit Zuordnung der Datenquelle "dtsStatVK"
    • "Titel" = "Umsatzauskunft"
  • Master-Detail-Element "mdtStatVK" vom "Typ" = "nur Master-Element" mit Zuordnung des Listen-Elementes "lstStatVK" als Master
    • "Titel" = "Umsatzauskunft"
  • Kontextmenü VKBelegPositionenErfassung
    • Kontextmenüeintrag "Umsatzauskunft"
      • "Funktionstitel" = "Umsatzauskunft"
      • "Funktionskurztitel" = "Umsatzauskunft"
      • "Position in Sortierung" = "1"
      • "Schaltflächenposition" = "0"
      • "Funktionsaufruf" = "MakroStarten.Sage.System"
      • "für Wawi?" aktivieren

Makrobefehle (Partner- und Lösung-ID entsprechend Ihren Daten, komplette Beschreibung unter Makrobefehle)

ZeileBefehlParameter 1Parameter 2
1AuskunftÖffnenmdtStatVK.100065830.AuskunftArtikelnummer:=[Artikelnummer];AuspraegungsHandle:=[AuspraegungsHandle];Kunde:=[$Parent.A0Konto]


In diesem Beispiel wird eine Auskunft aufgerufen. Es ist kein "Zusatzdialog" zur Erfassung. Der Platzhalter "$Me($IndexSelected)" bezieht sich auf den Kontext "Belegposition" und nicht auf selektierte Datensätze der Auskunft. Eine Verbindung zwischen dem Kontextmenü der Auskunft und dem Kontextmenü der Belegposition gibt es nicht.

Dynamische Datenreferenz

Bisher konnte eine Datenreferenz in den folgenden Varianten angelegt, bzw. durch zusätzliche Eigenschaften eines Feldes kontextbezogen gefiltert werden:

  • Statische Datenreferenzen
    • SQL-Abfrage
    • Geschäftsprozess (einfach oder generisch mit Verwendung von Parametern)
    • SQL-Abfrage und Geschäftsprozess
  • Gefilterte Datenreferenz
    • Statische Datenreferenz mit Ergänzung in der Eigenschaft "Datenreferenz-Filter" eines Feldes (hierbei wird die Where-Bedingung der Datenreferenz ergänzt. Der Eintrag in der Eigenschaft muss dem "SData Query Language"-Standard genügen)
  • Dynamische-gefilterte Datenreferenz
    • Statische Datenreferenz, deren Ergebnis per Codierung eingeschränkt werden kann

Ab der Version 8.1 kann nun an den Geschäftsprozess einer Datenreferenz kontextbezogen eine Parameterliste übergeben werden. Die Parameter stehen in der zu implementierenden Klasse "BusinessProcessBase" in der Property "ServiceParameters" zur Verfügung. Die Parameter werden in der Eigenschaft "Datenreferenz-Parameter" in der üblichen Syntax (Art:=1;Typ:=[Typ];Kahn:="Kahn ""Der Titan""") hinterlegt.

Sonstiges

  • Neue DCM ReportBeforeSaveToDms
  • Neue Eigenschaft „Dialoggruppe“ für Data-Edit-Parts und Master-Detail-Parts (wird für Erweiterungen der Listen (Stichwort "intelligente Listen") benötigt (gehört zum System der Sage 100))
  • Umbenennen von Elementen und Felder komplett überarbeitet