我正在尝试设置我在INTranSplit表中创建的自定义字段。我获取目标记录,设置自定义字段,更新保存页面记录的视图,并执行PressSave()。在保存期间的某个时刻,代码将INTranSplit.TranDate设置为null并抛出异常。
这是我的代码:
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);
}
}
我得到的错误是:
错误#14:更新“IN Transaction Split”记录引发至少一个错误。请检查错误。
错误:'交易日期'不能为空。
我逐步完成了整个过程,发现在代码进入PressSave()函数之前,TranDate不为空。
有没有办法解决这个问题?
答案 0 :(得分:1)
确保包含父视图并设置INRegister和INTran的当前值,因为INTranSplit中的TranDate基于INRegister。