Skip to main content

Notifications

Announcements

No record found.

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!

Top 10 leaders for November!

Congratulations to our November super stars!

Tips for Writing Effective Suggested Answers

Best practices for providing successful forum answers ✍️

Leaderboard

#1
André Arnaud de Calavon Profile Picture

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

#2
Martin Dráb Profile Picture

Martin Dráb 230,198 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans