Skip to main content

Notifications

Small and medium business | Business Central, N...
Unanswered

Use 1 Report to display multipple layouts

Posted on by 5

Hi! 

I wrote Report extension for my "Standard Sales - Order Conf." Report.

Now, i want to use this report dataset to display its data in multiple report layouts.

For this cause, im using "rendering" section to add different layouts:

[In Report Extention]

rendering
    {
        layout("My Sales Order Confirmation")
        {
            Type = RDLC;
            LayoutFile = 'My Sales Order Confirmation.rdl';
        }
        layout("My Sales Order Confirmation Email Text")
        {
            Type = Word;
            LayoutFile = 'My Sales Order Confirmation Email Text.docx';
        }

        layout("My Sales Draft Invoice")
        {
            Type = RDLC;
            LayoutFile = 'My Sales Draft Invoice (for Sales Order).rdl';
        }
    }

No i can open my "Sales Order" record on list page and press "Print Confirmation...", where i would be able to select layout. That works.

Now, i want to create another button, so i could open a report right with needed layout, which should be for instance "My Sales Draft Invoice" (from code above). And this is where struggle begins.

I created a page extension and added a button, but i cant set filter on which layout to display. Can you help me with this? 

One method i found is to manually upload layout to "Custom Report Layouts" and write this code on the button:

pageextension 50350 SalesOrderListReportExt extends "Sales Order List"
{
    actions
    {
        addfirst(reporting)
        {
            action(DraftInvoice)
            {
                Caption = 'Draft Invoice';
                ApplicationArea = All;

                trigger OnAction()
                var
                    ReportLayoutSelection: Record "Report Layout Selection";
                    Layout: Record "Custom Report Layout";
                    DraftInvoiceLayoutCode: Code[40];
                    SalesHeader: Record "Sales Header";
                begin
                    SalesHeader.Reset();
                    CurrPage.SetSelectionFilter(SalesHeader);

                    DraftInvoiceLayoutCode := '1305-000008';
                    ReportLayoutSelection.SetTempLayoutSelected(DraftInvoiceLayoutCode);
                    Report.Run(Report::"Standard Sales - Order Conf.", true, true, SalesHeader);
                end;
            }
        }
        addfirst(Category_Category8)
        {
            actionref(DraftInvoice_Promoted; DraftInvoice)
            {
            }
        }
    }
}

 

The problem here is, that if i want to change my layout, i would need to manually upload it back to BC instead of letting VSCode handle it. Do you have a solution for me?

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

December Spotlight Star - Muhammad Affan

Congratulations to a top community star!

Community AMA December 12th

Join us as we continue to demystify the Dynamics 365 Contact Center

New! Quick response templatesâš¡

Save time with the new custom templates!

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 291,228 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 230,056 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans