Spalten im Verkaufsbeleg erweitern

mandymue

Mitglied
Ich möchte die Spalten im Verkaufsbeleg durch eine Spalte aus der KHKArtikelVarianten erweitern.
Welche Datenquelle muss ich dazu anpassen?
upload_2019-6-18_12-6-43.png
 
Das Anpassen einer Datenquelle (eigentlich hier Datenstruktur) reicht nicht aus. Schauen Sie sich bitte das Beispiel in der Hilfe Beispiel/Erweiterungen der Belegerfassung/Erweiterungen der Belegerfassung und/oder der Bearbeitung eines Beleges/Zusätzliche Daten.
 
Nur die Metadaten anlegen reicht nicht. Haben Sie auch die DCM-Codierung durchgeführt?
Ich möchte hier allerdings auch gleich sagen, dass ich zu Codierung nichts sagen werde. Da müssten Sie sich an das Developer Programm wenden. Aber eventuell antwortet ja auch ein Forumsmitglied.
 
Dann muss ich an dieser Stelle sagen, dass solche Änderungen früher einfacher zu impelemtieren waren.
Die App-Designer Doku ist hier auch keine große Hilfe.
 
Die Appdesigner Doku ist, was Codierung angeht, überhaupt keine Hilfe, denn alles was mit Codierung zu tun hat geht über das Developer Programm. In der Doku gibt es Hinweise, wenn zu einem Beispiel Code vorhanden ist. Dieser und zusätzliche Informationen für Developer werden in einem Eintrag der Wissensdatenbank bereit gestellt.

Und zum zweiten Punkt: ich kann mir nicht vorstellen, dass man in der alten Erfassung zusätzliche Felder, die nicht im Belegobjekt vorhanden sind, ohne Programmierung angezeigt bekommen hat. Aber wie bereits gesagt, es gibt ja Threads von Mitgliedern dieses Forums, bei dem auch über Sourcecode diskutiert wird.
 
Habe jetzt eine Beispielcodierung von Sage.
Funktioniert im Beispiel auch.

Habe es auf mein Feld umgebaut funktioniert nicht.
Habe wieter probiert mit anderem Feld geht...

Kann es sein das auch dieses Feld wieder nur ein varchar Feld sein darf?
 
Eigen neue Felder können alle Datentypen haben. Letztendlich weiß der Client überhaupt nicht, welches Feld zum Standard gehört und welches nicht. Nur weil die Serverseite Ihr neues Feld nicht kennt, müssen Sie hier in diesem Fall codieren.
Prüfen Sie Step für Step den Code, der funktioniert mit dem der nicht funktioniert. Die Wahrscheinlichkeit, dass etwas mit der Codierung nicht stimmt, ist größer als das die Definition der Metadaten falsch ist.
Prüfen Sie auch im Fiddler, was zwischen Client und Server hin- und hergeschickt wird.
Wenn das Feld nicht zum Server geschickt wird -> Metadaten prüfen.
Wenn das Feld nicht bzw. ohne Inhalt zum Client geschickt wird -> Codierung prüfen.
 
Erstelle ich die DLL Datei mit der Abfrage:

SELECT Hauptlieferant FROM KHKArtikel Left JOIN KHKArtikelVarianten ON KHKArtikelVarianten.Artikelnummer = KHKArtikel.Artikelnummer WHERE KHKArtikel.Mandant = @mandant AND KHKArtikel.Artikelnummer = @artikelnummer

Ist das Feld vorhanden und wird gefüllt (Feld ist varchar)

Ändere ich die Abfrage auf :
SELECT Wiederbeschaffungszeit FROM KHKArtikel Left JOIN KHKArtikelVarianten ON KHKArtikelVarianten.Artikelnummer = KHKArtikel.Artikelnummer WHERE KHKArtikel.Mandant = @mandant AND KHKArtikel.Artikelnummer = @artikelnummer

Alles andere lasse ich gleich. Erstelle die DLL Datei neu.

Ist das Feld vorhanden aber leer (Feld ist smallint)


Prüfen Sie auch im Fiddler, was zwischen Client und Server hin- und hergeschickt wird.
Wie mache ich das?
 
Zuletzt bearbeitet:
Wenn Sie schreiben, dass Sie alles andere gleich lassen und es mit Hauptlieferant funktioniert, würde es bedeuten, dass Sie das Feld in den Metadaten als String und nicht als Integer definiert haben.
Wenn das Feld vorhanden, aber leer ist, sieht es danach aus, dass eventuell der DataContainer falsch gefüllt wird.
Wenn Sie Ihre Assembly an den Prozess des Applicationsserver hängen, können Sie diese debuggen.

Zum Fiddler schauen Sie bitte im Internet nach. Die Transferdaten finden Sie unter Inspectors/JSON.
 
Wenn ich in der Datenstruktur den Datentyp auf Integer ändere erhalte ich folgenden Fehler bei öffnen eines Belegs

Sagede.Shared.SData.Serialization.SDataSerializationException: Fehler beim Deserialisieren. Die Konvertierung eines Wertes ist fehlgeschlagen: Name: 'BPKWiederbeschaffungszeit', Typ laut Schema: 'integer', Wert: ''
Die Eingabezeichenfolge hat das falsche Format. ---> System.FormatException: Die Eingabezeichenfolge hat das falsche Format.

NACHTRAG:
Ich habe in der Datenstruktur den Datentyp wieder auf String geändert und in der Abfrage in der DLL das Feld in varchar konvertiert:
SELECT Cast(Wiederbeschaffungszeit as varchar(5)) as Wiederbeschaffungszeit

Jetzt funktioniert die Anzeige....
 
Zuletzt bearbeitet:
Also noch einmal: Sie können jeden Datentyp verwenden. Kann es sein, dass Sie bei der Erzeugung des DataContainertags ein String eingetragen haben? Z.B übertragen wir sämtliche Short-Properies der BelegEngine ohne Cast. Einfach die Property über die Fill-Methode setzen und in den Metadaten als Integer definieren.
 
Zurück
Oben