次の方法で共有


電子申告 (ER) 機能の一覧の拡張

コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engageコミュニティに参加し、最新のディスカッションに参加するには、 Finance and Operations Viva Engage Community へのアクセス権フォームに入力し、参加するコミュニティを選択します。

電子レポート (ER) 式は、テキスト、日付と時刻、数学、論理、情報、データ型変換、その他のビジネス ドメイン固有の関数など、データ変換のためのさまざまな種類の関数をサポートします。 組み込みの関数に加えて、ER で使用可能な関数の一覧を拡張できます。 この記事では、新しい関数を導入するために完了する必要がある主要なタスクの概要について説明します。

重要

Microsoft Dynamics 365 Finance、Enterprise Edition 7.3 では、ERExpression クラスの拡張機能は非推奨になりました。 ERExpression クラスの拡張機能を使用してカスタムの組み込み ER 関数を追加する代わりに、カスタム ロジックをカスタム クラスのパブリック メソッドとして実装します。 次に、クラス型またはオブジェクト型のいずれかの必要な ER データ ソースを構成する ER 形式と ER モデル マッピングからこれらのメソッドを呼び出します。 詳細については、アプリケーション クラスのメソッドを呼び出す ER 式の設計を参照してください。

アプリケーション コードのすべての ER 機能は、ERExpression クラスを拡張するクラスとして表示されます。 2 種類の関数が存在します。

  • 固定数の引数 – これらの関数は、プレフィックス parm を持つメソッドを含むクラスによって表されます (後のサンプル コードの parmInputparmStartNum を参照)。 SysOperationDisplayOrderAttribute 属性は、引数の順序を設定します。
  • 可変数の引数 – これらの機能は (ERExpressionGenericCase クラスを参照してください)ERIObjectContainer インターフェイスを実装するクラスで表されます。 追加の Add メソッドは、関数が受け入れる型を宣言します。

ER 式に新しい関数を導入するには、次の手順に従います。

  • 戻り値の型に基づいて関数の基本クラスを選択します (以下のサンプル コードで ERExpressionString を参照してください)。

    • 選択したクラスを拡張する新しいクラスを作成します (次のサンプル コードの ERExpressionStringMid を参照)。

      • 必要な属性を追加します。

        • SysOperationLabelAttribute – 関数の名前を定義します。
        • SysOperationHelpTextAttribute – 関数のヘルプ テキストを定義します。
        • ERComponentGroupAttribute – 関数が属するグループを定義します。 詳細については、電子申告 (ER) の式デザイナー を参照してください。
      • 引数を追加します。

        • 固定数の引数関数の場合は、プレフィックス parm を持つメソッドを追加し、 SysOperationDisplayOrderAttribute 属性を使用して引数の順序を設定します。
        • 可変数の引数関数の場合は、 ERIObjectContainer インターフェイスを実装します。
      • 評価メソッドを追加します。

次に例を示します。

/// <summary>
/// Returns the characters from the middle of a text string, given a starting position and length.
/// </summary>
[
    SysOperationLabelAttribute ('MID'),
    SysOperationHelpTextAttribute ("@ElectronicReporting:ExpressionStringMidHelpText"),
    ERComponentGroupAttribute ("@ElectronicReporting:String")
]
class ERExpressionStringMid extends ERExpressionString
{
    ERExpressionString input;
    ERExpressionInt startNum;
    ERExpressionInt numChars;
    public str evaluateString(ERIDataContext _dataContext)
    {
        return subStr(
            this.parmInput().evaluateString(_dataContext),
            this.parmStartNum().evaluateInt(_dataContext),
            this.parmNumChars().evaluateInt(_dataContext));
    }
    [DataMemberAttribute, SysOperationLabelAttribute ("@ElectronicReporting:Input"), SysOperationDisplayOrderAttribute ("1")]
    public ERExpressionString parmInput(ERExpressionString _input = input)
    {
        input = _input;
        return input;
    }
    [DataMemberAttribute, SysOperationLabelAttribute ("@ElectronicReporting:NumChars"), SysOperationDisplayOrderAttribute ("3")]
    public ERExpressionInt parmNumChars(ERExpressionInt _numChars = numChars)
    {
        numChars = _numChars;
        return numChars;
    }
    [DataMemberAttribute, SysOperationLabelAttribute ("@ElectronicReporting:StartNum"), SysOperationDisplayOrderAttribute ("2")]
    public ERExpressionInt parmStartNum(ERExpressionInt _startNum = startNum)
    {
        startNum = _startNum;
        return startNum;
    }
    public str toString()
    {
        return ERExpressionStringPresenter::namedFunctionToStr(this);
    }
}

推奨されるガイダンス

次のガイダンスは、カスタム ER 関数の設計に役立ちます。

  • 可能な限りMicrosoft Excel関数の名前を再利用して、ER 数式がExcelに似たままになるようにします。 この方法では、エンド ユーザーにとって理解可能な ER 数式を保持します。
  • ER では、プリミティブ データ型のリスト タイプがサポートされません。 そのため、1 つの Value 項目が含まれるデータ コンテナー リストを使用します。
  • 新しい関数の一覧の拡張機能を新しいアプリケーションの修正プログラムとしてリリースします。 ER デザイナーは、その新しいカスタム関数を使用する ER 構成の修正プログラム番号を参照します。 この種類の構成を新しいインスタンスにインポートするたびに、ER は必要な修正プログラムがインストールされているかどうかを評価し、ER 構成と構成がインポートされるバージョンの間のコンプライアンスを維持します。

追加リソース

電子申告 (ER) の概要

電子申告 (ER) のフォーミュラ デザイナー