Page Extension Vs Page Customization in Business Central
I want to point out the differences between the Page Extension and Page Customization Objects, sometimes the Customization Object, although more limited in functionality, may be sufficient for some customizations.
#1 – Page Customization Object
The page customization object in Dynamics 365 Business Central allows you to add changes to the page layout and actions. The page customization object has more restrictions than the page extension object; when you define a new page customization object.
You cannot:
- Add variables, procedures, or triggers
Page customizations only apply to the RoleCenter they are specified for. In order to see them, in Dynamics 365 Business Central under My Settings, Role Center change to the specific RoleCenter that a page customization is defined for.
Page customization example
The following page customization example MyCustomization makes changes to Customer List. By using the moveafter method, Blanket Orders is moved next to the Aged Accounts Receivable action item. And the modify method is used to hide the NewSalesBlanketOrder action item.
Example
profile TheBoss
{
Description = ‘The Boss’;
RoleCenter = “Business Manager”;
Customizations = MyCustomization;
}
pagecustomization MyCustomization customizes “Customer List”
{
actions
{
moveafter(“Blanket Orders”; “Aged Accounts Receivable”)
modify(NewSalesBlanketOrder)
{
Visible = false;
}
}
}
#2 – Page Extension Object
The page extension object extends a Dynamics 365 Business Central page object and adds or overrides the functionality.
The structure of a page is hierarchical and breaks down into three sections. The first block contains metadata for the overall page; the type of the page and the source table it is showing data from. The next section; the layout, describes the visual parts on the page. The final section details the actions.
Example
pageextension 50110 CustomerCardExtension extends “Customer Card”
{
layout
{
addlast(General)
{
// control with underlying datasource
field(“Shoe Size”; ShoeSize)
{
ApplicationArea = All;
Caption = ‘ShoeSize’;
trigger OnValidate();
begin
if ShoeSize < 10 then
Error(‘Feet too small’);
end;
}
// display-only control (without underlying datasource)
field(ShoesInStock; 10)
{
ApplicationArea = All;
Caption = ‘Shoes in stock’;
}
}
modify(“Address 2”)
{
Caption = ‘New Address 2’;
}
}
#3 – Best practices for designing pages
We recommend that you simplify the user experience by reducing what users see by default. You can promote the information that the users most frequently need to see and hide the less important information.
For example:
- Place common tasks in the ribbon
- Organize information pages under FastTabs and, by default, hide the FastTabs that are infrequently visited.
- Use one to three FactBoxes on a page to provide supplementary information and a place for adding notes
- Add a target Help file for context-sensitive Help for the feature that the page object supports
*This post is locked for comments