2017-01-10 7 views
0

RQRequisitionのマスターデータビューに3つのカスタムフィールドを作成しました。各カスタムフィールドのFieldUpdatedイベントを追加します。これらのフィールドの値を合計し、それをラインのデータビュー(RQRequisitionLine)のカスタムフィールドにコピーします。 RQRequisitionためマスタのカスタムフィールドを計算し、それをライン上のカスタムフィールドにコピーする - Acumatica

DAC拡張定義:RQRequisitionLineため

//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拡張定義:

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); 

} 

を公開し、エラーを取得:ここ

//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イベントのコードです:

エラー: 'usrCuryAddCost':式で型を参照できません。コードではなく、 'PX.Objects.RQ.RQRequisitionLineExt.usrCuryAddCost'を実行してください。コード#RQRequisitionEntry(41) エラー: 'usrCuryEngCost':式で型を参照できません。コードではなく、 'PX.Objects.RQ.RQRequisitionExt.usrCuryEngCost'を試してください:コード#RQRequisitionEntry(41)

あなたの助言が必要です。

答えて

0

'usrCuryAddCost'と 'usrCuryEngCost'(最初の文字は小文字)フィールドは、DAC拡張で抽象クラス型として宣言する必要があります。

'UsrCuryAddCost'と 'UsrCuryEngCost'(最初の文字の大文字)は、DAC拡張の抽象クラスの横にプロパティタイプとして宣言する必要があります。

BQLクエリ、型パラメータ、および属性で抽象クラス(最初の文字は小文字)を使用します。

フィールドのプロパティ値にアクセスする必要がある場合は、プロパティ(最初の文字は大文字)を使用します。

これを試しましたか? reqLineExt.UsrCuryAddCost = rowExt.UsrCuryEngCost + rowExt.UsrCuryShipCost + rowExt.UsrCuryCleCost;

これらのプロパティは拡張DACで宣言されていますか?

+0

プロパティは既に拡張DACで宣言されています。あなたは上記の更新された質問でそれを見つけることができます。 – Arsiadi

+0

プロジェクトエディタを使用している場合は、[データクラス]画面の[ソースの表示]ボタンをクリックして、フィールドのプロパティを表示できます。あなたがあなたの質問に加えたのは、フィールドの属性です。プロパティは次のように宣言されます: 'override decimal? UsrEngCost {get;セット} '。代わりに参照クラスを使用しているようです:abstract class UsrEngCost:IBqlField {}。少なくとも、それは '式で型を参照できません'というエラーです。 –

+0

私は抽象クラスlowercasedを意味しました:抽象クラスusrEngCost:IBqlField {}。 –

関連する問題