0
我想设置我在INTranSplit表中创建的自定义字段。我获取目标记录,设置自定义字段,更新包含页面记录的视图,并执行PressSave()。在保存过程中的某个时刻,代码将INTranSplit.TranDate设置为null并引发异常。INTranSplit日期变为空时保存更新记录
这里是我的代码:
public PXAction<EMPWorkOrder> addSerialNbr;
[PXUIField(DisplayName = "Add Serial Number")]
protected void AddSerialNbr()
{
AvailableSNFilter serialNbrRow = AvailableSNs.Current;
if (serialNbrRow.AvailableSNs != null)
{
//Gets record from DAC created from a SQL View
GetAvailableSerialNumbers targetSN = (GetAvailableSerialNumbers)PXSelectorAttribute.Select<AvailableSNFilter.availableSNs>(AvailableSNs.Cache, serialNbrRow);
//Fetches the INTranSplit record
INTranSplit tran = PXSelect<INTranSplit, Where<INTranSplit.refNbr, Equal<Required<GetAvailableSerialNumbers.refNbr>>, And<INTranSplit.lotSerialNbr,
Equal<Required<GetAvailableSerialNumbers.lotSerialNbr>>, And<INTranSplit.inventoryID, Equal<Required<GetAvailableSerialNumbers.inventoryID>>
,And<INTranSplit.lotSerialNbr, NotEqual<Required<INTranSplit.lotSerialNbr>>>>>>>
.Select(this, targetSN.RefNbr, targetSN.LotSerialNbr, targetSN.InventoryID, string.Empty);//, targetSN.SplitLineNbr);
INTranSplitExt tranExt = PXCache<INTranSplit>.GetExtension<INTranSplitExt>(tran);
//Sets the custom field
tranExt.UsrWOID = CurrentDocument.Current.Id;
WorkOrderSerialNumbers.Update(tran);
serialNbrRow.AvailableSNs = string.Empty;
AvailableSNs.Update(serialNbrRow);
this.Actions.PressSave();
}
else
{
Document.Ask("AvailableSN Null", MessageButtons.OK);
}
}
我得到的错误是这样的:
Error #14: Updating 'IN Transaction Split' record raised at least one error. Please review the errors.
Error: 'Transaction Date' cannot be empty.
我经历的过程加强,发现TRANDATE不为空,直到代码进入PressSave后()函数。
有什么办法可以解决这个问题吗?
你在图中包含INRegister吗? INTranSplit.TranDate上的PXDBDefault来自INRegister.tranDate。 – Brendan
我确实对INRegister有一个直接的看法。有什么我需要做的吗? –
可能确保它填充了相关的INRegister。根据视图的配置方式调用viewname.select(),或至少确保在视图中设置了当前值。 – Brendan