Felder anhängen

Was mache ich falsch, warum ist Meldebestand 0?

switch (context.ListId)
{
case DcmDefinitionManager.DcmListId.VKBelegPositionProxyAddArtikelposition:
var _context = context as DcmContextBelegPositionProxyAddArtikelposition;
_context.Position.DCMProperties.DecimalValues["HSMeldebestand"] = 99m;
break;

case DcmDefinitionManager.DcmListId.VKBelegPositionProxyBelegPositionToContainerPosition:
vkbelegPositionProxyBelegPositionToContainerPosition(context);
break;

case DcmDefinitionManager.DcmListId.VKBelegPositionProxyContainerPositionToBelegPosition:
vkBelegPositionProxyContainerPositionToBelegPosition(context);
break;
}

private void vkBelegPositionProxyContainerPositionToBelegPosition(IDcmContext context)
{
var belegPositionContext = context as DcmContextBelegPositionProxyContainerPositionToBelegPosition;

try
{
belegPositionContext.Position.DCMProperties.DecimalValues["HSMeldebestand"] = belegPositionContext.DataContainer.GetValue<decimal>("HSMeldebestand");
}
catch (Exception ex)
{
EventLog.WriteEntry("Hsm.Sage100.BelegErfassung", ex.Message, EventLogEntryType.Error);
}
}

private void vkbelegPositionProxyBelegPositionToContainerPosition(IDcmContext context)
{
var belegPositionContext = context as DcmContextBelegPositionProxyBelegPositionToContainerPosition;
try
{
belegPositionContext.DataContainerPosition.Fill("HSMeldebestand", belegPositionContext.Position.DCMProperties.DecimalValues["HSMeldebestand"]);
}
catch (Exception ex)
{
EventLog.WriteEntry("vkbelegPositionProxyBelegPositionToContainerPosition", ex.Message, EventLogEntryType.Error);
}
}
t1.jpg t2.jpg
 
Sie holen sich den Wert in ...ContainerPositionToBelegPosition aus dem Objekt DataContainer. Das ist aber der DataContainer des Belegkopfes. Sie müssen die Property DataContainerPosition verwenden.
 
Der Fehler ist zwar peinlich, aber ich habe es in DataContainerPosition geändert und es funktioniert trotzdem nicht. Sobald ich die Menge ändere wird der Wert 0. Alles andere kann ich ändern und der Wert bleibt 99.
 
Zuletzt bearbeitet:
Können Sie bitte einen Screenshot Ihrer Makro vom Feld Menge und Ereignis "Nach Aktualisieren" reinstellen?
Haben Sie auch den Liefertermin geändert? Hier wird auch ein Service aufgerufen.
 
Ich habe es jetzt ohne Makro probiert, hab sogar das Feld Menge aus meiner Datenstruktur entfernt. Gleiches Verhalten. Liefertermin beeinflusst es nicht, auch alle andere Felder Rabatt, Memo usw.
 
So langsam gehen mir auch die Möglichkeiten aus.
Zwei Ansätze:
1. Haben Sie die Version 8.0.1.4 installiert? (falls sie schon freigeschaltet ist)
2. ich habe die DCMs genau so wie sie angelegt. Bleiben noch die Metadaten.
Das Feld Menge müssen Sie nur im MDEE mdeVKBelegPositionen hinterlegen. Und es muss natürlich angehängt werden (Feld-Attribute anhängen? = True).

Haben Sie mal im Fiddler geschaut, ob bei Mengenänderungen das Feld überhaupt vom Client übertragen wird?
 
Im Fiddler habe ich (noch nicht geschaut) aber in der DLL habe ich den Wert mal abgefragt und er ist da:

EventLog.WriteEntry("Hsm.Sage100.BelegErfassung", "Meldebestand: " + belegPositionContext.DataContainerPosition.GetValue<decimal>("HSMeldebestand").ToString(), EventLogEntryType.Information);
belegPositionContext.Position.DCMProperties.DecimalValues["HSMeldebestand"] = belegPositionContext.DataContainerPosition.GetValue<decimal>("HSMeldebestand");

Ich installiere gerade die Version 8.0.1.4
 
Das Update hat nichts gebracht weiß nicht ob es die 8.0.1.4 war aber das LiveUpdate hat was gefunden. Ich habe festgestellt dass wenn mehrere Artikel in der Belegerfassung vorhanden sind und ich die Menge bei einem Artikel ändere verschwindet der Meldebestand bei allen. Sieht so aus als würden die Positionen neu gesetzt, kann das sein?
 
Was im nächsten Hotfix behoben ist, ist das Felder mit Datenreferenzen (aber auch nur sporadisch) nach dem Speichern Leer angezeigt werden. Das würde für das Verschwinden der ME sprechen.
Ich vermute, dass Sie nicht im Feld HSMeldebestand eine Datenreferenz hinterlegt haben und den Beleg nach der Mengenänderung speichern?

Falls das nicht zutrifft, könnten Sie die Metadaten an AppDesigner@sage.com mailen?
Den Sourcecode brauche ich nicht.
 
Guten Morgen, das Feld HSMeldebestand hat keine Datenreferenz und das Feld Menge habe ich aus meine Datenstruktur verbannt, habe keine Macros mehr, speichern tue ich den Beleg nicht. Soll ich Ihnen die JSON von Fiddler schicken und wenn ja vor und nach dem verschwinden?
 
Ich brauche Ihre Metadaten. Auf Codeebene sind wir identisch. Es kann eigentlich nur noch an den Metadaten liegen.
Falls da noch andere Metadaten, als zu Erfassung vorhanden sind, macht das nichts.
 
Da dieser Thread schon ziemlich oft aufgerufen wurde, möchte ich den letzten Stand, der per Mail abgewickelt wurde, hier kurz darlegen:
Ich habe die Metadaten importiert und keine Änderungen vorgenommen -> es funktioniert bei mir.
Eigentlich unnötig, aber um ganz sicher zu gehen, habe ich die DCMs in CSharp programmiert und den hier geposteten Code kopiert -> es funktioniert bei mir.

Da bei mir auf dem Rechner der Stand, der erst im nächsten LiveUpdate ausgeliefert wird, installiert ist, gehe ich davon aus, dass mit Version 8.0.1.5 (geplant Anfang Januar) das Problem behoben ist.
 
Zu früh gefreut, es funktioniert nur auf dem Test Server wo alles zusammen installiert ist, Sage Application Server, Datenbank Server und Sage Office Line. In der Produktion läuft die Datenbank auf ein eigenen Server, Sage App Server auch auf ein eigenen Server und Sage Office Line auf dem Terminal Server. Dort passiert nach wie vor das gleiche, der Meldebestand verschwindet bei alle Positionen sobald die Menge geändert wird.
 
Hab die gleiche DLL und ol.dcm auf dem Application Server und Terminal Server kopiert, beide neu gestartet und es funktioniert. Nochmals vielen Dank für die Tipps an Herr Langmaack.
 
Zurück
Oben