Belegerzeugung über .NET-ServiceCall / Multiselect

bbusch

Mitglied
Hallo,

ich möchte aus einem Kontextmenü eines Listenelements einen Beleg erzeugen und ungespeichert in der Belegerfassung anzeigen lassen. Ähnlich wie dies in Rezept 18 des Developer Kochbuchs beschrieben ist.

Für ein einzelnen selektierten Datensatz habe ich das (mit Schmerzen) auch soweit hinbekommen:

2020-08-26 09_59_17-Clipboard.png

Der DCMListener 'VKBelegProxyServiceCall' wird angestoßen und die Parameter können ausgelesen werden.

Ich möchte den Aufruf nun aber auch mit Multiselect ermöglichen.
Hierbei kommt es jedoch zu einer Fehlermeldung:

'Key value 'Name.PartnerId.PackageId' doesn't match the key format ["ediVKBelegerfassung.Sage.Wawi",0,0,"Entnahme","D100003";"ediVKBelegerfassung.Sage.Wawi",0,0,"Entnahme","D100003"],' /Details: 'Key value 'Name.PartnerId.PackageId' doesn't match the key format ["ediVKBelegerfassung.Sage.Wawi",0,0,"Entnahme","D100003";"ediVKBelegerfassung.Sage.Wawi",0,0,"Entnahme","D100003"],' /Source: ''. request.url="https://vm-bb-ol90.addg.global:5493...emo90;88/$service/GetDataEditPart?language=de" request.method="POST" request.part="ediVKBelegerfassung.Sage.Wawi',0,0,'Entnahme','D100003';'ediVKBelegerfassung.Sage.Wawi',0,0,'Entnahme','D100003" request.subpart=""

Hat jemand eine Idee oder einen Alternativvorschlag?

Gruß
Benjamin Busch
 
Über was wollen Sie denn den Multiselect machen? Wenn es Kunden sind, kann es doch mit ungespeicherten Belegen nicht funktionieren.

Aber generell zu Multiselect in Listen und VBA-Aufruf: es wird für jeden selektierten Datensatz die Parameter kommasepariert und pro Datensatz semikolonsepariert ein String übergeben. Daher haben Sie hier als Ergebnis diesen String, den die Funktion gbOpenDatenEditpart nicht auswerten kann.

Ich weiß nicht welche Version Sie verwenden, aber ab 8.1.2 sollten Sie den Makrobefehl DatenEditDilogÖffnen verwenden. Den könnten Sie natürlich auch in einer Schleife aufrufen.
 
Hallo Herr Langmaack,

erstmal geht es um den Test, ob die Kombination grundsätzlich möglich ist. Ziel ist im Endeffekt eine Auswahl von 1 bis n Artikeln / Lagerbeständen um diese in einen Beleg einzufügen.

Es scheitert jedoch bereits beim einfachen Aufruf. Wenn ich die Parameter kommasepariert als String erhalten würde wäre dies ja ok. Es funktioniert halt leider gar nicht.

Verwendete Version ist die 9.0.
Mit dem Makrobefehl "DatenEditDialogÖffnen" habe ich es auch ohne Multiselect übrigens gar nicht hinbekommen. Auch das Beispiel-Projekt aus Rezept 18 (installiert ohne Änderungen) erzeugt nur Fehlermeldungen bei mir (siehe Screenshot).
 

Anhänge

  • 2020-08-27 10_55_39-Clipboard.png
    2020-08-27 10_55_39-Clipboard.png
    17 KB · Aufrufe: 26
Wenn Sie einen VBA-Aufruf machen, dann können Sie Multiselct nur mit dem Funktionsaufruf gbMultiUndSingleAufruf.Sage.Sytem behandeln (siehe im Wiki unter https://sagegmbh.atlassian.net/wiki/spaces/S1/pages/88047678/VBA-Aufrufe "Aufruf einer Funktion in einem AddIn für Mehrfachselektion in einer Liste")

Wenn Sie Makros verwenden, dann können Sie mit diesen Makros die Daten sammeln (hier nur Artikelnummer, Sie bräuchten auch eine Schleife für die Lagerbestände) und an die Belegerfassung übergeben:

upload_2020-8-27_15-24-36.png

Im Service erhalten ich dann im NamedParameter: Artikel:="00100041,00500041,02091530,10200002"

Hinweis: ich war nicht in allem involviert, aber ich meine es ist etwas zur 9.0 zur Paramaterübergabe von DatenEditDialogÖffnen gefixt worden. Ich habe im QSP-Stand (Auslieferung Nov/Dez) getestet. Dort lief es einwandfrei.
 
Zurück
Oben