From 35e175dacfc052a47431ba908f4ce42e1da50065 Mon Sep 17 00:00:00 2001 From: waldo1001 Date: Wed, 22 Feb 2023 12:17:42 +0000 Subject: [PATCH] deploy: 78fa831aec2b88b8e4f9aff84ecdc73bad35c8e4 --- 404.html | 4 ++-- author/index.html | 4 ++-- blog/index.html | 4 ++-- categories/best-practice/index.html | 4 ++-- categories/index.html | 4 ++-- categories/pattern/index.html | 4 ++-- docs/bestpractices/api-page/index.html | 4 ++-- docs/bestpractices/begin-as-an-afterword/index.html | 4 ++-- docs/bestpractices/begin-end/index.html | 4 ++-- .../binary-operator-line-start/index.html | 4 ++-- docs/bestpractices/blank-lines/index.html | 4 ++-- docs/bestpractices/case-actions/index.html | 4 ++-- docs/bestpractices/comments-spacing/index.html | 4 ++-- docs/bestpractices/customtelemetry/index.html | 4 ++-- docs/bestpractices/deleteall/index.html | 4 ++-- docs/bestpractices/end-else-pair/index.html | 4 ++-- docs/bestpractices/if-not-find-then-exit/index.html | 4 ++-- docs/bestpractices/index.html | 4 ++-- docs/bestpractices/index.xml | 2 +- .../istemporary-table-safeguard/index.html | 4 ++-- docs/bestpractices/keyboard-shortcuts/index.html | 4 ++-- .../keyword-pairs-indentation/index.html | 4 ++-- docs/bestpractices/line-start-keywords/index.html | 4 ++-- docs/bestpractices/lonely-repeat/index.html | 4 ++-- docs/bestpractices/named-invocations/index.html | 4 ++-- docs/bestpractices/one-statement-per-line/index.html | 4 ++-- docs/bestpractices/separate-if-and-else/index.html | 4 ++-- .../spacing-binary-operators/index.html | 4 ++-- docs/bestpractices/subscribercodeunits/index.html | 12 ++++++------ .../bestpractices/suggested-abbreviations/index.html | 4 ++-- docs/bestpractices/unnecessary-else/index.html | 4 ++-- docs/bestpractices/unnecessary-truefalse/index.html | 4 ++-- docs/bestpractices/variable-naming/index.html | 4 ++-- .../variables-declarations-order/index.html | 4 ++-- docs/contributing/forkandpr/index.html | 4 ++-- docs/contributing/formattingtips/index.html | 4 ++-- docs/contributing/index.html | 4 ++-- docs/contributing/installhugo/index.html | 4 ++-- .../installhugo/manuallyonwindows11/index.html | 4 ++-- docs/contributing/installhugo/theshortcut/index.html | 4 ++-- .../usingpowershellonwindows11/index.html | 4 ++-- docs/contributing/templates/bestpractice/index.html | 4 ++-- docs/contributing/templates/index.html | 4 ++-- docs/contributing/templates/patterns/index.html | 4 ++-- docs/contributing/theapprovalprocess/index.html | 4 ++-- docs/index.html | 4 ++-- docs/navpatterns/2-anti-patterns/index.html | 4 ++-- .../2-anti-patterns/nav-upgrade/index.html | 4 ++-- .../2-anti-patterns/reusable-bugs/index.html | 4 ++-- .../design/by-reference-parameters/index.html | 4 ++-- .../design/class-coupling/index.html | 4 ++-- .../design/cyclomatic-complexity/index.html | 4 ++-- .../encapsulate-local-functionality/index.html | 4 ++-- .../design/findset-findfirst-findlast/index.html | 4 ++-- .../3-cal-coding-guidelines/design/index.html | 4 ++-- .../design/initialized-variables/index.html | 4 ++-- .../design/maintainability-index/index.html | 4 ++-- .../design/parameter-placeholders/index.html | 4 ++-- .../design/static-object-invocation/index.html | 4 ++-- .../design/unreachable-code/index.html | 4 ++-- .../design/unused-initialized-variables/index.html | 4 ++-- .../design/unused-variables/index.html | 4 ++-- .../design/variable-capacity-mismatch/index.html | 4 ++-- .../design/with-scope-name-collision/index.html | 4 ++-- docs/navpatterns/3-cal-coding-guidelines/index.html | 4 ++-- .../internally-used-dot-net-types/index.html | 4 ++-- .../internationalization/index.html | 4 ++-- .../internationalization/using-calcdate/index.html | 4 ++-- .../captionml-for-system-tables/index.html | 4 ++-- .../fieldcaption-and-tablecaption/index.html | 4 ++-- .../localizability/global-text-constants/index.html | 4 ++-- .../localizability/index.html | 4 ++-- .../localizability/use-text-constants/index.html | 4 ++-- .../localizability/using-optioncaptionml/index.html | 4 ++-- .../readability/begin-as-an-afterword/index.html | 4 ++-- .../readability/begin-end/index.html | 4 ++-- .../binary-operator-line-start/index.html | 4 ++-- .../readability/blank-lines/index.html | 4 ++-- .../readability/case-actions/index.html | 4 ++-- .../readability/colon-usage-in-case/index.html | 4 ++-- .../readability/comments-curly-brackets/index.html | 4 ++-- .../readability/comments-spacing/index.html | 4 ++-- .../readability/end-else-pair/index.html | 4 ++-- .../readability/indentation/index.html | 4 ++-- .../3-cal-coding-guidelines/readability/index.html | 4 ++-- .../readability/keyword-pairs-indentation/index.html | 4 ++-- .../readability/line-start-keywords/index.html | 4 ++-- .../readability/lonely-repeat/index.html | 4 ++-- .../readability/named-invocations/index.html | 4 ++-- .../readability/nested-withs/index.html | 4 ++-- .../readability/one-statement-per-line/index.html | 4 ++-- .../readability/separate-if-and-else/index.html | 4 ++-- .../readability/spacing-binary-operators/index.html | 4 ++-- .../readability/spacing-brackets-and/index.html | 4 ++-- .../readability/spacing-unary-operators/index.html | 4 ++-- .../readability/suggested-abbreviations/index.html | 4 ++-- .../readability/temporary-variable-naming/index.html | 4 ++-- .../readability/textconst-suffixes/index.html | 4 ++-- .../readability/unary-operator-line-end/index.html | 4 ++-- .../unnecessary-compound-parenthesis/index.html | 4 ++-- .../readability/unnecessary-else/index.html | 4 ++-- .../unnecessary-function-parenthesis/index.html | 4 ++-- .../readability/unnecessary-separators/index.html | 4 ++-- .../readability/unnecessary-truefalse/index.html | 4 ++-- .../readability/variable-already-scoped/index.html | 4 ++-- .../readability/variable-naming/index.html | 4 ++-- .../variables-declarations-order/index.html | 4 ++-- .../ux/actions-images/index.html | 4 ++-- .../3-cal-coding-guidelines/ux/confirm/index.html | 4 ++-- .../3-cal-coding-guidelines/ux/fielderror/index.html | 4 ++-- .../3-cal-coding-guidelines/ux/index.html | 4 ++-- .../ux/message-and-error/index.html | 4 ++-- .../4-get-involved/code-of-conduct/index.html | 4 ++-- docs/navpatterns/4-get-involved/index.html | 4 ++-- .../4-get-involved/patterns-authors/index.html | 4 ++-- .../index.html | 4 ++-- docs/navpatterns/index.html | 4 ++-- docs/navpatterns/patterns/activity-log/index.html | 4 ++-- docs/navpatterns/patterns/argument-table/index.html | 4 ++-- .../data-driven-blocked-entity/index.html | 4 ++-- docs/navpatterns/patterns/blocked-entity/index.html | 4 ++-- .../patterns/cached-web-service-calls/index.html | 4 ++-- .../patterns/conditional-cascading-update/index.html | 4 ++-- docs/navpatterns/patterns/copy-document/index.html | 4 ++-- .../patterns/create-data-from-templates/index.html | 4 ++-- .../patterns/create-urls-to-nav-clients/index.html | 4 ++-- .../patterns/creating-custom-charts/index.html | 4 ++-- .../patterns/cross-session-events/index.html | 4 ++-- .../patterns/currently-active-record/index.html | 4 ++-- .../patterns/data-migration-facade/index.html | 4 ++-- docs/navpatterns/patterns/discovery-event/index.html | 4 ++-- docs/navpatterns/patterns/document/index.html | 4 ++-- .../index.html | 4 ++-- .../patterns/error-message-processing/index.html | 4 ++-- .../extending-the-role-center-headlines/index.html | 4 ++-- .../index.html | 4 ++-- docs/navpatterns/patterns/hooks/index.html | 4 ++-- .../index.html | 4 ++-- docs/navpatterns/patterns/index.html | 4 ++-- .../patterns/instructions-in-the-ui/index.html | 4 ++-- .../patterns/integration-of-addresses/index.html | 4 ++-- .../patterns/journal-error-processing/index.html | 4 ++-- .../patterns/journal-template-batch-line/index.html | 4 ++-- docs/navpatterns/patterns/master-data/index.html | 4 ++-- .../patterns/multi-file-download/index.html | 4 ++-- docs/navpatterns/patterns/multi-page-list/index.html | 4 ++-- .../multilanguage-application-data/index.html | 4 ++-- .../net-exception-handling-in-cal/index.html | 4 ++-- .../index.html | 4 ++-- docs/navpatterns/patterns/no-series/index.html | 4 ++-- .../in-context-notifications/index.html | 4 ++-- docs/navpatterns/patterns/notifications/index.html | 4 ++-- .../index.html | 4 ++-- docs/navpatterns/patterns/observer/index.html | 4 ++-- .../posting-routine-select-behavior/index.html | 4 ++-- docs/navpatterns/patterns/product-name/index.html | 4 ++-- docs/navpatterns/patterns/queries/index.html | 4 ++-- .../queries/select-distinct-with-queries/index.html | 4 ++-- .../index.html | 4 ++-- .../use-queries-to-replace-nested-loops/index.html | 4 ++-- .../index.html | 4 ++-- docs/navpatterns/patterns/released-entity/index.html | 4 ++-- .../navpatterns/patterns/report-selection/index.html | 4 ++-- .../1-sensitive-data-encapsulation/index.html | 4 ++-- .../patterns/security/2-data-encryption/index.html | 4 ++-- .../security/3-single-point-of-access/index.html | 4 ++-- .../patterns/security/4-masked-text/index.html | 4 ++-- .../patterns/security/5-ssl-in-nav/index.html | 4 ++-- docs/navpatterns/patterns/security/index.html | 4 ++-- .../patterns/setup-specificity-fallback/index.html | 4 ++-- .../silent-file-upload-and-download/index.html | 4 ++-- docs/navpatterns/patterns/singleton/index.html | 4 ++-- .../patterns/singleton/singleton-codeunit/index.html | 4 ++-- .../singleton/singleton-table/cue-table/index.html | 4 ++-- .../patterns/singleton/singleton-table/index.html | 4 ++-- .../singleton/singleton-table/setup-table/index.html | 4 ++-- .../navpatterns/patterns/standard-journal/index.html | 4 ++-- .../patterns/temporary-dataset-report/index.html | 4 ++-- .../index.html | 4 ++-- .../patterns/transfer-custom-fields/index.html | 4 ++-- docs/navpatterns/patterns/variant-facade/index.html | 4 ++-- docs/navpatterns/related-links/index.html | 4 ++-- docs/patterns/api-delegate-operation/index.html | 4 ++-- docs/patterns/api-register-fieldset/index.html | 4 ++-- docs/patterns/command-queue/index.html | 4 ++-- docs/patterns/event-bridge-pattern/index.html | 4 ++-- docs/patterns/facade-pattern/index.html | 4 ++-- docs/patterns/generic-method-pattern/index.html | 4 ++-- docs/patterns/index.html | 4 ++-- docs/patterns/no-series/index.html | 4 ++-- docs/patterns/template-method-pattern/index.html | 4 ++-- index.html | 4 ++-- search/index.html | 4 ++-- sitemap.xml | 2 +- tags/al/index.html | 4 ++-- tags/al/index.xml | 2 +- tags/api/index.html | 4 ++-- tags/c/al/index.html | 4 ++-- tags/decoupling/index.html | 4 ++-- tags/extendability/index.html | 4 ++-- tags/index.html | 4 ++-- tags/interface/index.html | 4 ++-- tags/performance/index.html | 4 ++-- tags/performance/index.xml | 2 +- tags/productivity/index.html | 4 ++-- tags/readability/index.html | 4 ++-- tags/telemetry/index.html | 4 ++-- tags/testability/index.html | 4 ++-- 208 files changed, 416 insertions(+), 416 deletions(-) diff --git a/404.html b/404.html index b0ae5cb5..86eaeda6 100644 --- a/404.html +++ b/404.html @@ -1,7 +1,7 @@ -404 Page not found | alguidelines.dev - Business Central Design Patterns +404 Page not found | alguidelines.dev - Business Central Design Patterns

Not found

Oops! This page doesn't exist. Try going back to our home page.

© 2022 alguidelines.dev Project All Rights Reserved
+alguidelines.dev

Not found

Oops! This page doesn't exist. Try going back to our home page.

© 2023 alguidelines.dev Project All Rights Reserved
diff --git a/author/index.html b/author/index.html index 0aed09cb..520c4de4 100644 --- a/author/index.html +++ b/author/index.html @@ -1,7 +1,7 @@ -Author | alguidelines.dev - Business Central Design Patterns +Author | alguidelines.dev - Business Central Design Patterns

Author

© 2022 alguidelines.dev Project All Rights Reserved
+alguidelines.dev

Author

© 2023 alguidelines.dev Project All Rights Reserved
diff --git a/blog/index.html b/blog/index.html index 99dc4b94..ed6ea063 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,4 +1,4 @@ -AL Guidelines Blog | alguidelines.dev - Business Central Design Patterns +AL Guidelines Blog | alguidelines.dev - Business Central Design Patterns
© 2022 alguidelines.dev Project All Rights Reserved
+ Create project issue
Tag Cloud
Categories
RSS
diff --git a/categories/best-practice/index.html b/categories/best-practice/index.html index 8b940389..288af868 100644 --- a/categories/best-practice/index.html +++ b/categories/best-practice/index.html @@ -1,7 +1,7 @@ -Best Practice | alguidelines.dev - Business Central Design Patterns +Best Practice | alguidelines.dev - Business Central Design Patterns

Category: Best Practice

All Categories
© 2022 alguidelines.dev Project All Rights Reserved
+alguidelines.dev

Category: Best Practice

All Categories
© 2023 alguidelines.dev Project All Rights Reserved
diff --git a/categories/index.html b/categories/index.html index 41f454e5..ad017e43 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,7 +1,7 @@ -Categories | alguidelines.dev - Business Central Design Patterns +Categories | alguidelines.dev - Business Central Design Patterns
© 2022 alguidelines.dev Project All Rights Reserved
+alguidelines.dev
© 2023 alguidelines.dev Project All Rights Reserved
diff --git a/categories/pattern/index.html b/categories/pattern/index.html index f24f7c7c..358de4a9 100644 --- a/categories/pattern/index.html +++ b/categories/pattern/index.html @@ -1,7 +1,7 @@ -Pattern | alguidelines.dev - Business Central Design Patterns +Pattern | alguidelines.dev - Business Central Design Patterns

Category: Pattern

All Categories
© 2022 alguidelines.dev Project All Rights Reserved
+alguidelines.dev

Category: Pattern

All Categories
© 2023 alguidelines.dev Project All Rights Reserved
diff --git a/docs/bestpractices/api-page/index.html b/docs/bestpractices/api-page/index.html index b1146743..29ba835c 100644 --- a/docs/bestpractices/api-page/index.html +++ b/docs/bestpractices/api-page/index.html @@ -1,4 +1,4 @@ -API Page / Query | alguidelines.dev - Business Central Design PatternsAPI Page / Query | alguidelines.dev - Business Central Design PatternsLast modified March 30, 2022: Added Rec. to the API Page code Example (6b80f473) -by Stefan Maroń +by Stefan Maroń diff --git a/docs/bestpractices/begin-as-an-afterword/index.html b/docs/bestpractices/begin-as-an-afterword/index.html index 0ecd0d0b..abf74c8a 100644 --- a/docs/bestpractices/begin-as-an-afterword/index.html +++ b/docs/bestpractices/begin-as-an-afterword/index.html @@ -1,4 +1,4 @@ -begin as an afterword | alguidelines.dev - Business Central Design Patternsbegin as an afterword | alguidelines.dev - Business Central Design PatternsLast modified March 19, 2022: added indentation (83053e72) -by christianbraeunlich +by christianbraeunlich diff --git a/docs/bestpractices/begin-end/index.html b/docs/bestpractices/begin-end/index.html index 29b42a10..7d0e12b4 100644 --- a/docs/bestpractices/begin-end/index.html +++ b/docs/bestpractices/begin-end/index.html @@ -1,4 +1,4 @@ -Begin-End - Compound Only | alguidelines.dev - Business Central Design PatternsBegin-End - Compound Only | alguidelines.dev - Business Central Design PatternsAZ AL Dev Tools/AL Code Outline extension adds two new commands to Visual Studio Code to remove begin..end around single statements.

Last modified May 6, 2022: Added Tips section with link to VS Code extension (3cba72ce) -by Frédéric Vercaemst
+by Frédéric Vercaemst diff --git a/docs/bestpractices/binary-operator-line-start/index.html b/docs/bestpractices/binary-operator-line-start/index.html index 64d308ec..41720b1b 100644 --- a/docs/bestpractices/binary-operator-line-start/index.html +++ b/docs/bestpractices/binary-operator-line-start/index.html @@ -1,4 +1,4 @@ -Binary Operator to Start Line | alguidelines.dev - Business Central Design PatternsBinary Operator to Start Line | alguidelines.dev - Business Central Design PatternsLast modified March 19, 2022: added indentation (83053e72) -by christianbraeunlich +by christianbraeunlich diff --git a/docs/bestpractices/blank-lines/index.html b/docs/bestpractices/blank-lines/index.html index 94b80982..2b178716 100644 --- a/docs/bestpractices/blank-lines/index.html +++ b/docs/bestpractices/blank-lines/index.html @@ -1,4 +1,4 @@ -When not to use Blank Lines | alguidelines.dev - Business Central Design PatternsWhen not to use Blank Lines | alguidelines.dev - Business Central Design PatternsAZ AL Dev Tools/AL Code Outline extension adds two new commands to Visual Studio Code to remove empty duplicate lines.

Last modified May 6, 2022: Added Tips section with link to VS Code extension (0b32513b) -by Frédéric Vercaemst
+by Frédéric Vercaemst diff --git a/docs/bestpractices/case-actions/index.html b/docs/bestpractices/case-actions/index.html index b51080bd..8b634aa8 100644 --- a/docs/bestpractices/case-actions/index.html +++ b/docs/bestpractices/case-actions/index.html @@ -1,4 +1,4 @@ -CASE Action on next line | alguidelines.dev - Business Central Design PatternsCASE Action on next line | alguidelines.dev - Business Central Design PatternsLast modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen +by Henrik Helgesen diff --git a/docs/bestpractices/comments-spacing/index.html b/docs/bestpractices/comments-spacing/index.html index bd5d7a57..3ca8fe74 100644 --- a/docs/bestpractices/comments-spacing/index.html +++ b/docs/bestpractices/comments-spacing/index.html @@ -1,4 +1,4 @@ -Comment Spacing | alguidelines.dev - Business Central Design PatternsComment Spacing | alguidelines.dev - Business Central Design Patterns Create project issue
Tag Cloud
Categories

Comment Spacing

Created by Microsoft, Described by waldo

Description

Always start comments with // followed by one space character.

Bad code

RowNo += 1000; //Move way below the budget  
 

Good code

RowNo += 1000; // Move way below the budget
 
Last modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
+by Henrik Helgesen diff --git a/docs/bestpractices/customtelemetry/index.html b/docs/bestpractices/customtelemetry/index.html index ebb0bcb2..e816062a 100644 --- a/docs/bestpractices/customtelemetry/index.html +++ b/docs/bestpractices/customtelemetry/index.html @@ -1,4 +1,4 @@ -Custom Telemetry | alguidelines.dev - Business Central Design PatternsCustom Telemetry | alguidelines.dev - Business Central Design PatternsLast modified March 24, 2022: Update content/docs/BestPractices/CustomTelemetry/index.md (417cc2f0) -by Henrik Helgesen +by Henrik Helgesen diff --git a/docs/bestpractices/deleteall/index.html b/docs/bestpractices/deleteall/index.html index f653feea..9ed51cad 100644 --- a/docs/bestpractices/deleteall/index.html +++ b/docs/bestpractices/deleteall/index.html @@ -1,4 +1,4 @@ -DeleteAll | alguidelines.dev - Business Central Design PatternsDeleteAll | alguidelines.dev - Business Central Design PatternsLast modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen +by Henrik Helgesen diff --git a/docs/bestpractices/end-else-pair/index.html b/docs/bestpractices/end-else-pair/index.html index 993b2ba7..2ea1e1e0 100644 --- a/docs/bestpractices/end-else-pair/index.html +++ b/docs/bestpractices/end-else-pair/index.html @@ -1,4 +1,4 @@ -end else pair | alguidelines.dev - Business Central Design Patternsend else pair | alguidelines.dev - Business Central Design PatternsLast modified March 19, 2022: added indentation (83053e72) -by christianbraeunlich +by christianbraeunlich diff --git a/docs/bestpractices/if-not-find-then-exit/index.html b/docs/bestpractices/if-not-find-then-exit/index.html index 404387ae..767c2ffc 100644 --- a/docs/bestpractices/if-not-find-then-exit/index.html +++ b/docs/bestpractices/if-not-find-then-exit/index.html @@ -1,4 +1,4 @@ -if not then exit | alguidelines.dev - Business Central Design Patternsif not then exit | alguidelines.dev - Business Central Design PatternsLast modified November 27, 2022: No reason to use Reset for local variable (9b2c6f0c) -by Tomas Kapitan +by Tomas Kapitan diff --git a/docs/bestpractices/index.html b/docs/bestpractices/index.html index 5d302aab..5d156f61 100644 --- a/docs/bestpractices/index.html +++ b/docs/bestpractices/index.html @@ -1,4 +1,4 @@ -Best Practices | alguidelines.dev - Business Central Design PatternsBest Practices | alguidelines.dev - Business Central Design Patterns Create Issue Discussions Create project issue
Tag Cloud
Categories

Best Practices

AL Code Best Practices

This section will be cover things that aren’t as simple as Design Patterns, but will help make sure your development is:

  • high-performance
  • complies with good designs
  • has high maintainability

Readability

Generally, all readability rules are Microsoft style choices only. You can use them to keep consistency with the existing code.

Performance

Some guidelines are simply better for performance considerations rather than readability or anything else. In this section, let’s look into some..

Discussion

All discussion related to Best Practice are to be found on the Github Repo’s Discussion pages, found here

Last modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
+by Henrik Helgesen diff --git a/docs/bestpractices/index.xml b/docs/bestpractices/index.xml index 4ca4c16f..012d68e7 100644 --- a/docs/bestpractices/index.xml +++ b/docs/bestpractices/index.xml @@ -631,7 +631,7 @@ this specific table will not be used as temporary by someone else. Reacting to t <p>Let&rsquo;s discuss all points</p> <h2 id="keep-the-codeunit-as-small-as-possible">Keep the codeunit as small as possible</h2> <p>Every time a subscriber gets called, a new instance of the codeunit is being loaded in memory, which takes memory and processing power. The smaller the codeunit, the less memory, and the faster it is.</p> -<p>Therefore, it&rsquo;s suggested to split the subscribers by functionality and avoid putting business logic in the actual codeunit. Tip: put all business logic in an &ldquo;<a href="https://alguidelines.dev/bcpatterns/generic-method-pattern/">Method Codeunit</a>&rdquo;.</p> +<p>Therefore, it&rsquo;s suggested to split the subscribers by functionality and avoid putting business logic in the actual codeunit. Tip: put all business logic in an &ldquo;<a href="https://alguidelines.dev/docs/patterns/generic-method-pattern/">Method Codeunit</a>&rdquo;.</p> <p>Examples:</p> <ul> <li>if you app does things on Sales and Purchase, create a Sales-subs codeunit, and a Purchase-subs.</li> diff --git a/docs/bestpractices/istemporary-table-safeguard/index.html b/docs/bestpractices/istemporary-table-safeguard/index.html index bf7af5a9..a8bf40c0 100644 --- a/docs/bestpractices/istemporary-table-safeguard/index.html +++ b/docs/bestpractices/istemporary-table-safeguard/index.html @@ -1,4 +1,4 @@ -IsTemporary record safeguard | alguidelines.dev - Business Central Design PatternsIsTemporary record safeguard | alguidelines.dev - Business Central Design PatternsLast modified June 22, 2022: Add "Best Practice" IsTemporary record safeguard (10818047) -by ksacek +by ksacek diff --git a/docs/bestpractices/keyboard-shortcuts/index.html b/docs/bestpractices/keyboard-shortcuts/index.html index 9362cb45..cdc14e9e 100644 --- a/docs/bestpractices/keyboard-shortcuts/index.html +++ b/docs/bestpractices/keyboard-shortcuts/index.html @@ -1,4 +1,4 @@ -Keyboard Shortcuts | alguidelines.dev - Business Central Design PatternsKeyboard Shortcuts | alguidelines.dev - Business Central Design Patterns Create Issue Discussions Create project issue
Tag Cloud
Categories

Keyboard Shortcuts

Created by Christian Lenz, Described by Christian Lenz

Description

To increase developer productivity while coding, use keyboard shortcuts that are available in the specific context to execute actions faster.

This is a selection of the community’s favorites (more to come).

Windows

WhatWhereHow
Delete wordEditorCTRL + Backspace

VS Code

WhatWhereHow
Switch TabEditorALT + <Arrow Left/Right>
Move Line Up/DownEditorALT + <Arrow Up/Down>
Copy Line Below/AboveEditorALT + SHIFT + <Arrow Up/Down>
Delete LineEditorCTRL + X (without selection)
Add Selection To Next MatchEditorCTRL + D
Select All Occurences Of Find MatchEditorCTRL + SHIFT + L
Add Cursors To Line EndsEditorSHIFT + ALT + I (after selecting lines)
Add Cursor Above/BelowEditorCTRL + ALT + <Arrow Up/Down>
Place Multiple Cursors ManuallyEditorALT + Click
Fast ScrollingEditorALT + Mouse Wheel
Go To Symbol In FileEditorCTRL + SHIFT + O
Breadcrumbs - Open And SelectEditorCTRL + SHIFT + .
Go Back / ForwardGo To DefinitionALT + <Arrow Left/Right>
Last modified September 23, 2022: added shortcuts taken from BCTechDays session (0c0575ee) -by Christian Lenz
+by Christian Lenz diff --git a/docs/bestpractices/keyword-pairs-indentation/index.html b/docs/bestpractices/keyword-pairs-indentation/index.html index 3f5ee63f..5df1dfde 100644 --- a/docs/bestpractices/keyword-pairs-indentation/index.html +++ b/docs/bestpractices/keyword-pairs-indentation/index.html @@ -1,4 +1,4 @@ -Keyword Pairs - Indentation | alguidelines.dev - Business Central Design PatternsKeyword Pairs - Indentation | alguidelines.dev - Business Central Design Patterns
  • (a = b) then
    Last modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Henrik Helgesen
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/line-start-keywords/index.html b/docs/bestpractices/line-start-keywords/index.html index 2de6b0e4..75bad27a 100644 --- a/docs/bestpractices/line-start-keywords/index.html +++ b/docs/bestpractices/line-start-keywords/index.html @@ -1,4 +1,4 @@ -Line Start Keywords | alguidelines.dev - Business Central Design PatternsLine Start Keywords | alguidelines.dev - Business Central Design PatternsLast modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Henrik Helgesen
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/lonely-repeat/index.html b/docs/bestpractices/lonely-repeat/index.html index da10e0e9..44024440 100644 --- a/docs/bestpractices/lonely-repeat/index.html +++ b/docs/bestpractices/lonely-repeat/index.html @@ -1,4 +1,4 @@ -Lonely Repeat | alguidelines.dev - Business Central Design PatternsLonely Repeat | alguidelines.dev - Business Central Design PatternsLast modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Henrik Helgesen
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/named-invocations/index.html b/docs/bestpractices/named-invocations/index.html index 28892ab8..427af0d0 100644 --- a/docs/bestpractices/named-invocations/index.html +++ b/docs/bestpractices/named-invocations/index.html @@ -1,4 +1,4 @@ -Named Invocations | alguidelines.dev - Business Central Design PatternsNamed Invocations | alguidelines.dev - Business Central Design Patterns< Create project issue

    Named Invocations

    Created by Microsoft, Described by waldo

    Description

    When calling an object statically use the Object Name, not the Object Id.

    Bad code

        Page.RunModal(525, SalesShptLine);
     

    Good code

        Page.RunModal(Page::"Posted Sales Shipment Lines", SalesShptLine);
     

    Tips

    The BusinessCentral.LinterCop extension adds a new rule to check your code for hardcoded object IDs.

    • LC0012: Using hardcoded IDs in functions like Codeunit.Run() is not allowed.
    Last modified May 6, 2022: Added Tips section with link to VS Code extension (56a903f3) -by Frédéric Vercaemst
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Frédéric Vercaemst
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/one-statement-per-line/index.html b/docs/bestpractices/one-statement-per-line/index.html index 347d05d1..4aee170d 100644 --- a/docs/bestpractices/one-statement-per-line/index.html +++ b/docs/bestpractices/one-statement-per-line/index.html @@ -1,4 +1,4 @@ -One Statement per Line | alguidelines.dev - Business Central Design PatternsOne Statement per Line | alguidelines.dev - Business Central Design PatternsLast modified May 5, 2022: added caption for each example (6162a121) -by Christian Bräunlich
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Christian Bräunlich
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/separate-if-and-else/index.html b/docs/bestpractices/separate-if-and-else/index.html index 0e15eec9..9240a445 100644 --- a/docs/bestpractices/separate-if-and-else/index.html +++ b/docs/bestpractices/separate-if-and-else/index.html @@ -1,4 +1,4 @@ -Seperate if and else | alguidelines.dev - Business Central Design PatternsSeperate if and else | alguidelines.dev - Business Central Design PatternsLast modified March 19, 2022: added indentation (83053e72) -by christianbraeunlich
    © 2022 alguidelines.dev Project All Rights Reserved
    +by christianbraeunlich
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/spacing-binary-operators/index.html b/docs/bestpractices/spacing-binary-operators/index.html index 32374808..57ed6d46 100644 --- a/docs/bestpractices/spacing-binary-operators/index.html +++ b/docs/bestpractices/spacing-binary-operators/index.html @@ -1,4 +1,4 @@ -Spacing Binary Operators | alguidelines.dev - Business Central Design PatternsSpacing Binary Operators | alguidelines.dev - Business Central Design PatternsLast modified May 5, 2022: added caption for each example (6162a121) -by Christian Bräunlich
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Christian Bräunlich
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/subscribercodeunits/index.html b/docs/bestpractices/subscribercodeunits/index.html index e3e469ac..53955ac2 100644 --- a/docs/bestpractices/subscribercodeunits/index.html +++ b/docs/bestpractices/subscribercodeunits/index.html @@ -1,12 +1,12 @@ -Subscriber Codeunits | alguidelines.dev - Business Central Design PatternsSubscriber Codeunits | alguidelines.dev - Business Central Design Patterns @@ -18,7 +18,7 @@ Keep the codeunit as small as possible Every time a subscriber gets called, a ne Create child page Create Issue Discussions - Create project issue

    Subscriber Codeunits

    Created by waldo, Described by waldo

    Description

    In general, subscribers have to be put in codeunits. There are a few performance considerations that you should keep in the back of your minds, when designing such a codeunit.

    • Keep the codeunit as small as possible
    • Work with a single instance codeunit
    • only subscribe when necessary
    • Avoid generic OnInsert/OnModify/OnDelete

    Let’s discuss all points

    Keep the codeunit as small as possible

    Every time a subscriber gets called, a new instance of the codeunit is being loaded in memory, which takes memory and processing power. The smaller the codeunit, the less memory, and the faster it is.

    Therefore, it’s suggested to split the subscribers by functionality and avoid putting business logic in the actual codeunit. Tip: put all business logic in an “Method Codeunit”.

    Examples:

    • if you app does things on Sales and Purchase, create a Sales-subs codeunit, and a Purchase-subs.
    • if you have multiple functionalities in your app (let’s call’m modules), create a subs-codeunit per module, and only add the subscribers in there that are necessary for that module.

    Bad code

    codeunit 2037325 "Setup Subs"
    + Create project issue

    Subscriber Codeunits

    Created by waldo, Described by waldo

    Description

    In general, subscribers have to be put in codeunits. There are a few performance considerations that you should keep in the back of your minds, when designing such a codeunit.

    • Keep the codeunit as small as possible
    • Work with a single instance codeunit
    • only subscribe when necessary
    • Avoid generic OnInsert/OnModify/OnDelete

    Let’s discuss all points

    Keep the codeunit as small as possible

    Every time a subscriber gets called, a new instance of the codeunit is being loaded in memory, which takes memory and processing power. The smaller the codeunit, the less memory, and the faster it is.

    Therefore, it’s suggested to split the subscribers by functionality and avoid putting business logic in the actual codeunit. Tip: put all business logic in an “Method Codeunit”.

    Examples:

    • if you app does things on Sales and Purchase, create a Sales-subs codeunit, and a Purchase-subs.
    • if you have multiple functionalities in your app (let’s call’m modules), create a subs-codeunit per module, and only add the subscribers in there that are necessary for that module.

    Bad code

    codeunit 2037325 "Setup Subs"
     {
         SingleInstance = true;
     
    @@ -134,8 +134,8 @@ Keep the codeunit as small as possible Every time a subscriber gets called, a ne
                 if JustSomeTable.Color = 'RED' then 
                     UnbindSubscription(DemoSubs);
             until JustSomeTable.Next() < 1;
    -

    Avoid OnInsert/OnModify/OnDelete

    The reason for this is, that it breaks the batch-calls:

    • Any “OnInsert” subscriber breaks the bulk inserts, simply because it needs to perform an operation after every record that was inserted
    • Any “OnModify” subscriber slows down the “ModifyAll”, simply because it needs to perform an operation after every record that was modified. I fact: 1 SQL call is turned into a loop of SQL calls.
    • Any “OnDelete” subscriber slows down the “DeleteAll”, simply because it needs to perform an operation after every record that was deleted. I fact: 1 SQL call is turned into a loop of SQL calls.

    Avoid subscribers to these events.

    References

    The Generic Method Pattern

    Last modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
    © 2022 alguidelines.dev Project All Rights Reserved
    +

    Avoid OnInsert/OnModify/OnDelete

    The reason for this is, that it breaks the batch-calls:

    • Any “OnInsert” subscriber breaks the bulk inserts, simply because it needs to perform an operation after every record that was inserted
    • Any “OnModify” subscriber slows down the “ModifyAll”, simply because it needs to perform an operation after every record that was modified. I fact: 1 SQL call is turned into a loop of SQL calls.
    • Any “OnDelete” subscriber slows down the “DeleteAll”, simply because it needs to perform an operation after every record that was deleted. I fact: 1 SQL call is turned into a loop of SQL calls.

    Avoid subscribers to these events.

    References

    The Generic Method Pattern

    Last modified February 20, 2023: Update index.md (8a4eca4d) +by Soren Klemmensen
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/suggested-abbreviations/index.html b/docs/bestpractices/suggested-abbreviations/index.html index 3f3c22d3..5fec3a03 100644 --- a/docs/bestpractices/suggested-abbreviations/index.html +++ b/docs/bestpractices/suggested-abbreviations/index.html @@ -1,4 +1,4 @@ -Suggested Abbreviations | alguidelines.dev - Business Central Design PatternsSuggested Abbreviations | alguidelines.dev - Business Central Design Patterns Create Issue Discussions Create project issue

    Suggested Abbreviations

    Created by Microsoft, Described by waldo

    Description

    Whenever possible, do not use abbreviations in variables, functions and objects names.

    If there is no other choice, then use the suggestions below.

    wordAbbreviation
    absenceAbs
    accountAcc
    accountingAcc
    accumulatedAccum
    actionAct
    activityActiv
    additionalAdd
    addressAddr
    adjustAdj
    adjustedAdjd
    adjustmentAdjmt
    agreementAgrmt
    allocationAlloc
    allowanceAllow
    alternativeAlt
    amountAmt
    amountsAmts
    answerAns
    appliesAppl
    applicationAppln
    arrivalArriv
    assemblyAsm
    assemble to orderATO
    assignmentAssgnt
    associatedAssoc
    attachmentAttmt
    authoritiesAuth
    automaticAuto
    availabilityAvail
    averageAvg
    ba db.BA
    balanceBal
    bill of materialsBOM
    blanketBlnkt
    budgetBudg
    bufferBuf
    businessBus
    business interaction managementBIM
    buyingBuy
    calculateCalc
    calculatedCalcd
    calculationCalcu
    calendarCal
    capacityCap
    capacity requirements planningCRP
    cash flowCF
    cashflowCF
    catalogctlg
    categoryCat
    Central Processing UnitCPU
    centerCtr
    changeChg
    changesChgs
    characterChar
    charactersChars
    chargeChrg
    chargesChrgs
    checkChk
    classificationClass
    collectioncoll
    columncol
    commentCmt
    companyCo
    componentComp
    completionCmpltn
    componentsComps
    compositionCompn
    compressionCompr
    concurrentConcrnt
    confidentialConf
    confirmationCnfrmn
    conflictConfl
    consolidateConsol
    consolidationConsolid
    consumptionConsump
    contactCont
    containerCntr
    contractContr
    contractedContrd
    controlCtrl
    controlsCtrls
    conversionConv
    correctionCor
    correspondenceCorres
    correspondingCorresp
    costCst
    soldCOGS
    creditCr
    cumulateCumul
    currencyCurr
    currentCrnt
    customerCust
    customer/vendorCV
    dailyDly
    dampenerDamp
    database management systemDBMS
    dateD
    definitionDef
    demonstrationDemo
    departmentDept
    department/projectDP
    depreciationDepr
    descriptionDesc
    detailDtl
    detailedDtld
    detailsDtls
    deviationDev
    differenceDiff
    dimensionDim
    directDir
    discountDisc
    discreteDiscr
    distributeDistr
    distributedDistrd
    distributorDistbtr
    distributionDistrn
    documentDoc
    duplicateDupl
    enteredEntrd
    engineeringEngin
    exchangeExch
    excludingExcl
    executeExec
    expectedExpd
    expeditedExped
    expenseExp
    expressionExpr
    expirationExpir
    extendedExt
    explodeExpl
    exportExpt
    finalFnl
    financeFin
    fiscalFisc
    finishedFnshd
    fixed assetFA
    forwardFwd
    freightFrt
    generalGen
    general ledgerGL
    groupGr
    headerHdr
    historyHist
    holidayHol
    human resourceHR
    identificationID
    importImp
    inboundInbnd
    includingIncl
    includedIncld
    incomingIncmg
    independent software vendorISV
    industryIndust
    informationInfo
    initialInit
    IntrastatIntra
    interactionInteract
    integrationIntegr
    interestInt
    InterimIntm
    internal protocolIP
    inventoryInvt
    inventoriableInvtbl
    invoiceInv
    invoicedInvd
    item trackingIT
    journalJnl
    languageLang
    ledgerLedg
    levelLvl
    lineLn
    listLt
    local currencyLCY
    locationLoc
    mailingMail
    maintenanceMaint
    managementMgt
    manualMan
    manufacturingMfg
    manufacturerMfr
    materialMat
    marketingMktg
    maximumMax
    measureMeas
    messageMsg
    minimumMin
    miscellaneousMisc
    modifyMod
    monthMth
    negativeNeg
    non-inventoriableNonInvtbl
    notificationNotif
    numberNo
    numbersNos
    objectObj
    operatingOper
    opportunityOpp
    orderOrd
    ordersOrds
    originalOrig
    organizationOrg
    outboundOutbnd
    OutgoingOutg
    outputOut
    outstandingOutstd
    overheadOvhd
    paymentPmt
    percentPct
    personnelPersnl
    physicalPhys
    picturePic
    planningPlng
    postedPstd
    postingPost
    positivePos
    precisionPrec
    prepaymentPrepmt
    productProd
    productionProd
    production orderProdOrd
    projectProj
    propertyProp
    prospectPrspct
    purchasePurch
    purchasesPurch
    purchaserPurchr
    purchase orderPurchOrd
    qualityQlty
    quantityQty
    questionnaireQuestn
    quoteQte
    radio frequencyRF
    rangeRng
    receiptRcpt
    receivedRcd
    recordRec
    recordsRecs
    reconcileRecncl
    reconciliationRecon
    recurringRecur
    referenceRef
    registerReg
    registrationRegn
    registeredRegd
    relationRel
    relationsRels
    relationshipRlshp
    releaseRlse
    releasedRlsd
    remainingRem
    reminderRmdr
    replacementRepl
    replenishRplnsh
    replenishmentRplnsht
    reportRpt
    representRep
    representedRepd
    requestRqst
    requiredReqd
    requirementReqt
    requirementsReqts
    requisitionReq
    reserveRsv
    reservedRsvd
    reservationReserv
    resolutionResol
    resourceRes
    responseRsp
    responsibilityResp
    retainRtn
    retainedRtnd
    returnRet
    returnsRets
    revaluationRevaln
    reverseRev
    reviewRvw
    roundRnd
    roundedRndd
    roundingRndg
    routeRte
    routingRtng
    routineRout
    sales & receivablesSales
    safetySaf
    scheduleSched
    secondSec
    segmentSeg
    selectSel
    selectionSelctn
    sequenceSeq
    serialSer
    serial numberSN
    serviceServ
    sheetSh
    shipmentShpt
    sourceSrc
    specialSpcl
    specificationSpec
    specificationsSpecs
    standardStd
    frequencySF
    statementStmt
    statisticalStat
    statisticsStats
    stockStk
    stockkeeping unitSKU
    streamStm
    structured query languageSQL
    subcontractSubcontr
    subcontractedSubcontrd
    subcontractingSubcontrg
    substituteSub
    substitutionSubst
    suggestSug
    suggestedSugd
    suggestionSugn
    summarySum
    suspendedSuspd
    symptomSympt
    synchronizeSynch
    temporaryTemp
    totalTot
    transactionTransac
    transferTrans
    translationTransln
    trackingTrkg
    troubleshootTblsht
    troubleshootingTblshtg
    unit of measureUOM
    unit testUT
    unrealizedUnreal
    unreservedUnrsvd
    updateUpd
    valuationValn
    valueVal
    value added taxVAT
    varianceVar
    vendorVend
    warehouseWhse
    web shopWS
    worksheetWksh
    g/lGL
    %Pct
    3-tierThree-Tier
    Outlook SynchOsynch
    Last modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Henrik Helgesen
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/unnecessary-else/index.html b/docs/bestpractices/unnecessary-else/index.html index cbd936f2..8bff0ee1 100644 --- a/docs/bestpractices/unnecessary-else/index.html +++ b/docs/bestpractices/unnecessary-else/index.html @@ -1,4 +1,4 @@ -Unnecessary else | alguidelines.dev - Business Central Design PatternsUnnecessary else | alguidelines.dev - Business Central Design PatternsLast modified February 24, 2022: Removed Discussion Links. Using new Theme solution. (fb17dc96) -by Henrik Helgesen
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Henrik Helgesen
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/unnecessary-truefalse/index.html b/docs/bestpractices/unnecessary-truefalse/index.html index b9e12644..5fe4e1cb 100644 --- a/docs/bestpractices/unnecessary-truefalse/index.html +++ b/docs/bestpractices/unnecessary-truefalse/index.html @@ -1,4 +1,4 @@ -Unnecessary true/false | alguidelines.dev - Business Central Design PatternsUnnecessary true/false | alguidelines.dev - Business Central Design PatternsLast modified May 5, 2022: added caption for each example (6162a121) -by Christian Bräunlich
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Christian Bräunlich
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/variable-naming/index.html b/docs/bestpractices/variable-naming/index.html index ae3d5d7d..c15339ae 100644 --- a/docs/bestpractices/variable-naming/index.html +++ b/docs/bestpractices/variable-naming/index.html @@ -1,4 +1,4 @@ -Variable Naming | alguidelines.dev - Business Central Design PatternsVariable Naming | alguidelines.dev - Business Central Design PatternsAL Variable Helper extension provides Intellisense support to assign correct variable names in AL.

    Last modified May 6, 2022: Added Tips section with link to VS Code extension (ee06e3d8) -by Frédéric Vercaemst
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Frédéric Vercaemst
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/bestpractices/variables-declarations-order/index.html b/docs/bestpractices/variables-declarations-order/index.html index a6c86bc8..55d3e57e 100644 --- a/docs/bestpractices/variables-declarations-order/index.html +++ b/docs/bestpractices/variables-declarations-order/index.html @@ -1,4 +1,4 @@ -Variables Declarations Order | alguidelines.dev - Business Central Design PatternsVariables Declarations Order | alguidelines.dev - Business Central Design PatternsAZ AL Dev Tools/AL Code Outline extension adds two new commands to Visual Studio Code to sorts variables.

    Last modified May 6, 2022: Added Tips section with link to VSCode extension (a1c53ccb) -by Frédéric Vercaemst
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Frédéric Vercaemst
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/contributing/forkandpr/index.html b/docs/contributing/forkandpr/index.html index 7d07d514..2c8601dc 100644 --- a/docs/contributing/forkandpr/index.html +++ b/docs/contributing/forkandpr/index.html @@ -1,4 +1,4 @@ -Guide to Fork & PR | alguidelines.dev - Business Central Design PatternsGuide to Fork & PR | alguidelines.dev - Business Central Design Patterns Discussions Create project issue

    Guide to Fork & PR

    Abstract

    AL Guidelines is a community project, and as such YOU are encouraged to submit corrections and new ideas. In order to get your content included, you must submit a pull request to the GitHub Repository (Located here: https://github.com/microsoft/alguidelines). All Pull Requests are subject to approval by a minimum of three admins.

    If You are toying with an idea, but You aren’t ready to create a document just yet, you are encouraged to create a project discussion thread here: https://github.com/microsoft/alguidelines/discussions

    Steps

    Now that You have decided that You are ready to contribute, these are the steps to take.

    Step 1: Fork

    In order to work on the repository, You must Fork the repository.

    By forking the repository, You essentially create a copy into Your own account.

    Start by going to the GitHub Repository (https://github.com/microsoft/alguidelines), and press the Fork Fork Button

    Once You have successfully forked the repository, go to your own GitHub repository : Forked Repository Representation

    You are now able to clone your own repository to your local pc and start editing using your favorite editor. Visual Studio Code is perfectly fine for this task.

    Step 2: Branch

    While not necessarily a must, it is always good practice to create a branch off of your forked repository. That will allow you to work on multiple contributions at the same time and won’t have to wait for pull requests to be approved before you can continue on your next contribution.

    Step 3: Pull Request

    Once you are happy with your contribution, it’s time to create a pull request to propose changes into the main project! This is the final step in producing a fork of someone else’s project, and arguably the most important. If you’ve made a change that you feel would benefit the community as a whole, you should definitely consider contributing back.

    To do so, head on over to the repository on GitHub where your project lives. For this example, it would be at https://www.github.com/<your_username>/alguidelines. You’ll see a banner indicating that your branch is one commit ahead of microsoft:main. Click Contribute and then Open a pull request.

    GitHub will bring you to a page that shows the differences between your fork and the microsoft/alguidelines repository. Click Create pull request.

    GitHub will bring you to a page where you can enter a title and a description of your changes. It’s important to provide as much useful information and a rationale for why you’re making this pull request in the first place. The project owners needs to be able to determine whether your change is as useful to everyone as you think it is. Finally, click Create pull request.

    Last modified February 20, 2022: Moving contributing (3d0cb3a4) -by Jeremy Vyska
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Jeremy Vyska
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/contributing/formattingtips/index.html b/docs/contributing/formattingtips/index.html index afefc134..b6d0eddf 100644 --- a/docs/contributing/formattingtips/index.html +++ b/docs/contributing/formattingtips/index.html @@ -1,4 +1,4 @@ -Formatting tips | alguidelines.dev - Business Central Design PatternsFormatting tips | alguidelines.dev - Business Central Design Patterns#msdyn365bc

    — waldo (@waldo1001) November 11, 2021

    YouTube

    {{< youtube QVOMCYitLEc >}}
     

    makes:

    Figure

    {{< figure src="http://www.waldo.be/wp-content/uploads/2021/11/business-central-logo.png" title="Business Central" >}}
     

    makes:

    Business Central

    Last modified March 6, 2022: added mermaid to formatting tips (75dd79f9) -by Christian Bräunlich
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Christian Bräunlich
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/contributing/index.html b/docs/contributing/index.html index 4e44bcfd..66f28dfc 100644 --- a/docs/contributing/index.html +++ b/docs/contributing/index.html @@ -1,4 +1,4 @@ -Contributing | alguidelines.dev - Business Central Design Patterns +Contributing | alguidelines.dev - Business Central Design Patterns

    Contributing

    First off, we’re glad you want to help! The project team is kind and helpful, so if you’re not sure if you have a good first contribution, make a Discussion about it or even just create your first try. You’ll get feedback and we will be happy to help refine it, if it even needs it.

    Code of Conduct

    This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

    When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

    This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

    Steps to Contribute

    Here are some tips and tricks in terms of working with Markdown and Hugo.

    Last modified February 20, 2022: Tweaks to the contributing page (c259acce) -by Jeremy Vyska
    © 2022 alguidelines.dev Project All Rights Reserved
    +by Jeremy Vyska
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/docs/contributing/installhugo/index.html b/docs/contributing/installhugo/index.html index df4a598c..30a61377 100644 --- a/docs/contributing/installhugo/index.html +++ b/docs/contributing/installhugo/index.html @@ -1,4 +1,4 @@ -Install Hugo | alguidelines.dev - Business Central Design PatternsInstall Hugo | alguidelines.dev - Business Central Design Patterns
  • NAV Course 50435 Application Setup in Microsoft Dynamics NAV 2013, Chapter 5: “Set up Journal Templates and Batches”
  • Test reports Definition on MSDN.
  • Microsoft Dynamics NAV 2009: Using the journals and entries in a custom application Blog article by Mark Brummel
  • Search result for “Journal+NAV” Various topics on MSDN
  • For cases when most of the journal data can be used later (like monthly electricity payments, for example), the user has the possibility to save the current transaction details for later use. See the related pattern, Standard Journal.

    Last modified February 24, 2022: Added tags & categories + cleanup (5ee04366) -by waldo1001
    +by waldo1001 diff --git a/docs/navpatterns/patterns/master-data/index.html b/docs/navpatterns/patterns/master-data/index.html index d158adaf..ee2825e2 100644 --- a/docs/navpatterns/patterns/master-data/index.html +++ b/docs/navpatterns/patterns/master-data/index.html @@ -1,4 +1,4 @@ -Master Data | alguidelines.dev - Business Central Design PatternsMaster Data | alguidelines.dev - Business Central Design Patterns Create Issue Discussions Create project issue
    Tag Cloud
    Categories

    Master Data

    By Soren Klemmensen, Partner-Ready-Software & 360 Visibility

    Abstract

    The goal of this design pattern is to outline a standard way of creating master data, such as customers, vendors or items, in NAV.

    Description

    This pattern creates a standard master data entity, listing all necessary prerequisites, attributes and methods to generate a basic version of the data entity.

    It is being used for creating a master data entity and can roughly be divided into 2 categories: Business and Product

    Examples of Master Data tables are:

    Business Data:

    • Table 18: Customer
    • Table 23: Vendor
    • Table 270: Bank Account
    • Table 5050: Contact

    Product Data:

    • Table 15 G/L Account
    • Table 27: Item
    • Table 156: Resource
    • Table 5600: Fixed Asset
    • Table 5718: Nonstock Item
    • Table 5913: Loaner

    Master Data has attributes such as Location, Countries & Item Vendors. These tables are closely related to Master Data tables and are called Supplemental and Subsidiary tables.

    Supplemental:

    • Table 9: Country/Region
    • Table 14: Location

    Subsidiary:

    • Table 99: Item Vendor

    Master Data is among other used in journals, posting routines and historic data like ledger entries.

    Naming & Conventions

    Table & Card Page

    • Singular

    • Examples: Customer, Vendor & Item

    List Page

    • Plural if Editable = TRUE.

    • Singular + “List” if Editable = FALSE.

    Example

    The data entity has a single primary key field with the following properties:

    Field No.1
    Name“No.”
    Date TypeCode 20

    Each master data entity has a field which gives a name tag to the data entity carrying the natural name of the entity. This field is called Name if the data entity refers to a living person or an organization, such as a customer or a vendor; it is called Description instead if the data entity does not refer to a person or organization, such as an item. The field has the following properties:

    NameName or Description
    Date TypeText 50

    An added benefit of using the Name or Description field naming is that this will be part of the dropdown when looking up based on the table relation.

    The table properties of a master data table contain the following entries:

    LookupPageIDA ListType Page referring to the table which is not editable.
    DrillDownPageIDThe same page as defined in the LookupPageID
    DataCaptionFieldsThe primary key plus the field which provides the primary name tag for the record. This will typically be the Name or Description field defined earlier.

    NAV Specific Example

    We will create an Example table here with a Card and List Page as described above.

    First we create the Table with No. as the primary key.

    Than we create a non-editable Page called Example List

    Than we create an Example Card Page with the following definition

    Now we can set the properties of the 2 pages.

    First the Example Card Page Properties

    Than the Example List Page Properties

    Last but not least we set the Table Properties

    NAV Usages

    You can see this pattern used in the following tables & pages:

    Business Data:

    • Table 18: Customer, Page 21 Customer Card & Page 22 Customer List
    • Table 23: Vendor, Page 26 Vendor Card & Page 27 Vendor List
    • Table 270: Bank Account, Page 370 Bank Account Card & Page 371 Bank Account List
    • Table 5050: Contact, Page 5050 Contact Card & Page 5052 Contact List

    Product Data:

    • Table 15 G/L Account, Page 17 G/L Account Card & Page 18 G/L Account List
    • Table 27: Item, Page 30 Item Card & Page 31 Item List
    • Table 156: Resource, Page 76 Resource Card & Page 77 Resource List
    • Table 5600: Fixed Asset, Page 5600 Fixed Asset Card & Page 5601 Fixed Asset List
    • Table 5718: Nonstock Item, Page 5725 Nonstock Item Card & Page 5726 Nonstock Item List
    • Table 5913: Loaner, Page 5922 Loaner Card & Page 5923 Loaner List

    Consequences

    This pattern should not be used when this is not Master Data.

    References

    Patterns that are typically used in connection with the Master Data Pattern could be the “No. Series”, “Address Integration” and/or the “Entity State” design patterns., Master Data are central to almost everything we do, so most patterns connect in one way or another to the Master Data Pattern.

    Last modified February 24, 2022: Added tags & categories + cleanup (5ee04366) -by waldo1001
    +by waldo1001 diff --git a/docs/navpatterns/patterns/multi-file-download/index.html b/docs/navpatterns/patterns/multi-file-download/index.html index b05dceb4..ac9fcf81 100644 --- a/docs/navpatterns/patterns/multi-file-download/index.html +++ b/docs/navpatterns/patterns/multi-file-download/index.html @@ -1,4 +1,4 @@ -Multi-file Download | alguidelines.dev - Business Central Design PatternsMulti-file Download | alguidelines.dev - Business Central Design PatternsLast modified February 24, 2022: Added tags & categories + cleanup (5ee04366) -by waldo1001 +by waldo1001 diff --git a/docs/navpatterns/patterns/multi-page-list/index.html b/docs/navpatterns/patterns/multi-page-list/index.html index 28e94e93..3fa80858 100644 --- a/docs/navpatterns/patterns/multi-page-list/index.html +++ b/docs/navpatterns/patterns/multi-page-list/index.html @@ -1,4 +1,4 @@ -Multi-Page List | alguidelines.dev - Business Central Design PatternsMulti-Page List | alguidelines.dev - Business Central Design PatternsLast modified February 24, 2022: Added tags & categories + cleanup (5ee04366) -by waldo1001 +by waldo1001 diff --git a/docs/navpatterns/patterns/multilanguage-application-data/index.html b/docs/navpatterns/patterns/multilanguage-application-data/index.html index fa1c5a46..ad7387af 100644 --- a/docs/navpatterns/patterns/multilanguage-application-data/index.html +++ b/docs/navpatterns/patterns/multilanguage-application-data/index.html @@ -1,4 +1,4 @@ -Multilanguage Application Data | alguidelines.dev - Business Central Design PatternsMultilanguage Application Data | alguidelines.dev - Business Central Design Patterns Create Issue Discussions Create project issue
    Tag Cloud
    Categories

    Multilanguage Application Data

    Originally by Bogdana Botez at Microsoft Development Center Copenhagen

    Abstract

    Generally, NAV translation refers to the translation of UI elements like captions and user texts (messages on dialogs, warnings, error messages). This translation is done by the Microsoft Dynamics NAV team before releasing the localized version of the product.

    But there is one more scenario. In this scenario, Cronus International Ltd., wants to sell a “Fiets” to a Dutch customer, a"Cykel" to a Danish one, and a “Bicicletta” to an Italian customer. All 3 are the same inventory item - and its default name is “Bicycle”. But for reporting, Cronus International Ltd. wants to use the customer language preferences for translating the bicycle’s name.

    Sometimes there’s a need to support multiple languages for domestic transactions, too. For example, Switzerland has 4 official languages: German, French, Italian and Romansh, the first 3 of them being supported by NAV.

    Description

    The example below uses the Item Translation feature of NAV, however, implementations of the same pattern exist for other application areas.

    How to use the pattern

    Enter translations for “Bicycle”

    In the Windows client, on the bicycle Item card, on the Home ribbon tab, choose Translations.

    On the opened page, enter the Danish (language code DAN), the Italian (ITA), and the Dutch (NLD) translations for “Bicycle”.

    Set the desired language for the Dutch, Danish, and Italian customers

    On the customer card for your 3 customers, in the Foreign Trade FastTab, choose the preferred language for each customer. If no language is specified, then the default item description will be used for items sold or anyhow associated to that customer. If for example, the DAN (Danish) language is specified for the customer, and the “Bicycle” has a translation in Danish, then this translation “Cykel” will be used instead of the default name “Bicycle”.

    See the result

    After those changes, when the customer (in this case the Danish “Lauritzen Kontormøbler A/S”) transactions a bicycle, the translated description “Cykel” will be displayed on the documents and reports. For example, creating a sales order for this customer with 1 item No. 1000, shows:

    Usage

    Create the translation table

    Named “<Entity> Translation” table, where <Entity> is replaced with the name of the actual object being translated. For the Item example above, this table will be named “Item Translation”.

    The table definition contains at a minimum:

    FieldDescription
    Entity ID fieldFor example, Item No.
    Language CodeIdentifies the language of this translation string (for example, “DAN” (Danish), “BGR”(Bulgarian). This is one of the language codes defined in the Languages table.
    TranslationThe translated string.

    The table above has a key composed of the first two fields.

    Create the user interface for entering new translations of <Entity>

    • Create a Translations page to present the table created above
    • On the Entity card - add a Translations menu option which will open the Translations page

    Some of the NAV implementations of this pattern are:

    1. Item Translation
    2. Payment Term Translation
    3. Shipment Method Translation
    4. Unit of Measure Translation

    The Extended Text pattern is a more powerful version of the Multilanguage application data pattern presented in this section. The main differences are:

    PatternMultilanguage Application DataExtended Text
    Supports translation of application dataYesYes
    FormatSingle- or multi-lineSingle-line
    Applies to document typeCan choose which document types are affected.All document types are affected.
    Last modified February 24, 2022: Added tags & categories + cleanup (5ee04366) -by waldo1001
    +by waldo1001 diff --git a/docs/navpatterns/patterns/net-exception-handling-in-cal/index.html b/docs/navpatterns/patterns/net-exception-handling-in-cal/index.html index 3022e7f1..64ca3cee 100644 --- a/docs/navpatterns/patterns/net-exception-handling-in-cal/index.html +++ b/docs/navpatterns/patterns/net-exception-handling-in-cal/index.html @@ -1,4 +1,4 @@ -NET Exception Handling in CAL | alguidelines.dev - Business Central Design PatternsNET Exception Handling in CAL | alguidelines.dev - Business Central Design Patterns

    Tag: C/AL

    All Tags
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/decoupling/index.html b/tags/decoupling/index.html index 39664f37..80c56823 100644 --- a/tags/decoupling/index.html +++ b/tags/decoupling/index.html @@ -1,7 +1,7 @@ -Decoupling | alguidelines.dev - Business Central Design Patterns +Decoupling | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/extendability/index.html b/tags/extendability/index.html index 0af9ad8e..ed35020a 100644 --- a/tags/extendability/index.html +++ b/tags/extendability/index.html @@ -1,7 +1,7 @@ -Extendability | alguidelines.dev - Business Central Design Patterns +Extendability | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/index.html b/tags/index.html index 5a3cd83f..446d5628 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,7 +1,7 @@ -Tags | alguidelines.dev - Business Central Design Patterns +Tags | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/interface/index.html b/tags/interface/index.html index 638b3056..618e8253 100644 --- a/tags/interface/index.html +++ b/tags/interface/index.html @@ -1,7 +1,7 @@ -Interface | alguidelines.dev - Business Central Design Patterns +Interface | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/performance/index.html b/tags/performance/index.html index b2faac90..8f40fde8 100644 --- a/tags/performance/index.html +++ b/tags/performance/index.html @@ -1,7 +1,7 @@ -Performance | alguidelines.dev - Business Central Design Patterns +Performance | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/performance/index.xml b/tags/performance/index.xml index 6603a5ff..45a6db03 100644 --- a/tags/performance/index.xml +++ b/tags/performance/index.xml @@ -23,7 +23,7 @@ Therefore it&rsquo;s good practice to always check if the table is empty whe <p>Let&rsquo;s discuss all points</p> <h2 id="keep-the-codeunit-as-small-as-possible">Keep the codeunit as small as possible</h2> <p>Every time a subscriber gets called, a new instance of the codeunit is being loaded in memory, which takes memory and processing power. The smaller the codeunit, the less memory, and the faster it is.</p> -<p>Therefore, it&rsquo;s suggested to split the subscribers by functionality and avoid putting business logic in the actual codeunit. Tip: put all business logic in an &ldquo;<a href="https://alguidelines.dev/bcpatterns/generic-method-pattern/">Method Codeunit</a>&rdquo;.</p> +<p>Therefore, it&rsquo;s suggested to split the subscribers by functionality and avoid putting business logic in the actual codeunit. Tip: put all business logic in an &ldquo;<a href="https://alguidelines.dev/docs/patterns/generic-method-pattern/">Method Codeunit</a>&rdquo;.</p> <p>Examples:</p> <ul> <li>if you app does things on Sales and Purchase, create a Sales-subs codeunit, and a Purchase-subs.</li> diff --git a/tags/productivity/index.html b/tags/productivity/index.html index 67c1c1d9..4e17b092 100644 --- a/tags/productivity/index.html +++ b/tags/productivity/index.html @@ -1,7 +1,7 @@ -Productivity | alguidelines.dev - Business Central Design Patterns +Productivity | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/readability/index.html b/tags/readability/index.html index a9d827e8..23484ed9 100644 --- a/tags/readability/index.html +++ b/tags/readability/index.html @@ -1,7 +1,7 @@ -Readability | alguidelines.dev - Business Central Design Patterns +Readability | alguidelines.dev - Business Central Design Patterns

    Tag: Readability

    All Tags
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev

    Tag: Readability

    All Tags
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/telemetry/index.html b/tags/telemetry/index.html index 342f818e..f71d06b9 100644 --- a/tags/telemetry/index.html +++ b/tags/telemetry/index.html @@ -1,7 +1,7 @@ -Telemetry | alguidelines.dev - Business Central Design Patterns +Telemetry | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved
    diff --git a/tags/testability/index.html b/tags/testability/index.html index 3a117ad9..3869a48b 100644 --- a/tags/testability/index.html +++ b/tags/testability/index.html @@ -1,7 +1,7 @@ -Testability | alguidelines.dev - Business Central Design Patterns +Testability | alguidelines.dev - Business Central Design Patterns
    © 2022 alguidelines.dev Project All Rights Reserved
    +alguidelines.dev
    © 2023 alguidelines.dev Project All Rights Reserved