SAP B1: чтение из матрицы - PullRequest
2 голосов
/ 10 мая 2010

Я пытаюсь читать из матрицы. Код, который у меня есть до сих пор:

SAPbouiCOM.Matrix matrix = (SAPbouiCOM.Matrix SBO_Application.Forms.ActiveForm.Items.Item("38").Specific;              
SAPbouiCOM.Column col = matrix.Columns.Item("1") ;
SAPbouiCOM.Cells cells = col.Cells;
String cell = cells.Item(2).Specific.ToString();
String f = cell.ToString();

Ни одна из строк (ячейка и f) не дает мне значение ячейки ...

Любая идея?

Ответы [ 5 ]

4 голосов
/ 11 мая 2010

@ Мигель попробуй этот код

  string ColId   = "1"; //Set The Column Name to read
  Int32  Row     = 2; //Set the Row to Read
  Matrix oMatrix =(Matrix)SBO_Application.Forms.ActiveForm.Items.Item("38").Specific; //Get Access to the Matrix
  EditText oEdit =(EditText)oMatrix.Columns.Item(ColId).Cells.Item(Row).Specific; //Cast the Cell of the matrix to the respective type , in this case EditText
  string sValue  = oEdit.Value; //Get the value form the EditText

Мигель дополнительно проверяет SAP Business One SDK Forum на любой вопрос о SAP B1.

0 голосов
/ 12 февраля 2018

Если вам нужно получить данные из матрицы:

var cellValue = oMatrix.Columns.Item (Id или индекс столбца) .Cells.Item (индекс строки) .Specific.Value;

Но если вам нужно обновить значение матрицы, нужно привести col к EditText obj, например:

var oEdit = (SAPbouiCOM.EditText)oMatrix.Columns.Item(Column's Id or Index).Cells.Item(Row's Index).Specific;
 oEdit.Value = "1";
0 голосов
/ 22 октября 2015

Если вы пытаетесь прочитать значения некоторых столбцов из формы, было бы намного проще использовать SQL-запросы. Это то, что я делаю.

 string firmenname = "";
 string ort = "";
 string plz = "";
 string strasse = "";
 SAPbobsCOM.Recordset mRs1 = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
 string sqlstring = " select top 1 street, zipcode, city, country, address from CRD1 where cardcode = '" + codeid + "' and adrestype ='B' ";
 mRs1.DoQuery(sqlstring);
 while (!mRs1.EoF)
 {
 strasse = mRs1.Fields.Item("street").Value.ToString();
 ort = mRs1.Fields.Item("city").Value.ToString();
 plz = mRs1.Fields.Item("zipcode").Value.ToString();
 firmenname = mRs1.Fields.Item("address").Value.ToString();
 mRs1.MoveNext();
 }

У меня вроде был такой же вопрос, как и у вас. Но после того, как я пришел к этой идее, стало так просто читать значения из любой формы с количеством столбцов. Все, что вам нужно сделать, это «Просмотр -> Информация о системе» и знать, в какой таблице базы данных хранятся значения. Затем напишите желаемый SQL-запрос.

Надеюсь, это поможет вам!

0 голосов
/ 06 мая 2013

мы также можем написать то же самое следующим образом. я сделал это в vb.net

Dim  matrix  as  SAPbouiCOM.Matrix 

matrix =  oForm.Items.Item("38").Specific 


dim f as string = matrix .Columns.Item("3").Cells.Item(2).Specific.value.tostring

Здесь номер ячейки - 2, а номер столбца - 3. таким образом, значение f будет 2-й строкой из 3-х столбцов.

0 голосов
/ 19 июня 2012
SAPbouiCOM.EditText EditValue;
string strValue;
String ColUId = "col_1"  // Column UID
Int32 Row     = 1        //Row Number
Item item     = form.Items.Item("38");
Matrix matrix = ((Matrix)(item.Specific));
EditValue     = (SAPbouiCOM.EditText)matrix.GetCellSpecific(ColUId, Row );
strValue      = EditValue.Value.ToString().Trim();
...