Function Button - Prod.Auftrag aus Kundenauftrag
Monika Bucher
Hallo,wir möchten aus dem Kundenauftrag einen Produktionsauftrag anlegen. Ich habe es soweit schon definiert, dass die Kunden-Nr. und Auftrags-Nr. in die Prod-Auftragsmaske übertragen werden (siehe ANhang). Wie kann ich es erreichen, dass die Artikelnummer der 1. Zeile aus dem Kundenauftrag nun noch in das Feld Produktnummer im Produktionsauftrag übertragen wird? Hierzu konnte ich leider kein Beispiel finden.
Vielen Dank im Voraus.
Gruß Monika Bucher
Michael Egloff
Hallo Monika,die Artikelnummer ist in einer Matrix.
Einen Wert von einer Matrix holt man sich so:
string wert = Matrix.GetFromUID(pVal.Form, "id").GetValue("SpaltenID", zeilennummer);
in deinem Fall so:
string wert = Matrix.GetFromUID(pVal.Form, "38").GetValue("1", 0);Füllen nun diesen wert in das vorgesehen Feld auf dem Produktionsauftrag (wie vorher die Kundennummer).
gruss,
Michael
Monika Bucher
Hallo,ich habe zu u.a. Fall nun noch weitere Anforderungen, die ich aber irgendwie nicht umgesetzt bringe:
1. Das ProfitCenter aus der Kundenauftragsposition soll in das Feld Aufteilungsregel im Produktionsauftragskopf (Ist ein Feld mit Kombo-Box). Leider wird hier nichts übernommen.
2. Die Auftragsmenge soll in das Feld Planmenge im Prod.Auftr.Kopf.
Ich habe die Umsetzung versucht ==> siehe Anhang.
Was habe ich hier falsch gemacht?
Vielen Dank für Tipps hierzu.
Gruß Monika Bucher
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-file-uploads/monikabucher/Fehlermeldung_Customize.doc]Fehlermeldung_Customize.doc[/url]
Michael Egloff
Hallo Monika,bei so vielen, kleineren Fragen würde ich dir einen Workshop vorschlagen. Ein Tag reicht oft schon aus, um viele Fragen zu klären und evtl. noch ein Kundenprojekt näher zu betrachten.
Melde dich dazu am Besten bei mir!
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["10000143"]).Value = ProfitCenter;
funktioniert nicht, weil das Feld, in welches du schreiben willst, eine ComboBox ist (kein TextEdit)
Es müsste etwa so heissen:
((SwissAddonFramework.UI.Components.ComboBox)ev.Form.Items["10000143"]).Selected.Value = ProfitCenter;
Gruss,
Michael
Monika Bucher
Hallo,vielen Dank erstmal.
Das mit dem Workshop wollten wir ja eigentlich (für den Designer und für Customize). Hatte aber bei Euch zeitlich nicht zu unseren Projektterminen gepasst. Wir haben dann zwar einen MA nach Hamburg geschickt, das hat aber für solche Detailanforderungen auch nicht viel gebracht. Leider habe ich einen GoLive-Termin "am Hals", der mir nicht sehr viel Spielraum läßt.
Wenn's wieder "ruhiger" wird, werden wir das mit dem Workshop sicherlich noch angehen.
Die meisten Anforderungen habe ich inzwischen per Forum, Try and Error, ... hinbekommen.
Jetzt fehlt mir zu meinem Glück nur noch die Übertragung der Menge (Menge aus der 1. Positionszeile), dann wär`s perfekt
:)
Gruß Monika
Michael Egloff
Und was ist denn die Fehlermeldung bei der Übertragung der Menge?Monika Bucher
Hallo,es kommt keine Fehlermeldung. Die Menge wird einfach nicht übertragen. Eigentlich ist's ja nichts anderes als die Artikelnummer aber es funktioniert halt nicht.
Gruß Monika
Michael Egloff
Hallo Monika,veruchs mal so und sag mir, was der Fehler ist:
try
{
string formType = "65211"; // Production order form type
string menuId = "4369"; // Production order menu item number
string Artikelnr = Matrix.GetFromUID(pVal.Form, "38").GetValue("1", 0);
string ProfitCenter = Matrix.GetFromUID(pVal.Form, "38").GetValue("30", 0);
string Menge = Matrix.GetFromUID(pVal.Form, "38").GetValue("11", 0);
SwissAddonFramework.UI.EventHandling.ItemEvents.FormLoadEventHandler del = null;
del = delegate (SwissAddonFramework.UI.EventHandling.ItemEvents.FormLoad ev)
{
try
{
SwissAddonFramework.UI.Components.Form.RemoveHandler(formType, SwissAddonFramework.UI.Components.ModeComponent.FormModes.ALL, del);
ev.Form.Select();
ev.Form.Mode = SwissAddonFramework.UI.Components.ModeComponent.FormModes.ADD;
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["68"]).Value = ((SwissAddonFramework.UI.Components.TextEdit)pVal.Form.Items["4"]).Value;
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["32"]).Value = ((SwissAddonFramework.UI.Components.TextEdit)pVal.Form.Items["8"]).Value;
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["26"]).Value = ((SwissAddonFramework.UI.Components.TextEdit)pVal.Form.Items["12"]).Value;
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["6"]).Value = Artikelnr;
((SwissAddonFramework.UI.Components.ComboBox)ev.Form.Items["10000143"]).Selected.Value = ProfitCenter;
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["12"]).Value = Menge;
}
catch(System.Exception ex)
{
MessageBox.Show("Fehler 2: " + ex.Message, "OK");
}
};
SwissAddonFramework.UI.Components.Form.AddHandler_Load(formType, SwissAddonFramework.UI.Components.ModeComponent.FormModes.ALL, del);
SwissAddonFramework.UI.Components.MenuItem.GetFromUID(menuId).Activate();
}
catch(System.Exception ex)
{
MessageBox.Show("Fehler 1: " + ex.Message, "OK");
}
Monika Bucher
Hallo,vielen Dank.
Es kommt die Fehlermeldung laut Anhang.
Gruß Monika
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-file-uploads/monikabucher/Fehlermeldung_Customize_Function.doc]Fehlermeldung_Customize_Function.doc[/url]
Michael Egloff
et voilà: da ist der Fehler :-)'Bad Value' heisst etwa soviel wie, der Versuch ist fehlgeschlagen, einen falschen Wert in ein Feld zu schreiben (z.B. 'hallo Welt' in einem Feld, welches nur Zahlen erwartet).
du kannst mal die Zeilen
((SwissAddonFramework.UI.Components.ComboBox)ev.Form.Items["10000143"]).Selected.Value = ProfitCenter;
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["12"]).Value = Menge;
ändern auf
MessageBox.Show("ProfitCenter: " + ProfitCenter, "OK");
((SwissAddonFramework.UI.Components.ComboBox)ev.Form.Items["10000143"]).Selected.Value = ProfitCenter;
MessageBox.Show("Menge: " + Menge, "OK");
((SwissAddonFramework.UI.Components.TextEdit)ev.Form.Items["12"]).Value = Menge;
Dann siehst du, was der Code ins Feld ProfitCenter und ins Feld Menge schreiben will.
Gruss,
Michael
Monika Bucher
Also beim ProfitCenter kommt der richtige Wert an. Das hat er mir ja auch übernommen.Bei der Menge kommt eine Fehlermeldung. Ich habe den ganzen Ablauf im Anhang mit Hardcopys dokumentiert. Kann es sein, dass es daran liegt, dass ich das Mengenfeld als string angelegt habe und im Prod.Auftrag dort ein numerischer Wert erwartet wird?
Gruß Monika
Michael Egloff
Anhang, wo? :DKommt eine MessageBox mit "Menge: "
oder gar keine?
Wenn gar keine kommt, dann gibt es einen Fehler beim Profitcenter selektieren.
Wenns immernoch Probleme gibt, würde ich sonst ein gotomeeting vorschlagen, dann schau ich es mir kurz an (sonst sind wir noch ewig am hin und herschreiben.)
Gruss
Michael
Monika Bucher
Hallo,anbei nochmals der Anhang. Ich hab' mich wahrscheinlich wiedermal selbst überholt.
Aber den Vorschlag mit dem GoTo-Meeting fände ich eh' viel besser. Ich meine wir müssten auch noch ein offenes Beratungsbudget haben.
Mein Vorschlag: morgen vormittag, 10:00 Uhr???
Gruß Monika
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-file-uploads/monikabucher/Fehlermeldung_Function_Feld_Menge.doc]Fehlermeldung_Function_Feld_Menge.doc[/url]
Michael Egloff
Hallo Monika,das geht mir so leider nicht.
Nachmittag? Melde dich doch per Email bei mir ( michael.egloff (at) coresystems.ch )
Gruss
Stefan Hirsch
Hallo Zusammen,ich wollte im Produktionsauftrag zusätzlich zum angegebenen Beispiel noch den Typ auf "Spezial" setzen.
Ich habe dafür einen String definiert:
string Typ = "P";
und noch folgende Codezeile eingefügt:
((SwissAddonFramework.UI.Components.ComboBox)ev.Form.Items["20"]).Selected.Value = Typ;
Ich erhalte bei der Ausführung aber im die Fehlermeldung: "Not allowed when the ValidValue is already loaded"
Kann man den Typ überhaupt setzen und wenn ja, wie?
Viele Grüße
Stefan
Stefan Hirsch
Hab`s nach einem Tipp selbst herausgefunden:((SwissAddonFramework.UI.Components.ComboBox)ev.Form.Items["20"]).SelectExclusive(Typ, SwissAddonFramework.UI.Components.ComboBox.SearchKey.ByValue);
0
Please sign in to leave a comment.
Comments
0 comments