Developer Preview – August 2018

Once again it is our pleasure to announce the August update of the Developer Preview. With this release, we bring you several new features that help building your solutions as extensions. We also include a large number of resolved GitHub issues. See the list of closed bugs here: closed bugs in August.

This Developer Preview is available only through the Ready to Go program. Read more at http://aka.ms/readytogo. To get all fixes and features described in this post please make sure you are running an image with a build number 2.0.41872 or newer.

New virtual tables for Report Data Items and all Page Control fields

The following two new virtual tables are added to reflect more info about request pages and reports:

  • All Control Fields (ID 2000000202)
    • This table contains information about page controls on regular pages, as well as on request pages in reports and XMLports. The primary key is “Object Type”, “Object ID”, and “Control ID”, where “Object Type” could have a value of Report, XMLport, or Page.
  • Report Data Items (ID 2000000203)
    • This table reflects information about individual data items in a report, for example: “Indentation Level”, “Related Table ID”, “Request Filter Fields”, etc.

With the help of these new tables, it is possible now, for example, to generate the report parameters XML string without actually invoking the report request page. Try this code example.

Translating Base App help using AL extensions

It is now possible to create AL extensions that override the default help link for Business Central and re-direct users pressing the Help button to another website. This also enables translating the help link for Base App objects.

In order to do so, we’ve introduced two new properties in the manifest of AL extensions: ‘helpBaseUrl’ and ‘supportedLocales’. The ‘helpBaseUrl’ property represents the URL that will be used to override Microsoft’s default help link (https://docs.microsoft.com/{0}/dynamics365/business-central). This URL must contain a placeholder ‘{0}’ for the user’s locale culture and should point to a website that must be forked from https://github.com/MicrosoftDocs/dynamics365smb-docs in order to follow the same structure that Microsoft’s help follows. The property ‘supportedLocales’ is used to specify the list of locales (in the format language2-country2/region2) that are supported by the URL provided and then by the translation app. If the user’s current locale is among the ‘supportedLocales’ of your extension the user will be re-directed to the help base URL that you specified.  The settings in the app.json file look like this:

 

  "helpBaseUrl": "https://www.mydocumentationwebsite.com/{0}/business-central/",

  "supportedLocales": [

       "da-DK"  ]

 

Note that this feature is not available for per-tenant extensions and a rule has been implemented for it in the PTE analyzer. See PerTenantExtensionCop Analyzer.

 

Adding help links with user locale on new created objects

We previously added the ability to add static help links in new created pages, reports, or XMLports. For more information, see

Adding Help Links from Pages, Reports, and XMLportsIt is now also possible to include a placeholder for the user locale in these links. From code, you will define the HelpLink as follows, including the {0} placeholder:

page 50100 MyPage

{

    HelpLink = 'https://www.mydocumentationwebsite.com/{0}/business-central/my-page';

}

And the placeholder is then filled in according to the app.json file locale setting:

"supportedLocales": [

"da-DK", "en-US"]


In case the user is using one of the supported locales, the supported locale will be inserted in the help link. If the user is not using one of the supported locales, the first locale specified in the ‘supportedLocales’ setting will be considered default and be inserted in the URL.

Field group extensiblity

Field groups can now be extended from a table extension with the use of the addlast construct. It allows for adding more fields to the end of a field group.

Report substitution is possible from extensions

Extensions can now replace built-in reports by subscribing to the OnAfterSubstituteReport event emitted by Codeunit 44 – ReportManagement. Substitution is possible whenever a report is invoked as the result of the user activating a page action that has the RunObject property set to a report or a report is invoked through one of the following static methods on the Report data type:

  • Run
  • RunModal
  • SaveAsHtml
  • SaveAsXml
  • SaveAsPdf
  • SaveAsExcel
  • SaveAsWord
  • RunRequestPage
  • Execute
  • Print
  • SaveAs

Substitution is performed by setting the value of the NewReportId parameter to the ID of the report that should replace the report with ID ReportId. In the following example, I replace Report 2 with Report 4.

If the value of the NewReportId parameter is different from the value of the ReportId parameter and different from -1, it means that the report has already been substituted by another subscriber of this event.

The event is called ‘OnAfterSubstituteReport’ to match the pattern followed by other events in the ReportManagement Codeunit, but the subscriber will be invoked before the substitution takes place.

That’s it for now. As usual we encourage you to let us know how you like working with these additions and keep submitting suggestions and bugs. You can see all the filed bugs on our GitHub issues list (https://github.com/Microsoft/AL/issues).

 

For a list of our previous blog posts, see the links at the end of this post.

Developer Preview – July 2018 Update

Developer Preview – June 2018 Update

Developer Preview – May 2018 Update

Developer Preview – March 2018 Update

NAV Development Tools Preview – February 2018 Update

NAV Development Tools Preview – Anniversary Update

NAV Development Tools Preview – December 2017 Update

NAV Development Tools Preview – November 2017 Update

NAV Development Tools Preview – October 2017 Update

NAV Development Tools Preview – September 2017 Update

NAV Development Tools Preview – August 2017 Update

NAV Development Tools Preview – July 2017 Update

NAV Development Tools Preview – June 2017  Update

NAV Development Tools Preview – April 2017 Update

NAV Development Tools Preview – March 2017 Update

NAV Development Tools Preview – February 2017 Update

NAV Development Tools Preview – January 2017 Update

Announcing the Preview of Modern Development Tools for Dynamics NAV