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. 

  1. Geschäftspartnercode ==> Geschäftspartnercode (Übernahme funktioniert)
  2. 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

0

Comments

3 comments
  • 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
    Comment actions Permalink
  • 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
    Comment actions Permalink
  • 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
    Comment actions Permalink

Please sign in to leave a comment.

Didn't find what you were looking for?

New post