我在RQRequisition主數據視圖上創建了3個自定義字段。爲每個自定義字段添加FieldUpdated事件,該函數將從這些字段中總結值,然後將其複製到行dataview(RQRequisitionLine)上的自定義字段。計算主人的自定義字段,並將其複製到線上的自定義字段 - Acumatica
爲RQRequisitionDAC擴展定義:
//Non UI Field for UsrEngCost
[PXDBDecimal]
[PXDefault(TypeCode.Decimal, "0.0")]
// definition for UsrCuryEngCost
[PXDBCurrency(typeof(RQRequisition.curyInfoID), typeof(RQRequisitionExt.usrEngCost))]
[PXUIField(DisplayName="Est. Eng. Cost")]
[PXDefault(TypeCode.Decimal, "0.0")]
//Non UI Field for UsrShipCost
[PXDBDecimal]
[PXDefault(TypeCode.Decimal, "0.0")]
// definition for UsrCuryShipCost
[PXDBCurrency(typeof(RQRequisition.curyInfoID), typeof(RQRequisitionExt.usrShipCost))]
[PXUIField(DisplayName="Est. Ship. Cost")]
[PXDefault(TypeCode.Decimal, "0.0")]
//Non UI Field for UsrCleCost
[PXDBDecimal]
[PXDefault(TypeCode.Decimal, "0.0")]
// definition for UsrCuryCleCost
[PXDBCurrency(typeof(RQRequisition.curyInfoID), typeof(RQRequisitionExt.usrCleCost))]
[PXUIField(DisplayName="Est. Clear. Cost")]
[PXDefault(TypeCode.Decimal, "0.0")]
DAC擴展定義RQRequisitionLine:
//Non UI Field for UsrAddCost
[PXDBDecimal]
[PXDefault(TypeCode.Decimal, "0.0")]
// definition for UsrCuryAddCost
[PXDBCurrency(typeof(RQRequisitionLine.curyInfoID), typeof(RQRequisitionLineExt.usrAddCost))]
[PXUIField(DisplayName="Additional Cost")]
[PXDefault(TypeCode.Decimal, "0.0")]
這裏是FieldUpdated事件的代碼:
protected virtual void RQRequisition_UsrEngCost_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
RQRequisition row = (RQRequisition)e.Row;
if (row == null) return;
RQRequisitionExt rowExt = PXCache<RQRequisition>.GetExtension<RQRequisitionExt>(row);
RQRequisitionLine reqLine = ReqLines.Current;
RQRequisitionLineExt reqLineExt = PXCache<RQRequisitionLine>.GetExtension<RQRequisitionLineExt>(reqLine);
reqLineExt.usrCuryAddCost = rowExt.usrCuryEngCost + rowExt.usrCuryShipCost + rowExt.usrCuryCleCost;
row.Update(reqLine);
}
發佈並得到錯誤:
錯誤:'usrCuryAddCost':無法通過表達式引用類型;請嘗試'PX.Objects.RQ.RQRequisitionLineExt.usrCuryAddCost'代替文件:代碼#RQRequisitionEntry(41) 錯誤:'usrCuryEngCost':不能通過表達式引用類型;嘗試'PX.Objects.RQ.RQRequisitionExt.usrCuryEngCost'代替文件:代碼#RQRequisitionEntry(41)
請您需要您的建議。
屬性已在擴展DAC中聲明。你可以在我上面更新的問題中找到它。 – Arsiadi
如果您正在使用項目編輯器,則可以通過單擊「數據類」窗口的查看源按鈕來查看字段的屬性。您添加到問題中的是字段的屬性。屬性將被聲明爲:'override decimal? UsrEngCost {get;設置}'。看起來你正在使用引用類,而應該看起來像這樣:abstract class UsrEngCost:IBqlField {}。至少這就是'不能通過表達式引用類型'的錯誤所說的。 –
我的意思是抽象類lowercased:抽象類usrEngCost:IBqlField {}。 –