皆様、こんにちは!
今回はレポートについてお話ししましょう。
ご存知だと思いますが、Dynamics 365 Business Central 2020 Release Wave 1から得意先(仕入先)ごとにレポートレイアウトを指定できるようになりました。得意先カードから「Navigate -> Customer -> Document Layouts」をクリックすると、設定画面を開けます。

使用先とレポートIDを選んで、得意先専用のレポートを指定できます。非常に素晴らしい機能だと思います。

だが、時々要件定義で下記のような要件が出るかもしれません。同じ得意先の受注書もしくは発注書のレポートは二種類以上を出力したいっと。例えば海外向け受注書のレイアウトは国内向けと異なって、完全に二つのレポートとか。合理的ですが、標準機能にはありません。当然得意先を用途によって分けることも一つの方法ですが、カスタマイズで簡単に実現可能でしょうかという疑問を持っているコンサルタントが大勢いると思います。
結論から言うと実現可能です。今回は実現方法について解説します。
仕様書概略:Sales Order Cardをカスタマイズ
元のプリントボタンを隠す (Print Confirmation…)
新しいボタンを追加する (Select Print)
新しいボタンを押すと、三つのレポートを選択できるように
例として既存のレポートを利用します。自分でカスタマイズしたレポートも利用可能です。
Sales – Quote (204)
Order Confirmation (205)
Sales – Invoice (206)

それでは早速ですが、始めましょう。
プロジェクトを作成して、PageExtensionを追加します。

「Print Confirmation…」を隠します
modify("Print Confirmation")
{
Visible = false;
}
新しいボタンを追加して、三つのレポートを選択できるようにします。
addafter("Work Order")
{
action(SelectPrint)
{
ApplicationArea = All;
Image = Print;
Caption = 'Select Print';
ToolTip = 'Please select the report to be printed';
trigger OnAction()
var
StrMenuMembers: Label 'Sales - Quote,Order Confirmation,Sales - Invoice';
StrMenuDesc: Label 'Please select the report to be printed';
ReportID: Integer;
begin
Clear(ReportID);
ReportID := Dialog.StrMenu(StrMenuMembers, 1, StrMenuDesc);
case ReportID of
0:
exit;
1:
Report.Run(204, true);
2:
Report.Run(205, true);
3:
Report.Run(206, true);
end;
end;
}
}
終わり。
簡単でしょう、試してみます。
エクステンションをインストールします。

アクションを確認します。

カスタマイズで追加された「Select Print」をクリックすると、ソースコードで定義された選択肢が表示されます。

「Sales – Invoice」を選んでみましょう。

Sales – InvoiceのRequestページが表示されました。
成功。

このプロジェクトのソースコードについてGithubをご参照ください。
https://github.com/yzhums/selectprintreport
以上
コメント