Back to Sagegmbh

Version 8.1

wiki-spaces-s1-pages-198344705-version-plus-8-dot-1.md

latest18.6 KB
Original Source

Version 8.1

By Andreas Langmaack (Unlicensed)

Oct 02, 2018

12 min

Add a reaction

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:

|

Name

|

ID

|

Wert

| | --- | --- | --- | |

Fehlzeit

|

0

|

Frei

| |

Fehlzeit

|

1

|

bezahlter Urlaub

| |

Fehlzeit

|

2

|

Resturlaub

| |

Fehlzeit

|

3

|

Weiterbildung

| |

Fehlzeit

|

4

|

Krankheit

|

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:

|

Feldname

|

Titel

| | --- | --- | |

Firmenwagen

|

Hat Firmenwagen

| |

Navigation

|

Navi-Gerät vorhanden

| |

Mitnahme

|

Kollegen mitnehmen

| |

Notebook

|

Hat Notebook

| |

StellvertreterProjektleitung

|

stellv. Projektleitung

| |

ZugriffProjekt

|

Zugriff 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"

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.

Open

N:M-Beziehung

Legen Sie das Kontextmenü "ProjektsteuerungMitarbeiterFehlzeiten" an.

  • Legen Sie den Kontextmenüeintrag "Loeschen" an.

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

  • "Titel" = "Fehlzeiten"

  • "Datensatz" = "recProjektsteuerungMitarbeiterFehlzeiten.<partnerid>.<loesungid>"

  • "Kontextmenü" = "ProjektsteuerungMitarbeiterFehlzeiten"

  • Legen Sie die Vorlage "Standard" an.

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.

Open

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"

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

Open

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.

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 Kontextmenü "VKBelegPositionenErfassung" an.

  • "Anhängen an Kontextmenü der Partner-Kennung" = "Sage.Wawi"

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

Open

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:

Collapse action bar

View all comments

Open Details Panel

Create page

Open Rovo Chat

Add a comment

Add a reaction