Function Button - Befüllung einer Zeile/Feld in einem neuen Beleg
Hallo zusammen,
über einen Function Button soll ein neuer Service-Vertrag angelegt werden (aus einer Equipment Karte). Dabei sollen zwei Werte übernommen werden.
- Geschäftspartnercode ==> Geschäftspartnercode (Übernahme funktioniert)
- Seriennummer ==> Im Reiter Artikel unter Seriennummer (Übernahme funktioniert nicht)
Folgender Code verwende ich:
Dim GPCodeCode As String = TextEdit.GetFromUID(pVal.Form, "48").Value
Dim Serial As String = TextEdit.GetFromUID(pVal.Form, "43").Value
MenuItem.GetFromUID("3585").Activate()
MenuItem.GetFromUID("1282").Activate()
Dim form As Form = Form.GetFormFromUID(customize.B1Connector.GetB1Connector().Application.Forms.ActiveForm.UniqueID)
TextEdit.GetFromUID(form, "2").Value = GPCodeCode
TextEdit.GetFromUID(form, "94").Value = Serial
Vielen Dank für Tipps.
Grüße
Matthias
-
Hallo Matthias,
zum einen kannst du die Form 94 nicht befüllen weil das eine Matrix ist, und so weit ich das probiert habe musst du auch erst in den Reiter Artikel wechseln.
Vielleicht geht es auch "schöner" aber so funktioniert es:
Dim GPCodeCode As String = TextEdit.GetFromUID(pVal.Form, "48").Value
Dim Serial As String = TextEdit.GetFromUID(pVal.Form, "43").Value
MenuItem.GetFromUID("3585").Activate()
MenuItem.GetFromUID("1282").Activate()
Dim form As Form = Form.GetFormFromUID(customize.B1Connector.GetB1Connector().Application.Forms.ActiveForm.UniqueID)
TextEdit.GetFromUID(form, "2").Value = GPCodeCode
'Wechsle auf den Reiter Artikel
SwissAddonFramework.B1Connector.GetB1Connector().Application.Forms.ActiveForm.Items.Item("50").Click()
'Befülle die Matrix Spalte 5 Zeile 0 mit Seriennummer
Matrix.GetFromUID(Form, "94").SetValue("5", 0, Serial)Gruß Lothar
0 -
Servus Lothar
funktioniert wirklich einwandfrei.
Hast du vielleicht noch einen Tipp bezüglich folgender Verbesserung:
==> Ein Popup Abfrage, welchen Wert man in ein Feld schreiben will.
Z.B. Function Button fire ==> Welches Enddatum wollen Sie setzen? ==> User Eingabe ==> TextEdit.GetFromUID(form, "23").Value = EndDateEingabe durch User
Damit könnte man die Servicevertragsanlage automatisieren?
Gruß
Matthias
0 -
Hallo Mathias,
dazu müsste man sich eine eigene Form per Customize erstellen. Ich kenne bisher in CSHARP nur die MessageBox, mit der man nicht nur Textmeldungen ausgegeben kann, sondern z.B. auch Ja/Nein Dialoge. Ich weiß jedoch nicht, ob man die Messagebox mit Eingabefeldern starten kann. In VBCODE gäbe es dafür die InputBox.
Bei der eigenen Form brauchst du dann aber eine Methode zum "Anhalten" des Codes. Startest du deinen eigene Form und wartest auf eine Eingabe des Benutzers, musst du quasi in einer Warteschleife deiner Form hängen.
Da Function Buttons den Rückgabewert void haben, kann man nicht mit return true/false arbeiten. Bisher habe ich solche Anwendungen nicht gebraucht und arbeite nur mit der MessageBox. Wenn jemand eine Lösung dafür hat, wäre ich aber auch dankbar!
Gruß
Sebastian
0
Please sign in to leave a comment.
Comments
3 comments