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