Customize Regel die aktiv wird wenn man durch Belege blättert
Rolf Walker
Hallo zusammen!Ich habe mir eine Customize Regel gebaut (erst rudimentär), die mir anzeigen (sollte) wenn ich auf ein entsprechendes Beleg wechsle (durch suchen, blättern usw.) dass da wo verhanden eine Aktivität hinterlegt ist.
die Regel sieht wie folgt aus:
try
{
// GET DocNum
string DocNum = SwissAddonFramework.UI.Components.TextEdit.GetFromUID(pVal.Form, "8").Value;
// string CardCode = SwissAddonFramework.UI.Components.TextEdit.GetFromUID(pVal.Form, "4").Value;
// GET Acitivity Number from OCLG
using (System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().
ExecuteQuery("SELECT ClgCode FROM OCLG WHERE DocNum= '" + DocNum + "' "))
{
if (sdr.Read())
{
// READ FREETEXT FROM TABLE
string freeText = sdr[0].ToString();
// IF THERE IS FREETEXT
if(!string.IsNullOrEmpty(freeText))
{
// -> SHOW MESSAGE BOX WITH FREETEXT
SwissAddonFramework.UI.Dialogs.MessageBox.Show("Auf dieser Belegnummer gibt es Aktivitäten", "OK");
}
}
}
}
catch(System.Exception exe)
{
SwissAddonFramework.Messaging.Debug.WriteMessage("Error in coresuite customize Regel: " + exe.Message, SwissAddonFramework.Messaging.Debug.DebugLevel.Exception);
SwissAddonFramework.Messaging.StatusBar.WriteError("Error in coresuite customize Regel: " + exe.Message);
}
return true;
Grundsätzlich funktionieren würde diese Regel. NUR: Ich weiss nicht, welchen Event ich wählen muss, dass jedesmal wenn ich auf ein entsprechendes Beleg wechsle (durch Blättern, durch Suchen usw.) mir die Customize Regel aktiviert wird!
Habe so ziemlich jedes Event ausprobiert und auch die Item IDs 1, 4 und 8.
Irgendwie scheint es allerdings nicht so richtig zu klappen!
Habt ihr Idee um welchen Event es sich da handeln könnte und auf welche Item UID ich diesen Event setzen müsste?
Danke für die Antworten!
Freundliche Grüsse und schönes Wochenende!
Rolf Walker
Manuel Marhold
Hi Rolf,Form_data_Load ist das passende Event.
Allerdings solltest du dann die DocEntry aus BusinessObject.ObjectKey auslesen (ist xml)
Rolf Walker
Hallo Manuel!Einmal mehr: Danke für deine prompte Hilfestellung!
Das mit dem FormDataLoad Event hatte ich versucht gehabt. Ging nicht. Aber ich nehme an, dass das aufgrund deiner Anmerkung mit dem DocEntry zu tun hat!
Du weisst ja, dass ich in Sachen C# und auch XML nicht sonderlich bewandert bin!
Könntest du mir evtl. nochmals weitere Einzeilheiten zum fehlenden Code machen?
Auf welches ItemUID muss ich den Event setzen?
Gruss und Dank im voraus!
Rolf
Manuel Marhold
Hi Rolf,EventType=36 - FormDataLoad
kein item, keine column, nur form
pVal.BusinessObjectKey enthält entweder schon den Key oder einen xml-String, bei dem du den Key auslesen musst (tipp: Substring,etc.)
dann die Query auf die DocEntry anpassen.
Rolf Walker
Manuel!Dank deiner Hilfe kommen wir der Sache näher! Das Problem bin jetzt eigentlich nur noch ich.
Query sieht nun wie folgt aus (Da liege ich vermutlich richtig):
("SELECT ClgCode FROM OCLG WHERE DocEntry= '" + DocEntry + "' "))Beim anderen habe ich mehr Mühe (da kommt nämlich eine Fehlermeldung):
string DocEntry = SwissAddonFramework.UI.Components.TextEdit.GetFromUID(pVal.BusinessObjectKey.Substring(DocEntry));
Darf ich dich nochmals bemühen?
Vielen Dank! Würde gerne sagen, dass ich dir auch mal helfen werde - aber daraus wird wohl nix :-)
Gruss,
Rolf
Manuel Marhold
Hi Rolf,die ID, die du bei BusinessObjectKey zurückbekommst ist die DocEntry, also fällt das
weg.SwissAddonFramework.UI.Components.TextEdit.GetFromUID(
Poste mal den pVal.BusinessObjectKey.
Manuel Marhold
Hi Rolf,mit
Dim oXMLDoc As New Xml.XmlDocument
oXMLDoc.LoadXml(pVal.BusinessObjectKey)
Return oXMLDoc.LastChild.InnerText
oXMLDoc = Nothing
bekommst du den Key zurück.
Friederike Mundt
Hallo Rolf,Ausserdem würde ich raten die richtigen Objecttyp in der Query anzugeben, da es theoretisch dieselbe Belegnummer oder DocEntry für unterschiedliche Dokumente geben kann.
Hier ein Beispiel:
// Get the document number of the active form
string strDocNum = SwissAddonFramework.UI.Components.TextEdit.GetFromUID(pVal.Form, "8").Value;
// Get the object key from the active form
string strObjType = pVal.Type;
// Get the activities fro this document from OCLG
using (System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().
ExecuteQuery("SELECT ClgCode FROM OCLG WHERE DocNum= '" + strDocNum + "' AND DocType = '" + strObjType + "'"))
Freundliche Grüsse,
Friederike
Rolf Walker
Hallo zusammen!Vielen Dank für Euren Input - werde die Ratschläge befolgen!
Liebe Grüsse
Rolf
Sascha Balke
Hallo Rolf,hast du dein Problem schon beseitigen können?
0
Please sign in to leave a comment.
Comments
0 comments