Sage 100 DCM Hinweisfenster

Arne Drews

Mitglied
Hi,

Wir haben eine Belegart, die bei einer bestimmten Kundengruppe nur von autorisierten Mitarbeitern bearbeitet werden dürfen. Dazu habe ich eine kleine Erweiterung geschrieben, die soweit gut funktioniert, der Code sieht im Kern aktuell so aus:
Code:
namespace VOSS.BelegPruefung
{
    public class BelegartBerechtigung : IDcmCallback
    {

        string[] AllowedTypes = new string[] { "VLE", "NVL", "VDU", "VFS", "VFL", "VFR", "VFG" };


        public bool Entry(IDcmContext context)
        {
            DcmContextBelegBeforeSave _context = context as DcmContextBelegBeforeSave;

            try
            {
                if (Convert.ToInt32(_context.Beleg.Kontogruppe) != 12)
                    return true;

                if (!AllowedTypes.Contains(_context.Beleg.Kennzeichen) && !this.IsAllowed(_context.Beleg.Bearbeiter))
                {
                    _context.Beleg.Errors.AppendError(0,
                            "Zum Ändern der Belegart '" + _context.Beleg.Belegart.Bezeichnung
                            + "' ist keine ausreichende Berechtigung vorhanden. Der Speichervorgang wurde abgebrochen."
                        );
                }

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
}
Ich würde jetzt aber gerne zusätzlich ein Hinweisfenster für den User anzeigen. Kann ich an der Stelle auf das Meldefenster der Sage 100 zurückgreifen? MessageBox hat bei mir keine Wirkung erzielt.

Danke
 
Hi Arne,

schau mal in dem anderen Beitrag auf mein Beispiel.
Ich denke du nimmst die falsche DCM.
VKBelegProxyValidateSave wäre die richtige. Der Rest kann so bleiben.
 
Hi Arne,

Leider nein... Ich habe mal eine TestKlasse in die DLL eingefügt, die als Entry wie folgt definiert ist:
Code:
    public class ArneDrewsTest : IDcmCallback
    {
        public bool Entry(IDcmContext context)
        {
            DcmContextBelegProxyValidateSave _context = context as DcmContextBelegProxyValidateSave;
            StreamWriter w = new StreamWriter(@"U:\envuser.txt");

            try
            {
                w.WriteLine(Environment.UserName);
                MessageBox.Show("Fertig...");
            }
            catch (Exception ex)
            {
                _context.Beleg.Errors.AppendError( 0, ex.ToString() );
            }

            w.Close();
            w.Dispose();

            return true;
        }
    }
Das ganze eingehängt, wie das davor auch, nur eben über das Ereignis VKBelegProxyBelegValidateSave. Das testweise Schreiben in die Textdatei funktioniert in der anderen Klasse, hier wird weder in die Datei geschrieben, noch die MessageBox angezeigt.

Im Beleg erscheint nur ein Fehler im Stack, der auch keine weiteren Details liefert. Hier heißt es nur, dass in der Erweiterung ein interner Fehler aufgetreten ist. Abhängigkeiten stimmen alle, die DLL lässt sich problemlos compilieren.

EDIT: Ich habe eben festgestellt, dass ich in der Klasse
Code:
using Sagede.OfficeLine.Wawi.BelegProxyEngine;
nicht implementiert hatte. Kann es sein, dass es daran liegt?
Ich teste das erst heute Abend, weil die Kollegen jedesmal Fehler bekommen, wenn ich den Dienst neu starte und dann rufen die alle bei mir an :)
 
Zuletzt bearbeitet:
Öhm also MessageBox ist mit diesen DCM's nicht möglich, da sie Serverseitig ausgeführt werden. Daher auch die Verwendung vom AppendError am Beleg.
Und da es Serverseitig ist, wird der User vom AppServerDienst mit sicherheit nicht das Laufwerk U haben.

Und da du im catch den Error anhängst, ist es immer das was die User unten im Beleg sehen.
Und wahrscheinlich scheppert es beim MessageBox.Show, da dies serseitig laufen würde und da ist nix mit sysem.forms ;)
 
Das leuchtet alles soweit ein, aber meine Frage war ja eigentlich genau das: Wie kann ich dem User eine Meldung visualisieren, ohne über die Errors zu gehen?
Theoretisch steht da ja alles notwendige drinnen, aber praktisch schauen die Mitarbeiter sich das tatsächlich nicht an. Die machen nur Screenshots ( mit ungeöffnetem Fehler-Stack ) und schicken uns das per Mail in grammatikalischer Perfektion: WaWi funktioniert nicht. ;)

Daher wäre ein Hinweis-Fenster, wie bspw. beim Schließen toll, wo gefragt wird: Möchten Sie die Änderungen speichern.
Gibt es die Möglichkeit, einen solchen Hinweis einzublenden?
 
Ja du kannst ein AppendWaring machen, da kommt ein PopUp hoch, wo der User was Klicken muss. Und den Text bestimmst du selber.
 
Zurück
Oben