martonsagi / al-object-designer

AL Object Designer for Dynamics 365 Business Central development
MIT License
39 stars 21 forks source link

AL Object Designer

C/Side Object Designer was something that the new AL development environment lacks of very much. The idea behind this extension is to provide a main hub for daily development by giving back the ability of overview.

Main Features

Optional integration with AZ AL Dev Tools

Optional integration with AL Test Runner

Requirements

There are no hard dependencies as of v0.1.0.

Optional dependencies:

VS Commands

Prefix: alObjectDesigner.

VSCode Hyperlink support

Open objects using VSCode hyperlinks. This is useful for integration scenarios with external applications.

Format:

vscode://martonsagi.al-object-designer/?Command=[Custom command name]&Type=[Object Type]&Id=[Object ID]&Name=[Object Name]

Example:

vscode://martonsagi.al-object-designer/?Command=Definition&Type=table&Name=Currency

Available commands (case-sensitive!):

Page Designer

This extension has a limited ability to view a rendered page layout without deployment, or move existing fields/actions on screen using drag&drop. Supported page types:

Rendered layout is very similar to Business Central pages, although not an exact copy as I'm not using Office Fabric UI.

Generate AL Tables using custom CSV format

Well, this command has been laying in an internal alpha version for months, it's time to publish it! :) Functional requirement documents often contain table definitions that developers have to re-type into AL files once more. This simple CSV format helps speeding up the typing. One CSV file can contain more table definitions separated by empty lines.

Why CSV? Functional documents usually have AL Table defintion in Word tables that are easy to copy to Excel and transfrom that to this custom format.

Template format:

[Object Type] [Object Id] [Object Name]:[Object Caption]
[Fieldname]:[Caption] [Field Type] [Length or Option Members] [Description]

Example:

Table;79001;Customer Header Table
No.;Code;20;Test Field Desc
Description;Text;50
Selection;Option; ,First,Second

Table;79002;Custom Line Table
Document No.;Code;20;Test Field Desc
Line No.;Integer
Description;Text;50
Amount;Decimal
Selection;Option; ,First,Second

Extension Settings

Option Description
renderPageParts Render PageParts in AL Page Designer
showStandardEvents Show standard Table events, e.g. OnBeforeInsert or OnAfterDelete
VsCodeBrowserPreview Turn on 'Preview' context menu on Object List. Works with UserPassword authentication.
useCRS Run objects using CRS AL Extension (default)
logging Diagnostic logging to Developer Tools console
singleObjectPerFile Detection rule: one object per files
pasteAllEventParameters Paste all event parameters when copying Event Publishers (default).
useInternalNavigation Use custom Go To Definition feature. (Auto-enabled on Linux).
useAZALDevTools Enable integration with AZ AL Dev Tools extension.
useALTestRunner Enable integration with AL Test Runner extension (experimental).
useCustomSnippets Enable custom AL Snippets dropdown that uses .altemplates folder (inactive by default).
gridRowHeightOption Row-height setting for Object list. Values: large (default), medium, small, custom.
gridRowHeightPixels Custom row height in pixels. gridRowHeightOption must be set to custom.

Known Issues

Preview

Searching for "Item Ledger Entry" table

Find Page "Sales Order" as a dynosaur would :)

Filter to workspace and check the context menu for more options

Browse event publishers

Browse event subscriptions

AZ AL Dev Tools Wizard button

Browser Preview extension integration

C/Side-like markedonly feature to cherry-pick objects

Custom Row Height (small)

Copy/Paste Events

Copy/Paste Multiple Events

Event List for Tables/Pages

VSCode Online Support

AL Test Runner integration

AL Interfaces

Real-time Page Designer (alpha)

Under the hood

AL Object Designer is a single-page Aurelia app that is embedded into a VS Code WebView and exchanges data back and forth.


For more information

Github repo: feel free to fork it or send feedback/pull requests.

Happy AL coding!