我正在使用InvoiceEntryExt Graph扩展,并添加了一个名为“ Receipts”的DAC,我已使用IEnumerable方法对其进行了覆盖。
public PXSelect<POReceipt> Receipts;
public IEnumerable receipts()
{
List<string> receiptNbrList = new List<string>();
foreach(APTran tran in Base.Transactions.Select())
{
if(!string.IsNullOrEmpty(tran.ReceiptNbr) && !receiptNbrList.Contains(tran.ReceiptNbr))
{
receiptNbrList.Add(tran.ReceiptNbr);
}
}
object[] values = receiptNbrList.ToArray();
PXResultset<POReceipt> rcpts = PXSelect<POReceipt, Where<POReceipt.receiptNbr, In<Required<POReceipt.receiptNbr>>>>.Select(new PXGraph(), values);
return rcpts;
}
查询执行时,我将多个收据编号传递到values数组中,但是每次我知道一个事实应该有更多的收据时,我每次只会得到1个收据结果。
答案 0 :(得分:1)
传递值的方式不正确,因为下面的代码
object[] values = receiptNbrList.ToArray();
PXResultset<POReceipt> rcpts = PXSelect<POReceipt, Where<POReceipt.receiptNbr, In<Required<POReceipt.receiptNbr>>>>.Select(new PXGraph(), values);
以params object[] pars
的形式传递值,但是该数组应包含与每个Current / Optional / Required对应的值。
为In
运算符传递参数的正确方法如下:
string[] values = receiptNbrList.ToArray();
PXResultset<POReceipt> rcpts = PXSelect<POReceipt, Where<POReceipt.receiptNbr, In<Required<POReceipt.receiptNbr>>>>.Select(new PXGraph(), new object[]{ values });
您应该将对象数组传递给Select方法,并且该数组的第一个成员应该是与In运算符中的Required运算符相对应的字符串数组。