ビジネス ドキュメントのカスタム デザインを作成する
この記事では、純粋な拡張モデルを使用して、既存のアプリケーション ビジネス ドキュメントのカスタム レポート デザインを作成する方法について説明します。
Microsoft Dynamics 365 Finance には、カスタム ソリューションをサポートするためのツールセットが展開されています。 この記事では、純粋な拡張モデルを使用して、既存のアプリケーション ビジネス ドキュメントのカスタム レポート デザインを作成する手順について説明します。 カスタム レポート デザインをアプリケーション ドキュメントのインスタンスに関連付けるには、この記事で後述する手順に従います。 完了したら、ユーザーは印刷管理設定を構成して、 該当するときはいつでも、カスタムのデザインを選択できます。 次の図は、一般的なアプリケーションのカスタマイズを示しています。
知っている必要がある重要なこと
このソリューションを適用する前に注意すべき重要な点を次に示します。
- 印刷管理設定は、有効な法人に適用されます。 カスタム デザインは、1 つ以上の印刷管理設定を関連付けることができます。
- 標準レポート デザインは、カスタム ソリューションと共に引き続き使用できます。 印刷管理設定を使用して、トランザクションの詳細に基づいて適切なデザインを選択します。
- カスタム ビジネス プロセスのビジネス ドキュメントを導入する場合は、多くの作業が必要です。 カスタム ビジネス ドキュメント ソリューションの作成方法の詳細については、印刷管理の統合ガイド を参照してください。
ビジネス ドキュメントのカスタマイズ
次のチュートリアルでは、既存のアプリケーション ビジネス ドキュメントのカスタム レポート デザインを導入し、次に印刷管理を使用して新しいデザインを選択するプロセスを示します。 このソリューションには、Application Suite モデルの一部として標準アプリケーションで提供される販売の確認レポートのカスタム設計定義が含まれています。 アプリケーションのカスタマイズ内容は、拡張モデルで定義されます。
アプリケーション カスタマイズの新しいモデルを作成します。 拡張モデルに関する詳細については、 拡張機能およびオーバーレイによるカスタマイズ を参照してください。 この例では、アプリケーション スイート拡張子というモデルを追加し、それはアプリケーション スイート、アプリケーション プラットフォーム、およびアプリケーション基盤パッケージを参照します。
Microsoft Visual Studio で、新しいプロジェクトを作成します。 プロジェクトが拡張モデルに関連付けられていることを確認します。 次の図はプロジェクト設定を示します。
ビジネス ドキュメントのカスタム レポートのデザインを作成します。 カスタム ソリューションが正しいレポート データ コントラクトを消費することを確認する必要があります。 アプリケーション エクスプ ローラーで、既存のアプリケーション スイート レポートを検索します。 このレポートの名前は SalesConfirm です。 右クリックし、プロジェクトで複製 をクリックしてカスタム ソリューションを作成します。
レポートの名前を変更して、わかりやすい名前にします。 この例では、カスタム レポートの SalesConfirmExt を名前付けし、標準のソリューションと区別します。 プロジェクトをコンパイルしてレポートを展開し、変更にエラーがないことを確認します。
自由形式デザイナーを使用して、レポートのデザインをカスタマイズします。 レポート という名前のレポート デザインを選択し、右クリックして、精度デザイナーを開きます。 組織の業務要件を満たすように設計をカスタマイズします。 次の図は、Sales confirmation レポートのカスタム設計定義を示しています。
標準のレポート コントローラーを拡張する新しい X++ クラスを追加します。 クラスに、それが既存のアプリケーション レポートのハンドラーであることを適切に表す名前を付けます。 この例では、クラスの SalesConfirmControllerExt の名前を変更し、他のレポート コントローラーと区別します。
拡張クラスを使用して、カスタム デザインを読み込みます。 カスタム レポート デザインを参照するメインメソッドを追加します。 (標準的なソリューションから主要なメソッドをコピーし、新しいコントローラークラスへの参照を追加することができます。) 次に、標準的なソリューションを拡張するコードを示します。
class SalesConfirmControllerExt extends SalesConfirmController { public static SalesConfirmControllerExt construct() { return new SalesConfirmControllerExt(); } public static void main(Args _args) { SrsReportRunController formLetterController = SalesConfirmControllerExt::construct(); SalesConfirmControllerExt controller = formLetterController;controller.initArgs(_args, ssrsReportStr(SalesConfirmExt, Report)); if (classIdGet(_args.caller()) == classNum(SalesConfirmJournalPrint)) { formLetterController.renderingCompleted += eventhandler(SalesConfirmJournalPrint::renderingCompleted); } formLetterController.startOperation(); } }
新しいレポート ハンドラー (X++) クラスをプロジェクトに追加します。 クラスに、それが印刷管理に基づくドキュメントのハンドラーであることを適切に表す名前を付けます。 この例では、クラスの PrintMgtDocTypeHandlerExt の名前を変更し、他のオブジェクト ハンドラーと区別します。
デリゲート ハンドラー メソッドを追加して、カスタム レポートの使用を開始します。 この例では、次のコードを使用して PrintMgtDocTypeHandlerExt クラスの getDefaultReportFormatDelegate メソッドを展開します。
class PrintMgtDocTypeHandlersExt { [SubscribesTo(classstr(PrintMgmtDocType), delegatestr(PrintMgmtDocType, getDefaultReportFormatDelegate))] public static void getDefaultReportFormatDelegate(PrintMgmtDocumentType _docType, EventHandlerResult _result) { switch (_docType) { case PrintMgmtDocumentType::SalesOrderConfirmation: _result.result(ssrsReportStr(SalesConfirmExt, Report)); break; } } }
アプリケーションのレポートのメニュー項目を拡張します。 アプリケーション エクスプ ローラーで、既存のアプリケーション スイート メニュー項目を検索します。 このメニュー項目の名前は SalesConfirmation です。 右クリックし、拡張子の作成 をクリックします。 デザイナーで新しい拡張オブジェクトを開いて、オブジェクトプロパティの値を SalesConfirmControllerExt に設定し、ユーザー ナビゲーションを拡張されたソリューションにリダイレクトします。
カスタム ビジネス ドキュメントを使用するため、印刷管理設定を更新してください。 この例では、売掛金勘定 > 設定 > フォーム > フォーム設定の順に移動します。 印刷管理をクリックし、ドキュメントの構成設定を検索し、カスタム デザインを選択します。 次の図は、変更がコンパイルされた後の印刷管理設定を示しています。
これで、ビジネス ドキュメントのカスタマイズが完了しました。 アプリケーションでトランザクションを処理するとき、ビジネス ドキュメントのカスタム レポート デザインがユーザーに提示されるようになります。