Standard B1 DropDown Feld in Belegzeile mit Wert aus Stamm füllen
Heiko Merz
Hallo,wir haben eine ExtendedCode-Funktion, die automatisch gewisse Werte in den Belegzeilen füllt, z.B. Provisionsempfänger, Branche, etc. Die gefüllten Felder sind alle UDF-Felder.
Nun möchte ich das Feld Verkäufer (RDR1.SlpName) mit dem Wert aus einer Stammtabelle füllen (Der Verkäufer, der bei diesem Kunden für diesen Artikel zuständig ist, steht bei uns in einer Customer-Item-Tabelle (JRS_C_I).
Der bisherige Code hier sieht so aus: (Das in rot und fett hätte ich so hinzugefügt)
public void FillValuesToDocumentRow(Form form, string itemCode, string cardCode, int row)
{
string fieldToShow = "";
try
{
//StatusBar.WriteWarning("start filling values");
Matrix m = Matrix.GetFromUID(form, "38");
SqlCommand cmdAdditional = new SqlCommand();
cmdAdditional.CommandText = @"
SELECT
OITM.U_JRS_LOADM,
JRS.U_JRS_CUIT,
JRS.U_JRS_CUDE,
JRS.U_JRS_BRANCH,
BRANCH.Code,
JRS.U_JRS_SLPCDE,
OSLP.SlpName,
JRS.U_JRS_PR1SLP,
JRS.U_JRS_PR1VAL
FROM OITM
LEFT OUTER JOIN [@JRS_C_I] JRS ON
OITM.ItemCode=JRS.U_JRS_ITMCDE
AND JRS.U_JRS_VALIDFAND JRS.U_JRS_VALIDT>=DATEADD(DAY,-1,GETDATE())
AND JRS.U_JRS_ACTIV='1'
AND U_DeletedF<>'Y'
AND JRS.U_JRS_BPCDE=@cardCode
AND JRS.U_JRS_ITMCDE=@itemCode
LEFT OUTER JOIN [@JRS_BRANCH] BRANCH ON
JRS.U_JRS_BRANCH=BRANCH.U_JRS_BR
LEFT OUTER JOIN OSLP OSLP ON
JRS.U_JRS_SLPCDE=OSLP.SlpCode
WHERE OITM.ItemCode=@itemCode
";
cmdAdditional.Parameters.AddWithValue("@cardCode", cardCode);
cmdAdditional.Parameters.AddWithValue("@itemCode", itemCode);
using(SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(cmdAdditional))
{
if(sdr.Read())
{
// FILL VALUES TO DOCUMENT LINE
fieldToShow = "U_JRS_CUIT";
m.SetValue("U_JRS_CUIT", row, sdr["U_JRS_CUIT"].ToString());
fieldToShow = "U_JRS_CUDE";
m.SetValue("U_JRS_CUDE", row, sdr["U_JRS_CUDE"].ToString());
fieldToShow = "U_JRS_BRANCH";
m.SetValue("U_JRS_BRANCH", row, sdr["Code"].ToString());
fieldToShow = "27";
m.SetValue("27", row, sdr["SlpName"].ToString());
fieldToShow = "U_JRS_PR1SLP";
m.SetValue("U_JRS_PR1SLP", row, sdr["U_JRS_PR1SLP"].ToString());
fieldToShow = "U_JRS_PR1VAL";
m.SetValue("U_JRS_PR1VAL", row, sdr["U_JRS_PR1VAL"].ToString());
string palString = sdr["U_JRS_LOADM"].ToString();
double palDouble = double.Parse(palString);
//StatusBar.WriteWarning(palString + " - " + palDouble + " - " + palDouble.ToString() + " - " + palString.Replace(',','.'));
//MessageBox.Show(, "OK");
fieldToShow = "U_JRS_LDMPAL";
m.SetValue("U_JRS_LDMPAL", row, palString.Replace(',','.'));//sdr["U_JRS_LOADM"].ToString());
//m.SetValue("U_JRS_MARGE", row, "1.2");
}
else
{
StatusBar.WriteWarning("No information for this item(" + itemCode + ") and business partner(" + cardCode + ")");
}
}
//StatusBar.WriteWarning("end filling values");
}
catch(System.Exception ex)
{
if(ex.Message == "Item - Form item is not editable")
{
MessageBox.Show(LayoutHelper.LD.ReplaceTextParam("[@C0000002]", langCode.ToString()) + fieldToShow , "OK");
}
else
{
MessageBox.Show("Error while filling values on the document line: " + ex.Message, "OK");
}
}
}
27 ist dabei die Column Nummer des Dropdown-Feldes "Sales Employee".
Kann mir jemand sagen, warum bei dieser Code-Konstallation immer die Meldung "Error while filling the values on the document line: The Argument is out of range [66000-91]" erscheint ?
Danke
Heiko
Heiko Merz
:bang: :bang: :bang:Au man, sorry, ich habs nun rausgefunden.
Wenn der SLPCODE in der Datenbank steht, sollte man diesen auch für dieses Feld füllen, nicht den Namen.
Ziehe die Frage zurück :lol:
0
Please sign in to leave a comment.
Comments
0 comments