From e9d640d50ae48bd46f348828bd4b00ef9680a072 Mon Sep 17 00:00:00 2001 From: JeremyVyska Date: Sun, 5 Dec 2021 21:23:42 +0000 Subject: [PATCH] deploy: 8f41c13f0f968f3f9596d6ad82373e7c244d279b --- 404.html | 16 +- bcbestpractices/index.html | 71 ++-- bcpatterns/facade-pattern/index.html | 71 ++-- bcpatterns/generic-method-pattern/index.html | 71 ++-- bcpatterns/index.html | 71 ++-- categories/index.html | 71 ++-- contributing/forkandpr/index.html | 71 ++-- contributing/formattingtips/index.html | 71 ++-- contributing/index.html | 71 ++-- contributing/templates/guidelines/index.html | 71 ++-- contributing/templates/index.html | 71 ++-- contributing/templates/patterns/index.html | 71 ++-- contributing/theapprovalprocess/index.html | 71 ++-- index.html | 71 ++-- index.json | 2 +- .../1-patterns/activity-log/index.html | 71 ++-- .../1-patterns/argument-table/index.html | 74 ++-- .../data-driven-blocked-entity/index.html | 71 ++-- .../1-patterns/blocked-entity/index.html | 75 ++-- .../cached-web-service-calls/index.html | 71 ++-- .../conditional-cascading-update/index.html | 73 ++-- .../1-patterns/copy-document/index.html | 75 ++-- .../create-data-from-templates/index.html | 75 ++-- .../create-urls-to-nav-clients/index.html | 71 ++-- .../creating-custom-charts/index.html | 77 ++-- .../cross-session-events/index.html | 75 ++-- .../currently-active-record/index.html | 85 ++-- .../data-migration-facade/index.html | 90 +++-- .../1-patterns/discovery-event/index.html | 77 ++-- navpatterns/1-patterns/document/index.html | 82 ++-- .../index.html | 120 +++--- .../error-message-processing/index.html | 158 ++++---- .../index.html | 82 ++-- .../index.html | 298 +++++++++----- navpatterns/1-patterns/hooks/index.html | 90 +++-- .../index.html | 77 ++-- navpatterns/1-patterns/index.html | 71 ++-- navpatterns/1-patterns/index.xml | 49 ++- .../instructions-in-the-ui/index.html | 91 +++-- .../integration-of-addresses/index.html | 75 ++-- .../journal-error-processing/index.html | 138 ++++--- .../journal-template-batch-line/index.html | 102 +++-- navpatterns/1-patterns/master-data/index.html | 73 ++-- .../1-patterns/multi-file-download/index.html | 78 ++-- .../1-patterns/multi-page-list/index.html | 120 +++--- .../multilanguage-application-data/index.html | 73 ++-- .../net-exception-handling-in-cal/index.html | 71 ++-- .../index.html | 71 ++-- navpatterns/1-patterns/no-series/index.html | 77 ++-- .../in-context-notifications/index.html | 73 ++-- .../1-patterns/notifications/index.html | 71 ++-- .../1-patterns/notifications/index.xml | 6 +- .../index.html | 84 ++-- navpatterns/1-patterns/observer/index.html | 76 ++-- .../index.html | 77 ++-- .../1-patterns/product-name/index.html | 73 ++-- navpatterns/1-patterns/queries/index.html | 71 ++-- navpatterns/1-patterns/queries/index.xml | 6 +- .../select-distinct-with-queries/index.html | 79 ++-- .../index.html | 86 ++-- .../index.html | 84 ++-- .../index.html | 79 ++-- .../1-patterns/released-entity/index.html | 78 ++-- .../1-patterns/report-selection/index.html | 73 ++-- .../1-sensitive-data-encapsulation/index.html | 346 ++++++++++++++++ .../security/2-data-encryption/index.html | 371 ++++++++++++++++++ .../3-single-point-of-access/index.html | 323 +++++++++++++++ .../security/4-masked-text/index.html | 312 +++++++++++++++ .../security/5-ssl-in-nav/index.html | 309 +++++++++++++++ navpatterns/1-patterns/security/index.html | 83 ++-- navpatterns/1-patterns/security/index.xml | 36 ++ .../setup-specificity-fallback/index.html | 78 ++-- .../index.html | 71 ++-- navpatterns/1-patterns/singleton/index.html | 89 +++-- navpatterns/1-patterns/singleton/index.xml | 5 +- .../singleton/singleton-codeunit/index.html | 84 ++-- .../singleton-table/cue-table/index.html | 91 +++-- .../singleton/singleton-table/index.html | 83 ++-- .../singleton/singleton-table/index.xml | 7 +- .../singleton-table/setup-table/index.html | 83 ++-- .../1-patterns/standard-journal/index.html | 75 ++-- .../temporary-dataset-report/index.html | 99 +++-- .../index.html | 77 ++-- .../transfer-custom-fields/index.html | 75 ++-- .../1-patterns/variant-facade/index.html | 78 ++-- navpatterns/2-anti-patterns/index.html | 71 ++-- navpatterns/2-anti-patterns/index.xml | 3 +- .../2-anti-patterns/nav-upgrade/index.html | 87 ++-- .../2-anti-patterns/reusable-bugs/index.html | 71 ++-- .../design/by-reference-parameters/index.html | 276 +++++++++++++ .../design/class-coupling/index.html | 268 +++++++++++++ .../design/cyclomatic-complexity/index.html | 268 +++++++++++++ .../index.html | 259 ++++++++++++ .../findset-findfirst-findlast/index.html | 279 +++++++++++++ .../3-cal-coding-guidelines/design/index.html | 83 ++-- .../3-cal-coding-guidelines/design/index.xml | 50 +++ .../design/initialized-variables/index.html | 299 ++++++++++++++ .../design/maintainability-index/index.html | 281 +++++++++++++ .../design/parameter-placeholders/index.html | 291 ++++++++++++++ .../static-object-invocation/index.html | 273 +++++++++++++ .../design/unreachable-code/index.html | 274 +++++++++++++ .../unused-initialized-variables/index.html | 290 ++++++++++++++ .../design/unused-variables/index.html | 293 ++++++++++++++ .../variable-capacity-mismatch/index.html | 306 +++++++++++++++ .../with-scope-name-collision/index.html | 280 +++++++++++++ .../3-cal-coding-guidelines/index.html | 75 ++-- navpatterns/3-cal-coding-guidelines/index.xml | 11 +- .../internally-used-dot-net-types/index.html | 86 ++-- .../internationalization/index.html | 80 ++-- .../using-calcdate/index.html | 71 ++-- .../captionml-for-system-tables/index.html | 71 ++-- .../fieldcaption-and-tablecaption/index.html | 71 ++-- .../global-text-constants/index.html | 71 ++-- .../localizability/index.html | 71 ++-- .../use-text-constants/index.html | 71 ++-- .../using-optioncaptionml/index.html | 71 ++-- .../begin-as-an-afterword/index.html | 71 ++-- .../readability/begin-end/index.html | 71 ++-- .../binary-operator-line-start/index.html | 73 ++-- .../readability/blank-lines/index.html | 77 ++-- .../readability/case-actions/index.html | 73 ++-- .../colon-usage-in-case/index.html | 71 ++-- .../comments-curly-brackets/index.html | 71 ++-- .../readability/comments-spacing/index.html | 71 ++-- .../readability/end-else-pair/index.html | 71 ++-- .../readability/indentation/index.html | 71 ++-- .../readability/index.html | 71 ++-- .../readability/index.xml | 2 +- .../keyword-pairs-indentation/index.html | 71 ++-- .../line-start-keywords/index.html | 71 ++-- .../readability/lonely-repeat/index.html | 71 ++-- .../readability/named-invocations/index.html | 71 ++-- .../readability/nested-withs/index.html | 71 ++-- .../one-statement-per-line/index.html | 71 ++-- .../separate-if-and-else/index.html | 71 ++-- .../spacing-binary-operators/index.html | 71 ++-- .../spacing-brackets-and/index.html | 71 ++-- .../spacing-unary-operators/index.html | 71 ++-- .../suggested-abbreviations/index.html | 71 ++-- .../temporary-variable-naming/index.html | 71 ++-- .../readability/textconst-suffixes/index.html | 71 ++-- .../unary-operator-line-end/index.html | 71 ++-- .../index.html | 71 ++-- .../readability/unnecessary-else/index.html | 71 ++-- .../index.html | 71 ++-- .../unnecessary-separators/index.html | 71 ++-- .../unnecessary-truefalse/index.html | 71 ++-- .../variable-already-scoped/index.html | 71 ++-- .../readability/variable-naming/index.html | 71 ++-- .../variables-declarations-order/index.html | 71 ++-- .../ux/actions-images/index.html | 71 ++-- .../ux/confirm/index.html | 71 ++-- .../ux/fielderror/index.html | 71 ++-- .../3-cal-coding-guidelines/ux/index.html | 71 ++-- .../ux/message-and-error/index.html | 71 ++-- .../4-get-involved/code-of-conduct/index.html | 71 ++-- navpatterns/4-get-involved/index.html | 71 ++-- .../patterns-authors/index.html | 71 ++-- .../index.html | 71 ++-- navpatterns/index.html | 71 ++-- navpatterns/related-links/index.html | 71 ++-- sitemap.xml | 2 +- tags/index.html | 71 ++-- welcome/index.html | 71 ++-- 164 files changed, 12201 insertions(+), 3918 deletions(-) create mode 100644 navpatterns/1-patterns/security/1-sensitive-data-encapsulation/index.html create mode 100644 navpatterns/1-patterns/security/2-data-encryption/index.html create mode 100644 navpatterns/1-patterns/security/3-single-point-of-access/index.html create mode 100644 navpatterns/1-patterns/security/4-masked-text/index.html create mode 100644 navpatterns/1-patterns/security/5-ssl-in-nav/index.html create mode 100644 navpatterns/1-patterns/security/index.xml create mode 100644 navpatterns/3-cal-coding-guidelines/design/by-reference-parameters/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/class-coupling/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/cyclomatic-complexity/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/encapsulate-local-functionality/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/findset-findfirst-findlast/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/index.xml create mode 100644 navpatterns/3-cal-coding-guidelines/design/initialized-variables/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/maintainability-index/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/parameter-placeholders/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/static-object-invocation/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/unreachable-code/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/unused-initialized-variables/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/unused-variables/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/variable-capacity-mismatch/index.html create mode 100644 navpatterns/3-cal-coding-guidelines/design/with-scope-name-collision/index.html diff --git a/404.html b/404.html index ed2e28a5..43b2871d 100644 --- a/404.html +++ b/404.html @@ -5,14 +5,14 @@ 404 Page not found :: AL Guidelines - - - - - - - - + + + + + + + + diff --git a/bcbestpractices/index.html b/bcbestpractices/index.html index 8020765b..5cf28614 100644 --- a/bcbestpractices/index.html +++ b/bcbestpractices/index.html @@ -6,16 +6,16 @@ BC Dev. Best Practices :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -33,9 +33,9 @@ ALGuidelines.Dev - - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - + + +
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.html b/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.html index 29b3ae39..dc9b1976 100644 --- a/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.html +++ b/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.html @@ -5,16 +5,16 @@ Data Driven Blocked Entity :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
- - - + + +
- - - + + +
- - - + + +

Conditional Cascading Update

-

_Originally by Jan Hoek at IDYN _

+

Originally by Jan Hoek at IDYN

Abstract

The Conditional Cascading Update pattern is used to intelligently populate fields whose values depend on other field values. In this pattern description, the field triggering the update will be called “source field”, and the depending field will be called “target field”.

Description

@@ -249,12 +268,12 @@ ALGuidelines.Dev
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/copy-document/index.html b/navpatterns/1-patterns/copy-document/index.html index bcc422ec..d8b5c93b 100644 --- a/navpatterns/1-patterns/copy-document/index.html +++ b/navpatterns/1-patterns/copy-document/index.html @@ -5,16 +5,16 @@ Copy Document :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
@@ -308,12 +329,12 @@ ALGuidelines.Dev
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/create-data-from-templates/index.html b/navpatterns/1-patterns/create-data-from-templates/index.html index 22794f8f..22451766 100644 --- a/navpatterns/1-patterns/create-data-from-templates/index.html +++ b/navpatterns/1-patterns/create-data-from-templates/index.html @@ -5,16 +5,16 @@ Create Data from Templates :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/create-urls-to-nav-clients/index.html b/navpatterns/1-patterns/create-urls-to-nav-clients/index.html index 8c787c7a..277e76c5 100644 --- a/navpatterns/1-patterns/create-urls-to-nav-clients/index.html +++ b/navpatterns/1-patterns/create-urls-to-nav-clients/index.html @@ -5,16 +5,16 @@ Create URLs to NAV Clients :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/creating-custom-charts/index.html b/navpatterns/1-patterns/creating-custom-charts/index.html index 8e1bc34f..8aee78ce 100644 --- a/navpatterns/1-patterns/creating-custom-charts/index.html +++ b/navpatterns/1-patterns/creating-custom-charts/index.html @@ -5,16 +5,16 @@ Creating Custom Charts :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +

SetDrillDownindexes is a method from the Business Chart Buffer table that maps the DotNet point variable to C/AL data, so it must be used. The next method that you must implement is the action to be performed on Drilldown.

-

The **DataPointDoubleClicked **trigger has the same implementation logic as the DataPointClicked trigger.

+

The DataPointDoubleClicked trigger has the same implementation logic as the DataPointClicked trigger.

Implementation of chart part 1390 on the Small Business Role Center page (9022)

-

This chart part contains data from multiple charts within a single part. The Status Text field shows the name of the chart and the current period. Users can browse through the charts with Next Chart andPrevious Chart or use Select Chart to choose from a list of available charts.

+

This chart part contains data from multiple charts within a single part. The Status Text field shows the name of the chart and the current period. Users can browse through the charts with Next Chart and Previous Chart or use Select Chart to choose from a list of available charts.

-

On this dialog, users can choose if a chart should be enabled or disabled. If the chart is not enabled, it will be skipped on the **Previous Chart **and Next Chart actions. Charts used by this part use different codeunits and setup records. If the user changes the selected chart, this option will be saved and applied next time role center is opened.

+

On this dialog, users can choose if a chart should be enabled or disabled. If the chart is not enabled, it will be skipped on the Previous Chart and Next Chart actions. Charts used by this part use different codeunits and setup records. If the user changes the selected chart, this option will be saved and applied next time role center is opened.

Users can also change the period length.

Choosing the Chart Information button opens a short description of the chart.

@@ -369,12 +388,12 @@ ALGuidelines.Dev
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/cross-session-events/index.html b/navpatterns/1-patterns/cross-session-events/index.html index c6ff7083..5a573ebf 100644 --- a/navpatterns/1-patterns/cross-session-events/index.html +++ b/navpatterns/1-patterns/cross-session-events/index.html @@ -5,16 +5,16 @@ Cross Session Events :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +

The Change Observer table identifies the Subscriber using Server ID and Session ID, and then in this example there is only one filter, which is the Table ID we want to listen to any changes. In this case all three fields are in the Primary Key.

The Change Notification table then has the same three fields plus an Entry No. as its Primary Key, and in this example borrows heavily from the Change Log code to fill in the rest of the message.

-

_Note: _Other examples of the pattern could have very different fields to identify the Subscriber, Filters and then whatever fields needed for content of the Message.

+

Note: Other examples of the pattern could have very different fields to identify the Subscriber, Filters and then whatever fields needed for content of the Message.

Our Message Broker Codeunit will also serve as a central place to create Subscribers (Listen and StopListening functions) and a place to Poll for Messages. Note that the Poll function deletes the Messages as it reads them.

    //Listen(TableID : Integer)**
     WITH Observer DO BEGIN
@@ -312,7 +331,7 @@ ALGuidelines.Dev
         MARKEDONLY(TRUE);
         DELETEALL;
     END;
-

**__**The final part of this example is an object that calls the functions above. In this example we will use a Page with a PingPong Timer Control to do the polling in (almost) real time. These are the functions on the page:

+

__ The final part of this example is an object that calls the functions above. In this example we will use a Page with a PingPong Timer Control to do the polling in (almost) real time. These are the functions on the page:

    //OnQueryClosePage(CloseAction : Action None) : Boolean**
     ObserverMgt.StopListening(DATABASE::"NAV Whiteboard Booking");
     
@@ -354,12 +373,12 @@ ALGuidelines.Dev
 
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/currently-active-record/index.html b/navpatterns/1-patterns/currently-active-record/index.html index f804685e..3af4cbaf 100644 --- a/navpatterns/1-patterns/currently-active-record/index.html +++ b/navpatterns/1-patterns/currently-active-record/index.html @@ -5,16 +5,16 @@ Currently Active Record :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev
- - - + + +

Currently Active Record

-

Authors: Henrik Langbak and Kim Ginnerup, Bording Data

+

Authors: Henrik Langbak and Kim Ginnerup, Bording Data

Abstract

Date controlled data is expensive to find in the database. This pattern describes how using a view with a sub-select and a linked table object will minimize the returned dataset.
A side effect is reduced and simplified code, increased performance and a more scalable solution that is almost independent of the amount of records in the table.

@@ -284,8 +303,8 @@ You will need to create a view for every company in the database.

2. Create the Table object

Remember to set the link table property before you save it.

3. Implement the code

-

IF PriceView.FINDSET THEN // You have them

-

4. Create a deployment codeunit

+
    IF PriceView.FINDSET THEN // You have them
+

4. Create a deployment codeunit

Create a SQL Deployment codeunit to manage your views.
The codeunit needs to Create or Alter the views for all companies.
To see an example of how to talk to SQL Server using .NET see waldo’s blog here:
@@ -299,8 +318,10 @@ To see an example of how to talk to SQL Server using .NET see waldo’s blog

General precaution

If you later want to change the view, you need to follow these rules:

-

* If you add columns, you need to add them to the view first and then add them to the Table Object. -* If you want to remove columns from the view, you need to delete the Table Object, then change the view and last recreate the Table Object without the new columns.

+
    +
  • If you add columns, you need to add them to the view first and then add them to the Table Object.
  • +
  • If you want to remove columns from the view, you need to delete the Table Object, then change the view and last recreate the Table Object without the new columns.
  • +

Code example that accomplish the same but without using the pattern

This following example will give you the same result but the performance will deteriorate as time goes by and you get more and more old data.

Price.SETCURRENTKEY(Code,"Starting Date"); 
@@ -345,18 +366,18 @@ The Pattern makes a scalable solution with a predictable performance. The perfor
 
- - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/data-migration-facade/index.html b/navpatterns/1-patterns/data-migration-facade/index.html index 29b030e1..70c3a8a4 100644 --- a/navpatterns/1-patterns/data-migration-facade/index.html +++ b/navpatterns/1-patterns/data-migration-facade/index.html @@ -4,17 +4,17 @@ -Data Migration Facade :: AL Guidelines - - - - - - - - - - +Data Migration Façade :: AL Guidelines + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
@@ -231,8 +250,7 @@ ALGuidelines.Dev
-

Data Migration Facade

-

Data Migration Façade

+

Data Migration Façade

By David Bastide and Soumya Dutta at Microsoft Development Center Copenhagen

Context:

@@ -350,7 +368,7 @@ This starts the migration. False means this is not a retry. A re-try is when you // set the unit of measure on the item ItemDataMigrationFacade.SetBaseUnitOfMeasure(ItemJson.UnitCode); end; -

_Figure 2: Example of Item and Item Unit of Measure migration without staging tables _

+

Figure 2: Example of Item and Item Unit of Measure migration without staging tables

Usage with staging tables:

The overall workflow is:

-
  • -
  • +
  • +

    “Item Data Migration Façade”.SetBaseUnitOfMeasure(‘BOX’)

    +
  • +
  • +

    “Item Data Migration Façade”.ModifyItem(true)

    +
  • Figure 3: Simplified sequence diagram of the data migration with staging tables

    @@ -489,7 +511,7 @@ This starts the migration. False means this is not a retry. A re-try is when you

    References:

    -

    Façade pattern on Wikipedia: https://en.wikipedia.org/wiki/Facade_pattern

    +

    Façade pattern on Wikipedia: https://en.wikipedia.org/wiki/Facade_pattern

    @@ -502,12 +524,12 @@ This starts the migration. False means this is not a retry. A re-try is when you
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/discovery-event/index.html b/navpatterns/1-patterns/discovery-event/index.html index 217878d2..b9050190 100644 --- a/navpatterns/1-patterns/discovery-event/index.html +++ b/navpatterns/1-patterns/discovery-event/index.html @@ -5,16 +5,16 @@ Discovery Event :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +

    Discovery Event

    -

    by waldo

    +

    by waldo

    Abstract

    The “Discovery Event” pattern is a way for a generic functionality, to call out to other functionalities that want to make use of it, by raising an event, so that they have an event to subscribe to. This is usually done to set itself up within the generic app.

    The problem

    @@ -249,7 +268,7 @@ Let’s break down to the steps that are needed to implement the pattern.

    When you publish an event, it should obviously be raised somewhere in the code as well. In the below example, I want to raise the event simply by a method which I want to call from a page. So I create a global function where I raise the event:

    Step 3: Create one or more global functions, so that your subscriber can call into your functionality to configure, set up, or do whatever it needs to do to make itself discoverable

    -

    The generic functionality that I want to call, should be part of the main class - in this case theModule Discovery class, or better, the table (Module Status). In this table, I create this global function, because I want to make it available for the subscribers:

    +

    The generic functionality that I want to call, should be part of the main class - in this case the Module Discovery class, or better, the table (Module Status). In this table, I create this global function, because I want to make it available for the subscribers:


    The business logic doesn’t really matter for this pattern. This is obviously dependent on the functionality where you would like to implement the pattern.

    Step 4: subscribe from the places in the app to this event, use the global function(s)

    @@ -265,19 +284,19 @@ You see I can use the “sender” as a normal Record-variable. I access
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/document/index.html b/navpatterns/1-patterns/document/index.html index 0a33f9ca..7d7beea9 100644 --- a/navpatterns/1-patterns/document/index.html +++ b/navpatterns/1-patterns/document/index.html @@ -5,16 +5,16 @@ Document :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    @@ -240,8 +259,7 @@ _

    < –[if gte mso 9]>< [endif]–>< –[if gte mso 9]>< [endif]–>< –[if gte mso 9]>< [endif]–>< –[if gte mso 10]> < [endif]–>

    -

    _Figure 1: Qualifier, Payload and emphasized text.
    -_

    +

    Figure 1: Qualifier, Payload and emphasized text.

    Usage

    A page part has been added to each major Role Center:

    -

    **
    -**

    +

    The implementation of Cues is already described in detail on MSDN, in Creating and Customizing Cues and in Walkthrough: Creating a Cue Based on a FlowField.

    NAV Usages

    -

    Table 1 - Cue tables in Dynamics NAV****shows some examples of singleton tables used for creating Cues.

    +

    Table 1 - Cue tables in Dynamics NAV shows some examples of singleton tables used for creating Cues.

    Table ID

    Table Name

    1313

    @@ -307,12 +316,12 @@ _

    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/singleton/singleton-table/index.html b/navpatterns/1-patterns/singleton/singleton-table/index.html index 8db575e5..540491ab 100644 --- a/navpatterns/1-patterns/singleton/singleton-table/index.html +++ b/navpatterns/1-patterns/singleton/singleton-table/index.html @@ -6,16 +6,16 @@ Singleton Table :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -33,9 +33,9 @@ ALGuidelines.Dev - - - + + +
    - - - + + +
    - +
    @@ -222,9 +236,8 @@ ALGuidelines.Dev

    Setup Table

    -

    Setup Table

    By Abhishek Ghosh, at Microsoft Development Center Copenhagen

    -

    +

    This is the first and most well-known of the two usual applications of the Singleton Table pattern in Dynamics NAV.

    Problem: the developer needs to store information about the operating setup or environment in the database, in a way that can be persisted across sessions.

    Solution: The information is stored in a table with one record only. The user is subsequently able to modify, but not add or delete records in the table.

    @@ -261,7 +274,7 @@ END;
  • Table 313 Inventory Setup
  • Table 242 Source Code Setup
  • -

    **Variation: **While most tables just insert a record with empty primary key in codeunit 2, table 242 (“Source Code Setup”) offers an example of inserting default values into all fields of the table (method “InitSourceCodeSetup”). This practice, wherever feasible, is likely to reduce the effort during implementation.

    +

    Variation: While most tables just insert a record with empty primary key in codeunit 2, table 242 (“Source Code Setup”) offers an example of inserting default values into all fields of the table (method “InitSourceCodeSetup”). This practice, wherever feasible, is likely to reduce the effort during implementation.

    Related resources: Considerations on optimizing the Singleton Table, by Søren Klemmensen.

    @@ -275,12 +288,12 @@ END;
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/standard-journal/index.html b/navpatterns/1-patterns/standard-journal/index.html index 2c582358..cc5022de 100644 --- a/navpatterns/1-patterns/standard-journal/index.html +++ b/navpatterns/1-patterns/standard-journal/index.html @@ -5,16 +5,16 @@ Standard Journal :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    @@ -273,12 +294,12 @@ ALGuidelines.Dev
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/temporary-dataset-report/index.html b/navpatterns/1-patterns/temporary-dataset-report/index.html index 80edcd84..faf34802 100644 --- a/navpatterns/1-patterns/temporary-dataset-report/index.html +++ b/navpatterns/1-patterns/temporary-dataset-report/index.html @@ -5,16 +5,16 @@ Temporary Dataset Report :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    @@ -216,13 +242,13 @@ ALGuidelines.Dev

    Temporary Dataset Report

    Originally by Abhishek Ghosh, at Microsoft Development Center Copenhagen

    -

    Abstract

    +

    Abstract

    This pattern generates the data to be displayed dynamically by combing/processing several data sources. It then displays the resulting dataset without writing to the database.

    -

    Description

    +

    Description

    While writing reports in NAV, we have the luxury of using a built-in iterator. So, once we define the dataitem and the ordering, the runtime takes care of the iteration.

    The iterator has one shortcoming: It can only run through records written into the database. There are situations, however, where we want to display temporary datasets created at runtime by processing data from different sources. That is where the Temporary Dataset Report pattern can be used.

    -

    Usage

    +

    Usage

    This pattern takes a two-step approach to displaying the data:

    With the first approach, in the Integer-OnAfterGetRecord trigger, you must make the temporary record variable move to the next record, follow that up with a check if you have reached the end of the recordset, and then use CurrReport.BREAK if you have reached the end.

    With the second approach, you must limit the number of times the report iterates through the Integer dataitem. The Number field in the Integer table will have a value of 1 in the first iteration and will increment automatically by 1 on every subsequent iteration. To ensure that the report iterates through the Integer dataitem “n” times, you must, therefore, filter the Integer dataitem on Number = 1..n. You must also move the temporary record variable to the next record in every iteration of the Integer-OnAfterGetRecord trigger. NOTE: This technique cannot be used if you use queries as the temporary data source, since queries do not (in NAV 2013) return the number of records.

    -

    Example

    +

    Example

    Goal: To print a report that lists all contacts that have open documents (both sales and purchase) and displays those documents in chronological order

    A contact can be connected to a vendor or a customer using the Create As Customer/Vendor function on the Contact Card. When a sales/purchase document is created for this customer/vendor, the Contact No. is stored in the Sell-to Contact No. or Buy-from Contact No. fields of the sales and purchase documents. The obvious choice would be to display the data directly from the Sales Header and Purchase Header records. However, the requirement is to display all of them together chronologically, which means they will need to be stored in, and be read from, one common dataset.

    Step 1: Design a new table that will hold the temporary dataset.

    @@ -318,14 +344,9 @@ ALGuidelines.Dev

    Report 206 – Sales – Invoice

    -

    watch?v=QHn5oEOJv0Q&list=PLhZ3P LY7CqmVszuvtJLujFyHpsVN0Uw&index=10

    - +
    + +
    @@ -338,12 +359,12 @@ ALGuidelines.Dev
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/index.html b/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/index.html index 19ce6f3a..2cfe0df6 100644 --- a/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/index.html +++ b/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/index.html @@ -5,16 +5,16 @@ Totals and Discounts on Subpages Sales and Purchases :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    - - - + + +

    Transfer Custom Fields

    -

    watch?v=cGaBqwfGCws&list=PLhZ3P LY7CqmVszuvtJLujFyHpsVN0Uw&index=9

    +
    + +
    @@ -228,12 +249,12 @@ ALGuidelines.Dev
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/1-patterns/variant-facade/index.html b/navpatterns/1-patterns/variant-facade/index.html index cd56f931..ff2d9b73 100644 --- a/navpatterns/1-patterns/variant-facade/index.html +++ b/navpatterns/1-patterns/variant-facade/index.html @@ -5,16 +5,16 @@ Variant Facade :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +

    Variant Facade

    -

    Variant Façade

    -

    By Nikola Kukrika, waldo and Gary Winter

    +

    By Nikola Kukrika, waldo and Gary Winter

    Abstract

    The Variant façade provides a single interface that can take any Record, RecordRef or RecordID as an argument. With this pattern the code is encapsulated within the single object, with clear separation between common and table specific code.

    @@ -245,8 +263,8 @@ ALGuidelines.Dev

    Maintaining and Extending the code is hard, since every fix or a new behavior that needs to be implemented multiple times (in this case probably 12 times).

    Upgradability is low – each conflict needs to be resolved many times. The hook pattern is hard to implement since it needs to be implemented for every function. Evening suffers the same problem - cannot use the evening easily since it needs to be raised from multiple places in the code.

    Testing the code is hard since the tests need to be replicated.

    -

    **Constant cost of adding support for new tables **– when the new record type needs to be supported, it has a constant cost. Adding a support for a new record will increase the Maintenance tax and it will make the code harder to understand and extend. ****

    -

    **Conclusion **- If the functionality needs to be used for many records the approach of duplicating the functions should be avoided.

    +

    Constant cost of adding support for new tables – when the new record type needs to be supported, it has a constant cost. Adding a support for a new record will increase the Maintenance tax and it will make the code harder to understand and extend.

    +

    Conclusion - If the functionality needs to be used for many records the approach of duplicating the functions should be avoided.

    Solution

    The Variant façade pattern provides a single interface that would not need to be changed in the future. It will be able to take any record as a parameter. Common code should be kept separately from record specific code and both must be very visible so the developers can easily see what the differences are.

    The Key components of the pattern are:

    @@ -397,12 +415,12 @@ ALGuidelines.Dev
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/2-anti-patterns/index.html b/navpatterns/2-anti-patterns/index.html index 37990020..d5636dd4 100644 --- a/navpatterns/2-anti-patterns/index.html +++ b/navpatterns/2-anti-patterns/index.html @@ -6,16 +6,16 @@ 2. Anti-Patterns :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -33,9 +33,9 @@ ALGuidelines.Dev - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    @@ -230,12 +251,12 @@ ALGuidelines.Dev
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/3-cal-coding-guidelines/index.xml b/navpatterns/3-cal-coding-guidelines/index.xml index 4462082b..f097af19 100644 --- a/navpatterns/3-cal-coding-guidelines/index.xml +++ b/navpatterns/3-cal-coding-guidelines/index.xml @@ -1,5 +1,5 @@ -3. CAL Coding Guidelines on AL Guidelineshttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/Recent content in 3. CAL Coding Guidelines on AL GuidelinesHugo -- gohugo.ioen-usInternationalizationhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/C/AL Coding Guidelines Internationalization Find the C/AL guidelines by expanding the menu in the left.Localizabilityhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/C/AL Coding Guidelines Localizability Find the C/AL guidelines by expanding the menu in the left.Readabilityhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/C/AL Coding Guidelines Readability Generally, all readability rules are Microsoft style choices only. You can use them to keep consistency with the existing code. -Find the C/AL guidelines by expanding the menu in the left.UXhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/C/AL Coding Guidelines User eXperience Find the C/AL guidelines by expanding the menu in the left.Designhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/C/AL Coding Guidelines Design Find the C/AL guidelines by expanding the menu in the left.Internally-used DotNet Typeshttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/Internally used Dot Net Types (Dynamics NAV 2015) +3. CAL Coding Guidelines on AL Guidelineshttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/Recent content in 3. CAL Coding Guidelines on AL GuidelinesHugo -- gohugo.ioen-usDesignhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/C/AL Coding Guidelines Design Find the C/AL guidelines by expanding the menu in the left.Internationalizationhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/C/AL Coding Guidelines Internationalization Find the C/AL guidelines by expanding the menu in the left.Localizabilityhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/C/AL Coding Guidelines Localizability Find the C/AL guidelines by expanding the menu in the left.Readabilityhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/C/AL Coding Guidelines Readability Generally, all readability rules are Microsoft style choices only. You can use them to keep consistency with the existing code. +Find the C/AL guidelines by expanding the menu in the left.UXhttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/C/AL Coding Guidelines User eXperience Find the C/AL guidelines by expanding the menu in the left.Internally used DotNet Typeshttps://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/Mon, 01 Jan 0001 00:00:00 +0000https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/(Dynamics NAV 2015) Dot Net Types &lsquo;mscorlib&rsquo;.System.Convert &lsquo;mscorlib&rsquo;.System.Globalization.CultureInfo @@ -59,4 +59,9 @@ Dot Net Types &lsquo;Microsoft.Dynamics.Nav.EwsWrapper.ALTestHelper&rsquo;.* &lsquo;Microsoft.Dynamics.NAV.OLSync.OLSyncSupplier&rsquo;.* &lsquo;Microsoft.Dynamics.Nav.OLSync.Common&rsquo;.* -&lsquo;Microsoft.Dynamics.Nav.NavUserAccount&rsquo;.* \ No newline at end of file +&lsquo;Microsoft.Dynamics.Nav.NavUserAccount&rsquo;.* +&lsquo;Microsoft.Dynamics.Nav.OpenXml&rsquo;.* +&lsquo;Microsoft.Dynamics.Nav.RapidStart&rsquo;.* +&lsquo;Microsoft.Dynamics.Framework.RapidStart.Common&rsquo;.* +&lsquo;Microsoft.Dynamics.Nav.Client.TimelineVisualization&rsquo;.Microsoft.Dynamics.Nav.Client.TimelineVisualization. +VisualizationScenarios \ No newline at end of file diff --git a/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/index.html b/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/index.html index 14a3a67b..83ffbbd2 100644 --- a/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/index.html +++ b/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/index.html @@ -4,17 +4,17 @@ -Internally-used DotNet Types :: AL Guidelines - - - - - - - - - - +Internally used DotNet Types :: AL Guidelines + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    -

    Internally-used DotNet Types

    -

    Internally used Dot Net Types

    +

    Internally used DotNet Types

    (Dynamics NAV 2015)

    Dot Net Types

    ‘mscorlib’.System.Convert

    @@ -326,19 +340,19 @@ ALGuidelines.Dev
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/3-cal-coding-guidelines/internationalization/index.html b/navpatterns/3-cal-coding-guidelines/internationalization/index.html index af2d52bc..e1c3a2c8 100644 --- a/navpatterns/3-cal-coding-guidelines/internationalization/index.html +++ b/navpatterns/3-cal-coding-guidelines/internationalization/index.html @@ -6,16 +6,16 @@ Internationalization :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -33,9 +33,9 @@ ALGuidelines.Dev - - - + + +
    @@ -227,26 +242,25 @@ ALGuidelines.Dev

    Internationalization

    C/AL Coding Guidelines

    Internationalization

    -

    Find the C/AL guidelines by expanding the menu in the left.

    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/index.html b/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/index.html index eb52edc2..4893588b 100644 --- a/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/index.html +++ b/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/index.html @@ -5,16 +5,16 @@ Using Calcdate :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/3-cal-coding-guidelines/readability/blank-lines/index.html b/navpatterns/3-cal-coding-guidelines/readability/blank-lines/index.html index b6ef02a1..de522718 100644 --- a/navpatterns/3-cal-coding-guidelines/readability/blank-lines/index.html +++ b/navpatterns/3-cal-coding-guidelines/readability/blank-lines/index.html @@ -4,17 +4,17 @@ -Blank Lines.md :: AL Guidelines - - - - - - - - - - +Blank Lines :: AL Guidelines + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    @@ -215,7 +234,7 @@ ALGuidelines.Dev
    -

    Blank Lines.md

    +

    Blank Lines

    Do not use blank lines at the beginning or end of any functions, after BEGIN, before END, or inside multiline expressions. Bad code

    PROCEDURE MATRIX\_OnDrillDown@1133(MATRIX\_ColumnOrdinal : Integer);
     BEGIN
    @@ -252,12 +271,12 @@ THEN
     
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/3-cal-coding-guidelines/readability/case-actions/index.html b/navpatterns/3-cal-coding-guidelines/readability/case-actions/index.html index b2acb030..709f7d74 100644 --- a/navpatterns/3-cal-coding-guidelines/readability/case-actions/index.html +++ b/navpatterns/3-cal-coding-guidelines/readability/case-actions/index.html @@ -5,16 +5,16 @@ CASE Action :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev
    - - - + + +
    - - - - - - - + + + + + + + \ No newline at end of file diff --git a/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/index.html b/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/index.html index 08242d7a..ff2cb005 100644 --- a/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/index.html +++ b/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/index.html @@ -5,16 +5,16 @@ Colon usage in CASE :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -32,9 +32,9 @@ ALGuidelines.Dev - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
    - - - + + +
      @@ -57,7 +57,7 @@ ALGuidelines.Dev
    • Creating Custom Charts
    • Cross Session Events
    • Currently Active Record
    • -
    • Data Migration Facade
    • +
    • Data Migration Façade
    • Discovery Event
    • Document
    • Easy Update Of Setup Or Supplementary Information
    • @@ -85,12 +85,17 @@ ALGuidelines.Dev
    • Product Name
    • Queries
    • Read-once Initialization and Validation
    • Released Entity
    • Report Selection
    • -
    • Security
    • +
    • Security
    • Setup Specificity Fallback
    • Silent File Upload and Download
    • Singleton
    • 3. CAL Coding Guidelines
        -
      • Design
      • -
      • Internally-used DotNet Types
      • +
      • Design
      • +
      • Internally used DotNet Types
      • Internationalization
      • Localizability
          @@ -121,7 +140,7 @@ ALGuidelines.Dev
        • Begin as an 'After Word'
        • Begin-End - Compound Only
        • Binary Operator to Start Line
        • -
        • Blank Lines.md
        • +
        • Blank Lines
        • CASE Action
        • Colon usage in CASE
        • Comments inside Curly Brackets
        • @@ -231,12 +250,12 @@ ALGuidelines.Dev
          - - - - - - - + + + + + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 03f8bda4..cadb875a 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://alguidelines.dev/welcome/https://alguidelines.dev/bcpatterns/https://alguidelines.dev/bcbestpractices/https://alguidelines.dev/navpatterns/https://alguidelines.dev/contributing/https://alguidelines.dev/contributing/formattingtips/https://alguidelines.dev/contributing/forkandpr/https://alguidelines.dev/contributing/templates/https://alguidelines.dev/contributing/theapprovalprocess/https://alguidelines.dev/navpatterns/1-patterns/https://alguidelines.dev/navpatterns/2-anti-patterns/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/https://alguidelines.dev/navpatterns/4-get-involved/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/actions-images/https://alguidelines.dev/navpatterns/1-patterns/activity-log/https://alguidelines.dev/navpatterns/1-patterns/argument-table/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/begin-end/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/blank-lines/https://alguidelines.dev/navpatterns/1-patterns/blocked-entity/https://alguidelines.dev/navpatterns/1-patterns/cached-web-service-calls/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/case-actions/https://alguidelines.dev/navpatterns/4-get-involved/code-of-conduct/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/https://alguidelines.dev/navpatterns/1-patterns/conditional-cascading-update/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/confirm/https://alguidelines.dev/navpatterns/1-patterns/copy-document/https://alguidelines.dev/navpatterns/1-patterns/create-data-from-templates/https://alguidelines.dev/navpatterns/1-patterns/create-urls-to-nav-clients/https://alguidelines.dev/navpatterns/1-patterns/creating-custom-charts/https://alguidelines.dev/navpatterns/1-patterns/cross-session-events/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-table/cue-table/https://alguidelines.dev/navpatterns/1-patterns/currently-active-record/https://alguidelines.dev/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/https://alguidelines.dev/navpatterns/1-patterns/data-migration-facade/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/https://alguidelines.dev/navpatterns/1-patterns/discovery-event/https://alguidelines.dev/navpatterns/1-patterns/document/https://alguidelines.dev/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/https://alguidelines.dev/navpatterns/1-patterns/error-message-processing/https://alguidelines.dev/navpatterns/1-patterns/extending-the-role-center-headlines/https://alguidelines.dev/navpatterns/1-patterns/feature-localization-for-data-structures/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/fielderror/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/https://alguidelines.dev/navpatterns/1-patterns/hooks/https://alguidelines.dev/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/https://alguidelines.dev/navpatterns/1-patterns/notifications/in-context-notifications/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/indentation/https://alguidelines.dev/navpatterns/1-patterns/instructions-in-the-ui/https://alguidelines.dev/navpatterns/1-patterns/integration-of-addresses/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/https://alguidelines.dev/navpatterns/1-patterns/journal-error-processing/https://alguidelines.dev/navpatterns/1-patterns/journal-template-batch-line/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/https://alguidelines.dev/navpatterns/1-patterns/master-data/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/message-and-error/https://alguidelines.dev/navpatterns/1-patterns/multi-file-download/https://alguidelines.dev/navpatterns/1-patterns/multi-page-list/https://alguidelines.dev/navpatterns/1-patterns/multilanguage-application-data/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/named-invocations/https://alguidelines.dev/navpatterns/2-anti-patterns/nav-upgrade/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/nested-withs/https://alguidelines.dev/navpatterns/1-patterns/net-exception-handling-in-cal/https://alguidelines.dev/navpatterns/1-patterns/no-series/https://alguidelines.dev/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/https://alguidelines.dev/navpatterns/1-patterns/notifications/https://alguidelines.dev/navpatterns/1-patterns/observer/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/https://alguidelines.dev/navpatterns/4-get-involved/patterns-authors/https://alguidelines.dev/navpatterns/1-patterns/posting-routine-select-behavior/https://alguidelines.dev/navpatterns/1-patterns/product-name/https://alguidelines.dev/navpatterns/1-patterns/queries/https://alguidelines.dev/navpatterns/1-patterns/read-once-initialization-and-validation/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/https://alguidelines.dev/navpatterns/related-links/https://alguidelines.dev/navpatterns/1-patterns/released-entity/https://alguidelines.dev/navpatterns/1-patterns/report-selection/https://alguidelines.dev/navpatterns/2-anti-patterns/reusable-bugs/https://alguidelines.dev/navpatterns/1-patterns/security/https://alguidelines.dev/navpatterns/1-patterns/queries/select-distinct-with-queries/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/https://alguidelines.dev/navpatterns/1-patterns/setup-specificity-fallback/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-table/setup-table/https://alguidelines.dev/navpatterns/1-patterns/silent-file-upload-and-download/https://alguidelines.dev/navpatterns/1-patterns/singleton/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-codeunit/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-table/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/https://alguidelines.dev/navpatterns/1-patterns/standard-journal/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/https://alguidelines.dev/bcpatterns/facade-pattern/https://alguidelines.dev/bcpatterns/generic-method-pattern/https://alguidelines.dev/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/https://alguidelines.dev/contributing/templates/guidelines/https://alguidelines.dev/contributing/templates/patterns/https://alguidelines.dev/navpatterns/1-patterns/temporary-dataset-report/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/https://alguidelines.dev/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/https://alguidelines.dev/navpatterns/1-patterns/transfer-custom-fields/https://alguidelines.dev/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/https://alguidelines.dev/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/https://alguidelines.dev/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/variable-naming/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/https://alguidelines.dev/navpatterns/1-patterns/variant-facade/https://alguidelines.dev/categories/https://alguidelines.dev/https://alguidelines.dev/tags/ \ No newline at end of file +https://alguidelines.dev/welcome/https://alguidelines.dev/bcpatterns/https://alguidelines.dev/bcbestpractices/https://alguidelines.dev/navpatterns/https://alguidelines.dev/contributing/https://alguidelines.dev/contributing/formattingtips/https://alguidelines.dev/contributing/forkandpr/https://alguidelines.dev/contributing/templates/https://alguidelines.dev/contributing/theapprovalprocess/https://alguidelines.dev/navpatterns/1-patterns/https://alguidelines.dev/navpatterns/1-patterns/security/1-sensitive-data-encapsulation/https://alguidelines.dev/navpatterns/2-anti-patterns/https://alguidelines.dev/navpatterns/1-patterns/security/2-data-encryption/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/https://alguidelines.dev/navpatterns/1-patterns/security/3-single-point-of-access/https://alguidelines.dev/navpatterns/4-get-involved/https://alguidelines.dev/navpatterns/1-patterns/security/4-masked-text/https://alguidelines.dev/navpatterns/1-patterns/security/5-ssl-in-nav/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/actions-images/https://alguidelines.dev/navpatterns/1-patterns/activity-log/https://alguidelines.dev/navpatterns/1-patterns/argument-table/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/begin-end/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/blank-lines/https://alguidelines.dev/navpatterns/1-patterns/blocked-entity/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/by-reference-parameters/https://alguidelines.dev/navpatterns/1-patterns/cached-web-service-calls/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/case-actions/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/class-coupling/https://alguidelines.dev/navpatterns/4-get-involved/code-of-conduct/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/https://alguidelines.dev/navpatterns/1-patterns/conditional-cascading-update/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/confirm/https://alguidelines.dev/navpatterns/1-patterns/copy-document/https://alguidelines.dev/navpatterns/1-patterns/create-data-from-templates/https://alguidelines.dev/navpatterns/1-patterns/create-urls-to-nav-clients/https://alguidelines.dev/navpatterns/1-patterns/creating-custom-charts/https://alguidelines.dev/navpatterns/1-patterns/cross-session-events/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-table/cue-table/https://alguidelines.dev/navpatterns/1-patterns/currently-active-record/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/cyclomatic-complexity/https://alguidelines.dev/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/https://alguidelines.dev/navpatterns/1-patterns/data-migration-facade/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/https://alguidelines.dev/navpatterns/1-patterns/discovery-event/https://alguidelines.dev/navpatterns/1-patterns/document/https://alguidelines.dev/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/encapsulate-local-functionality/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/https://alguidelines.dev/navpatterns/1-patterns/error-message-processing/https://alguidelines.dev/navpatterns/1-patterns/extending-the-role-center-headlines/https://alguidelines.dev/navpatterns/1-patterns/feature-localization-for-data-structures/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/fielderror/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/findset-findfirst-findlast/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/https://alguidelines.dev/navpatterns/1-patterns/hooks/https://alguidelines.dev/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/https://alguidelines.dev/navpatterns/1-patterns/notifications/in-context-notifications/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/indentation/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/initialized-variables/https://alguidelines.dev/navpatterns/1-patterns/instructions-in-the-ui/https://alguidelines.dev/navpatterns/1-patterns/integration-of-addresses/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/https://alguidelines.dev/navpatterns/1-patterns/journal-error-processing/https://alguidelines.dev/navpatterns/1-patterns/journal-template-batch-line/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/maintainability-index/https://alguidelines.dev/navpatterns/1-patterns/master-data/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/message-and-error/https://alguidelines.dev/navpatterns/1-patterns/multi-file-download/https://alguidelines.dev/navpatterns/1-patterns/multi-page-list/https://alguidelines.dev/navpatterns/1-patterns/multilanguage-application-data/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/named-invocations/https://alguidelines.dev/navpatterns/2-anti-patterns/nav-upgrade/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/nested-withs/https://alguidelines.dev/navpatterns/1-patterns/net-exception-handling-in-cal/https://alguidelines.dev/navpatterns/1-patterns/no-series/https://alguidelines.dev/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/https://alguidelines.dev/navpatterns/1-patterns/notifications/https://alguidelines.dev/navpatterns/1-patterns/observer/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/parameter-placeholders/https://alguidelines.dev/navpatterns/4-get-involved/patterns-authors/https://alguidelines.dev/navpatterns/1-patterns/posting-routine-select-behavior/https://alguidelines.dev/navpatterns/1-patterns/product-name/https://alguidelines.dev/navpatterns/1-patterns/queries/https://alguidelines.dev/navpatterns/1-patterns/read-once-initialization-and-validation/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/https://alguidelines.dev/navpatterns/related-links/https://alguidelines.dev/navpatterns/1-patterns/released-entity/https://alguidelines.dev/navpatterns/1-patterns/report-selection/https://alguidelines.dev/navpatterns/2-anti-patterns/reusable-bugs/https://alguidelines.dev/navpatterns/1-patterns/security/https://alguidelines.dev/navpatterns/1-patterns/queries/select-distinct-with-queries/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/https://alguidelines.dev/navpatterns/1-patterns/setup-specificity-fallback/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-table/setup-table/https://alguidelines.dev/navpatterns/1-patterns/silent-file-upload-and-download/https://alguidelines.dev/navpatterns/1-patterns/singleton/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-codeunit/https://alguidelines.dev/navpatterns/1-patterns/singleton/singleton-table/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/https://alguidelines.dev/navpatterns/1-patterns/standard-journal/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/static-object-invocation/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/https://alguidelines.dev/bcpatterns/facade-pattern/https://alguidelines.dev/bcpatterns/generic-method-pattern/https://alguidelines.dev/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/https://alguidelines.dev/contributing/templates/guidelines/https://alguidelines.dev/contributing/templates/patterns/https://alguidelines.dev/navpatterns/1-patterns/temporary-dataset-report/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/https://alguidelines.dev/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/https://alguidelines.dev/navpatterns/1-patterns/transfer-custom-fields/https://alguidelines.dev/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/unreachable-code/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/unused-initialized-variables/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/unused-variables/https://alguidelines.dev/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/https://alguidelines.dev/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/ux/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/variable-capacity-mismatch/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/variable-naming/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/https://alguidelines.dev/navpatterns/1-patterns/variant-facade/https://alguidelines.dev/navpatterns/3-cal-coding-guidelines/design/with-scope-name-collision/https://alguidelines.dev/categories/https://alguidelines.dev/https://alguidelines.dev/tags/ \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 889d5cc9..ee25bcf1 100644 --- a/tags/index.html +++ b/tags/index.html @@ -6,16 +6,16 @@ Tags :: AL Guidelines - - - - - - - - - - + + + + + + + + + + @@ -33,9 +33,9 @@ ALGuidelines.Dev
    - - - + + +
    - - - + + +