From 26452d5f7c48be7a6b2557452a581a356516c2eb Mon Sep 17 00:00:00 2001 From: Jeremy Vyska <35526546+JeremyVyska@users.noreply.github.com> Date: Sat, 30 Oct 2021 23:55:19 +0200 Subject: [PATCH] Formatting repair --- content/NAVPatterns/1-patterns/_index.md | 67 +---------------- .../1-patterns/activity-log/index.md | 20 +++--- .../1-patterns/argument-table/index.md | 62 ++++++++-------- .../1-patterns/blocked-entity/_index.md | 15 ++-- .../data-driven-blocked-entity/index.md | 47 ++++++------ .../cached-web-service-calls/index.md | 71 ++++++++++--------- .../conditional-cascading-update/index.md | 5 +- .../create-data-from-templates/index.md | 2 +- .../creating-custom-charts/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../instructions-in-the-ui/index.md | 2 +- .../journal-error-processing/index.md | 2 +- .../journal-template-batch-line/index.md | 2 +- .../multilanguage-application-data/index.md | 2 +- .../net-exception-handling-in-cal/_index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../temporary-dataset-report/index.md | 2 +- 20 files changed, 134 insertions(+), 179 deletions(-) diff --git a/content/NAVPatterns/1-patterns/_index.md b/content/NAVPatterns/1-patterns/_index.md index 76b499d6..2f1d1b16 100644 --- a/content/NAVPatterns/1-patterns/_index.md +++ b/content/NAVPatterns/1-patterns/_index.md @@ -5,70 +5,5 @@ weight = 110 +++ ## Browse design patterns by tags -_(for "all patterns", choose a title from the left menu)._ +_Originally, this page was categorized set of links to subpages, but that is not necessary now with the menu system to the left._ -_ -_ - -"It's all about the user" - -* [User eXperience][anchor0] -* [User productivity][anchor1] -* [UI][anchor2] -* [Data entry][anchor3] - -Setting NAV up - -* [Setup][anchor4] - -General software development - -* [Error handling][anchor5] -* [.NET][anchor6] -* [Metadata][anchor7] -* [Architecture][anchor8] -* [Caching][anchor9] -A partners' world - -* [For new NAV developers][anchor10] -* [Developer productivity][anchor11] -* [Localization][anchor12] -* [Upgrade][anchor13] -* [Make the Web work for you][anchor14] - -NAV specifics - -* [Event Subscription][anchor15] -* [Journal][anchor16] -* [Query][anchor17] -* [Document][anchor18] -* [Reports][anchor19] -* [Posting][anchor20] -* [MiniApp][anchor21] -* [Files ][anchor22] - - - -[anchor0]: /nav/w/designpatterns/tags/UI/User%2bexperience -[anchor1]: /nav/w/designpatterns/tags/User%2bProductivity -[anchor2]: /nav/w/designpatterns/tags/UI -[anchor3]: /nav/w/designpatterns/tags/data%2bentry -[anchor4]: /nav/w/designpatterns/tags/setup -[anchor5]: /nav/w/designpatterns/tags/error%2bhandling -[anchor6]: /nav/w/designpatterns/tags/-NET -[anchor7]: /nav/w/designpatterns/tags/Metadata -[anchor8]: /nav/w/designpatterns/tags/architecture -[anchor9]: /nav/w/designpatterns/tags/Caching -[anchor10]: /nav/w/designpatterns/tags/For%2bnew%2bNAV%2bdevelopers -[anchor11]: /nav/w/designpatterns/tags/developer%2bproductivity -[anchor12]: /nav/w/designpatterns/tags/Localization -[anchor13]: /nav/w/designpatterns/tags/upgrade -[anchor14]: /nav/w/designpatterns/tags/web -[anchor15]: /nav/w/designpatterns/tags/Event%2bSubscription -[anchor16]: /nav/w/designpatterns/tags/journal -[anchor17]: /nav/w/designpatterns/tags/query -[anchor18]: /nav/w/designpatterns/tags/document -[anchor19]: /nav/w/designpatterns/tags/reports -[anchor20]: /nav/w/designpatterns/tags/posting -[anchor21]: /nav/w/designpatterns/tags/miniapp -[anchor22]: /nav/w/designpatterns/tags/files diff --git a/content/NAVPatterns/1-patterns/activity-log/index.md b/content/NAVPatterns/1-patterns/activity-log/index.md index 47e4edc9..37a327a2 100644 --- a/content/NAVPatterns/1-patterns/activity-log/index.md +++ b/content/NAVPatterns/1-patterns/activity-log/index.md @@ -2,7 +2,7 @@ title = "Activity Logs" weight = 210 +++ -## _by Ciprian Iordache at Microsoft Development Center Copenhagen_ +_Originally by Ciprian Iordache at Microsoft Development Center Copenhagen_ ## Activity Log @@ -51,18 +51,22 @@ The following parameters should be provided to the function: To show the log, add a page action, with the caption including the name " Log" and link it to the image named "Log": - { ;1 ;Action ; +```AL +{ ;1 ;Action ; Name=ActivityLog; - CaptionML=ENU=Activity Log; - ToolTipML=ENU=View the status and any errors if the document was sent as an electronic document or OCR file through the document exchange service.; - ApplicationArea=\#Basic,\#Suite; + CaptionML=ENU='Activity Log'; + ToolTipML=ENU='View the status and any errors if the document was sent as an electronic document or OCR file through the document exchange service.'; + ApplicationArea=#Basic,#Suite; Image=Log; - OnAction=VAR - ActivityLog@1000 : Record 710; + OnAction= + VAR + ActivityLog@1000 : Record 710; BEGIN - ActivityLog.ShowEntries(RECORDID); + ActivityLog.ShowEntries(RECORDID); END; } +``` + **NAV usages** diff --git a/content/NAVPatterns/1-patterns/argument-table/index.md b/content/NAVPatterns/1-patterns/argument-table/index.md index aa119ad3..a14e101e 100644 --- a/content/NAVPatterns/1-patterns/argument-table/index.md +++ b/content/NAVPatterns/1-patterns/argument-table/index.md @@ -4,7 +4,7 @@ weight = 220 +++ # Argument table pattern -_By Nikola Kukrika and Waldo_ +_Originally By Nikola Kukrika and Waldo_ # Abstract @@ -27,36 +27,37 @@ Few examples of the bad implementations are as illustrated here: ## Bad example 1 -**PROCEDURE FillInVATReturnData@1200001(VAR DeclarationID@1200000 : Code\[20\];VAR LineID@1200001 :** -**Code\[20\];VAR PeerID@1200002 : Code\[20\]; VAR DocumentNo@1200003 : Code\[20\]; VAR NumberOfCopies@1200007 :** -**Integer; VAR Uploaded@1200004 : Boolean; VAR Correction@1200005 : Boolean; VAR HasValidationErr@1200006 :** -**Boolean);** +```AL +PROCEDURE FillInVATReturnData@1200001(VAR DeclarationID@1200000 : Code [20];VAR LineID@1200001 : Code [20];VAR PeerID@1200002 : Code [20]; VAR DocumentNo@1200003: Code[20]; VAR NumberOfCopies@1200007: Integer; VAR Uploaded@1200004 : Boolean; VAR Correction@1200005 : Boolean; VAR HasValidationErr@1200006 : Boolean); +``` -Call +**Call** -**FillInVATReturnData(NoSeries, NextLineID, CustomerID, DocumentNo, SingleCopy, ???, ??, ...., ...)** + +```AL +FillInVATReturnData(NoSeries, NextLineID, CustomerID, DocumentNo, SingleCopy, ???, ??, ...., ...) +``` In this example the code is hard to read and understand. Adding an additional argument will require refactoring of the existing function. Each time a new argument is added a new function will be created. ## Bad example 2 -**LOCAL PROCEDURE GetTableSyncSetupW1@3(** -**OldTableId@1002 : Integer;** -**VAR UpgradeTableId@1001 : Integer;** -**VAR TableUpgradeMode@1000 : 'Check, Copy, Move, Force') : Boolean;** +```AL +LOCAL PROCEDURE GetTableSyncSetupW1@3(OldTableId@1002 : Integer; VAR UpgradeTableId@1001 : Integer; VAR TableUpgradeMode@1000 : 'Check, Copy, Move, Force') : Boolean; BEGIN -CASE OldTableId OF -DATABASE::"Sales Header": -SetTableSyncSetup(0,TableUpgradeMode::Check,UpgradeTableId,TableUpgradeMode); -DATABASE::"Posting Exch. Column Def": -SetTableSyncSetup(104025,TableUpgradeMode::Copy,UpgradeTableId,TableUpgradeMode); -DATABASE::"Payment Export Data": -SetTableSyncSetup(0,TableUpgradeMode::Force,UpgradeTableId,TableUpgradeMode); -ELSE -EXIT(FALSE); -END; -EXIT(TRUE); + CASE OldTableId OF + DATABASE::"Sales Header": + SetTableSyncSetup(0,TableUpgradeMode::Check,UpgradeTableId,TableUpgradeMode); + DATABASE::"Posting Exch. Column Def": + SetTableSyncSetup(104025,TableUpgradeMode::Copy,UpgradeTableId,TableUpgradeMode); + DATABASE::"Payment Export Data": + SetTableSyncSetup(0,TableUpgradeMode::Force,UpgradeTableId,TableUpgradeMode); + ELSE + EXIT(FALSE); + END; + EXIT(TRUE); END; +``` In this example each time a new argument is added all function calls will have to be updated. Option is duplicated in the signature, which will cause issues if a new option is defined or the existing options are renamed. @@ -75,28 +76,33 @@ The examples of usages addressing problems shown above are: ## Good example 1 New table +```AL TAB 50003 VAT Return Data -**PROCEDURE FillInVATReturnData@1200001(VAR VATReturnData@1200000 : Record 50003);** +PROCEDURE FillInVATReturnData@1200001(VAR VATReturnData@1200000 : Record 50003); +``` **** - +```AL VATReturnData.INIT; VATReturnData.NumberOfCopies := GetDefaultNumberOfCopies; VATReturnData.Uploaded := FALSE; FillInVATReturnData(VATReturnData); +``` By introducing an argument table, code is much more readable since there is a single argument for a function. It is easy to see which arguments are passed in and which are modified in a function. ## Good example 2 Good example -**PROCEDURE GetTableSyncSetupW1@3(VAR TableSynchSetup@1000 : Record 2000000135);** +```AL +PROCEDURE GetTableSyncSetupW1@3(VAR TableSynchSetup@1000 : Record 2000000135); BEGIN -SetTableSyncSetup(DATABASE::"Sales Header",0,TableSynchSetup.Mode::Check); -SetTableSyncSetup(DATABASE::"Posting Exch. Column Def",104025,TableSynchSetup.Mode::Copy); -SetTableSyncSetup(DATABASE::"Payment Export Data",0,TableSynchSetup.Mode::Force); + SetTableSyncSetup(DATABASE::"Sales Header",0,TableSynchSetup.Mode::Check); + SetTableSyncSetup(DATABASE::"Posting Exch. Column Def",104025,TableSynchSetup.Mode::Copy); + SetTableSyncSetup(DATABASE::"Payment Export Data",0,TableSynchSetup.Mode::Force); END; +``` Option definition is not encapsulated within the table. Arguments are grouped and we can add additional arguments without the need to change the signature. diff --git a/content/NAVPatterns/1-patterns/blocked-entity/_index.md b/content/NAVPatterns/1-patterns/blocked-entity/_index.md index fb2e318c..0cd631d1 100644 --- a/content/NAVPatterns/1-patterns/blocked-entity/_index.md +++ b/content/NAVPatterns/1-patterns/blocked-entity/_index.md @@ -1,8 +1,8 @@ +++ -title = "Blocked Entity.md" +title = "Blocked Entity" weight = 270 +++ -_by Abhishek Ghosh at Microsoft Development Center Copenhagen_ +_Originally by Abhishek Ghosh at Microsoft Development Center Copenhagen_ ## Abstract @@ -14,7 +14,7 @@ The Blocked Entity is used when it is required to stop transactions for an entit To block entities through metadata, read this pattern. To do the same thing through data, read [Data Driven Blocked Entity pattern][anchor1]. -The business entity holds a state that controls if a given transaction is allowed. The state is used by the logic controlling transactions.****The change of state could either be temporary or permanent. +The business entity holds a state that controls if a given transaction is allowed. The state is used by the logic controlling transactions. The change of state could either be temporary or permanent. An example of a temporary halt is when a retail chain selling items has received lot of complaints about an item, and the company wants to stop all transactions, both purchase and sale, with that item until the dealer has clarified the issue with his supplier and possibly received a replacement for the defective stock. Another common example is during counting the physical inventory using cycle counting where the counting is done in one section of a warehouse at a time, so that the regular operations can continue in the other parts of the warehouse. In these situations, it is necessary to block all transactions, such as picks and put-aways, for a bin while warehouse counting is in progress for that bin. @@ -34,7 +34,9 @@ Add a Boolean field named Blocked in the table. In the relevant logic, add a condition to check the status of the Blocked flag. The cheapest way is to use a TESTFIELD: -_.TESTFIELD(Blocked,FALSE);_ +```AL +.TESTFIELD(Blocked,FALSE); +``` Alternatively, you can throw a custom error message. However, you should only do that if the default error message thrown by TESTFIELD is not sufficient. @@ -62,9 +64,10 @@ An example of the Boolean implementation on the Item card. In codeunit 22 -- Item Jnl.-Post Line, the following lines of code have implemented a check based on the value of the Blocked field: - IF NOT CalledFromAdjustment THEN +```AL +IF NOT CalledFromAdjustment THEN Item.TESTFIELD(Blocked,FALSE); - +``` ### Option-Field Implementation [![ ][image2]][anchor3] diff --git a/content/NAVPatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.md b/content/NAVPatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.md index 65a4c7ed..d4189ae9 100644 --- a/content/NAVPatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.md +++ b/content/NAVPatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.md @@ -4,12 +4,10 @@ weight = 470 +++ _Written by Bogdan Andrei Sturzoiu, at Microsoft Development Center Copenhagen_ -******Abstract** +**Abstract** This pattern implements a generic mechanism for dynamically restricting and allowing usage of a record by the business process administrator. -[![ ][image0]][anchor0] - **Problem** A NAV record can be used in a number of functionalities across the app. There are situations, however, when the administrator wants to restrict the consumption of such a record, as well as lift the restriction when it is no longer relevant. @@ -42,7 +40,9 @@ Currently, the restrictions are record-based and type-less. They act as simple t You must make sure to differentiate between the reason and the purpose. That is because the restriction can only be added once per record, but consumed in multiple places. -******Example** +**** + +**Example** For example, we want to restrict posting Gen. Journal Lines if a customer has not been added in Account No. field. @@ -66,34 +66,37 @@ The code behind the "Add record restriction" workflow response: The code behind the "Remove record restriction" response: - RecRef.GETTABLE(Variant); - CASE RecRef.NUMBER OF +```AL +RecRef.GETTABLE(Variant); +CASE RecRef.NUMBER OF DATABASE::"Approval Entry": - BEGIN - RecordRestrictionMgt.AllowRecordUsage(RecRef.RECORDID); - RecRef.SETTABLE(ApprovalEntry); - RecRef.GET(ApprovalEntry."Record ID to Approve"); - AllowRecordUsage(RecRef); - END; + BEGIN + RecordRestrictionMgt.AllowRecordUsage(RecRef.RECORDID); + RecRef.SETTABLE(ApprovalEntry); + RecRef.GET(ApprovalEntry."Record ID to Approve"); + AllowRecordUsage(RecRef); + END; DATABASE::"Gen. Journal Batch": - BEGIN - RecRef.SETTABLE(GenJournalBatch); - RecordRestrictionMgt.AllowGenJournalBatchUsage(GenJournalBatch); - END + BEGIN + RecRef.SETTABLE(GenJournalBatch); + RecordRestrictionMgt.AllowGenJournalBatchUsage(GenJournalBatch); + END ELSE - RecordRestrictionMgt.AllowRecordUsage(RecRef.RECORDID); - END; - + RecordRestrictionMgt.AllowRecordUsage(RecRef.RECORDID); +END; +``` -Notice****how lifting a restriction for a Gen. Journal Batch involves lifting all the restrictions for the individual journal lines in the batch (hence the special branching of the code). +Notice how lifting a restriction for a Gen. Journal Batch involves lifting all the restrictions for the individual journal lines in the batch (hence the special branching of the code). -******Consequences** +**** + +**Consequences** Currently, there can only be one restriction per record. There are no restriction types. In the future, a type field should be added to the restriction table, to allow adding restrictions for different purposes, and to refine their consumption. For example, a posting restriction might only be enforced for restrictions originating from approvals. -**NAV** **Versions** +**NAV Versions** This pattern has been introduced in Dynamics NAV 2016\. diff --git a/content/NAVPatterns/1-patterns/cached-web-service-calls/index.md b/content/NAVPatterns/1-patterns/cached-web-service-calls/index.md index d460777b..a11e281e 100644 --- a/content/NAVPatterns/1-patterns/cached-web-service-calls/index.md +++ b/content/NAVPatterns/1-patterns/cached-web-service-calls/index.md @@ -1,8 +1,8 @@ +++ -title = "Cached Web Server Calls.md" +title = "Cached Web Server Calls" weight = 290 +++ -_by Mostafa Balat, Microsoft Development Center Copenhagen_ +_Originally by Mostafa Balat, Microsoft Development Center Copenhagen_ ## Abstract @@ -44,56 +44,61 @@ If **PAG1259 Bank Name - Data Conv. List** is being open and the cached data is ### Code Sample - OnInit=BEGIN +```AL +OnInit=BEGIN ShortTimeout := 5000; LongTimeout := 30000; - END; - OnOpenPage=VAR +END; + +OnOpenPage=VAR BankDataConvBank@1002 : Record 1259; ImpBankListExtDataHndl@1000 : Codeunit 1289; CountryRegionCode@1004 : Text; HideErrors@1003 : Boolean; - BEGIN +BEGIN CountryRegionCode := IdentifyCountryRegionCode(Rec,GETFILTER("Country/Region Code")); IF BankDataConvBank.ISEMPTY THEN BEGIN - ImpBankListExtDataHndl.GetBankListFromConversionService(HideErrors,CountryRegionCode,ShortTimeout); - EXIT; + ImpBankListExtDataHndl.GetBankListFromConversionService(HideErrors,CountryRegionCode,ShortTimeout); + EXIT; END; RefreshBankNamesOlderThanToday(CountryRegionCode,HideErrors,ShortTimeout); - END; - OnAction=VAR +END; + +OnAction=VAR ImpBankListExtDataHndl@1000 : Codeunit 1289; FilterNotUsed@1001 : Text; ShowErrors@1003 : Boolean; - BEGIN +BEGIN ShowErrors := TRUE; ImpBankListExtDataHndl.GetBankListFromConversionService(ShowErrors,FilterNotUsed,LongTimeout); - END; - LOCAL PROCEDURE IdentifyCountryRegionCode@1(VAR BankDataConvBank@1002 : Record 1259;Filter@1000 : Text) : Text; +END; + +LOCAL PROCEDURE IdentifyCountryRegionCode@1(VAR BankDataConvBank@1002 : Record 1259;Filter@1000 : Text) : Text; VAR - CompanyInformation@1001 : Record 79; - BlankFilter@1003 : Text; + CompanyInformation@1001 : Record 79; + BlankFilter@1003 : Text; BEGIN - BlankFilter := ''''''; - IF Filter = BlankFilter THEN BEGIN - CompanyInformation.GET; - BankDataConvBank.SETFILTER("Country/Region Code",CompanyInformation."Country/Region Code"); - EXIT(BankDataConvBank.GETFILTER("Country/Region Code")); - END; - EXIT(Filter); - END; - LOCAL PROCEDURE RefreshBankNamesOlderThanToday@5(CountryRegionCode@1000 : Text;ShowErrors@1002 : Boolean;Timeout@1004 : Integer); - VAR - BankDataConvBank@1001 : Record 1259; - ImpBankListExtDataHndl@1003 : Codeunit 1289; - BEGIN - IF CountryRegionCode <\> '' THEN - BankDataConvBank.SETFILTER("Country/Region Code",CountryRegionCode); - BankDataConvBank.SETFILTER("Last Update Date",'<%1',TODAY); - IF BankDataConvBank.FINDFIRST THEN - ImpBankListExtDataHndl.GetBankListFromConversionService(ShowErrors,CountryRegionCode,Timeout); + BlankFilter := ''''''; + IF Filter = BlankFilter THEN BEGIN + CompanyInformation.GET; + BankDataConvBank.SETFILTER("Country/Region Code",CompanyInformation."Country/Region Code"); + EXIT(BankDataConvBank.GETFILTER("Country/Region Code")); + END; + EXIT(Filter); END; +LOCAL PROCEDURE RefreshBankNamesOlderThanToday@5(CountryRegionCode@1000 : Text;ShowErrors@1002 : Boolean;Timeout@1004 : Integer); + VAR + BankDataConvBank@1001 : Record 1259; + ImpBankListExtDataHndl@1003 : Codeunit 1289; + BEGIN + IF CountryRegionCode <\> '' THEN + BankDataConvBank.SETFILTER("Country/Region Code",CountryRegionCode); + BankDataConvBank.SETFILTER("Last Update Date",'<%1',TODAY); + IF BankDataConvBank.FINDFIRST THEN + ImpBankListExtDataHndl.GetBankListFromConversionService(ShowErrors,CountryRegionCode,Timeout); +END; +``` ## NAV Usages Bank name lookup on the Bank Account card for dynamically identifying the format to use to generate a bank-specific payment file. diff --git a/content/NAVPatterns/1-patterns/conditional-cascading-update/index.md b/content/NAVPatterns/1-patterns/conditional-cascading-update/index.md index b5b8d7ff..bae38630 100644 --- a/content/NAVPatterns/1-patterns/conditional-cascading-update/index.md +++ b/content/NAVPatterns/1-patterns/conditional-cascading-update/index.md @@ -2,14 +2,13 @@ title = "Conditional Cascading Update" weight = 370 +++ -_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 -** +## **Description** The value of one table field sometimes depends on the value of another field, typically following an application-defined transformation (note that we're talking about transformations of field values here. This has nothing to do with e.g. form transformation), such as conversion to uppercase, removal of certain characters etc. diff --git a/content/NAVPatterns/1-patterns/create-data-from-templates/index.md b/content/NAVPatterns/1-patterns/create-data-from-templates/index.md index 4aa7e318..38e45070 100644 --- a/content/NAVPatterns/1-patterns/create-data-from-templates/index.md +++ b/content/NAVPatterns/1-patterns/create-data-from-templates/index.md @@ -2,7 +2,7 @@ title = "Create Data from Templates" weight = 400 +++ -_by Nikola Kukrika at Microsoft Development Center Copenhagen_ +_Originally by Nikola Kukrika at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/creating-custom-charts/index.md b/content/NAVPatterns/1-patterns/creating-custom-charts/index.md index 1f437f61..63103227 100644 --- a/content/NAVPatterns/1-patterns/creating-custom-charts/index.md +++ b/content/NAVPatterns/1-patterns/creating-custom-charts/index.md @@ -2,7 +2,7 @@ title = "Creating Custom Charts" weight = 420 +++ -_by Nikola Kukrika at Microsoft Development Center Copenhagen_ +_Originally by Nikola Kukrika at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/easy-update-of-setup-or-supplementary-information/index.md b/content/NAVPatterns/1-patterns/easy-update-of-setup-or-supplementary-information/index.md index 7d2fab07..526c63b3 100644 --- a/content/NAVPatterns/1-patterns/easy-update-of-setup-or-supplementary-information/index.md +++ b/content/NAVPatterns/1-patterns/easy-update-of-setup-or-supplementary-information/index.md @@ -2,7 +2,7 @@ title = "Easy Update Of Setup Or Supplementary Information" weight = 520 +++ -_by Anders Larsen at Microsoft Development Center Copenhagen_ +_Originally by Anders Larsen at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/feature-localization-for-data-structures/index.md b/content/NAVPatterns/1-patterns/feature-localization-for-data-structures/index.md index 281ed2bf..91b01f05 100644 --- a/content/NAVPatterns/1-patterns/feature-localization-for-data-structures/index.md +++ b/content/NAVPatterns/1-patterns/feature-localization-for-data-structures/index.md @@ -2,7 +2,7 @@ title = "Feature Localization For Data Structures" weight = 570 +++ -_by Bogdan Sturzoiu at Microsoft Development Center Copenhagen_ +_Originally by Bogdan Sturzoiu at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/instructions-in-the-ui/index.md b/content/NAVPatterns/1-patterns/instructions-in-the-ui/index.md index 74ce036f..319ed005 100644 --- a/content/NAVPatterns/1-patterns/instructions-in-the-ui/index.md +++ b/content/NAVPatterns/1-patterns/instructions-in-the-ui/index.md @@ -2,7 +2,7 @@ title = "Instructions in the UI" weight = 670 +++ -_by Nikola Kukrika at Microsoft Development Center Copenhagen_ +_Originally by Nikola Kukrika at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/journal-error-processing/index.md b/content/NAVPatterns/1-patterns/journal-error-processing/index.md index 4a8d14c8..93f4637a 100644 --- a/content/NAVPatterns/1-patterns/journal-error-processing/index.md +++ b/content/NAVPatterns/1-patterns/journal-error-processing/index.md @@ -2,7 +2,7 @@ title = "Journal Error Processing" weight = 710 +++ -_by Bogdana Botez at Microsoft Development Center Copenhagen_ +_Originally by Bogdana Botez at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/journal-template-batch-line/index.md b/content/NAVPatterns/1-patterns/journal-template-batch-line/index.md index 82f8f69e..aeea1b0d 100644 --- a/content/NAVPatterns/1-patterns/journal-template-batch-line/index.md +++ b/content/NAVPatterns/1-patterns/journal-template-batch-line/index.md @@ -2,7 +2,7 @@ title = "Journal Template Batch Line" weight = 720 +++ -_by Bogdana Botez at Microsoft Development Center Copenhagen_ +_Originally by Bogdana Botez at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/multilanguage-application-data/index.md b/content/NAVPatterns/1-patterns/multilanguage-application-data/index.md index 4cfafc70..7e13f85a 100644 --- a/content/NAVPatterns/1-patterns/multilanguage-application-data/index.md +++ b/content/NAVPatterns/1-patterns/multilanguage-application-data/index.md @@ -2,7 +2,7 @@ title = "Multilanguage Application Data" weight = 820 +++ -_by Bogdana Botez at Microsoft Development Center Copenhagen_ +_Originally by Bogdana Botez at Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/_index.md b/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/_index.md index 25bb559b..04b66954 100644 --- a/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/_index.md +++ b/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/_index.md @@ -2,7 +2,7 @@ title = "NET Exception Handling in CAL" weight = 860 +++ -_by Mostafa Balat, Microsoft Development Center Copenhagen_ +_Originally by Mostafa Balat, Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/index.md b/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/index.md index 75cf79b6..34462287 100644 --- a/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/index.md +++ b/content/NAVPatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/index.md @@ -2,7 +2,7 @@ title = "TryFunction NET Exception Handling in CAL" weight = 1240 +++ -_by Mostafa Balat, Microsoft Development Center Copenhagen_ +_Originally by Mostafa Balat, Microsoft Development Center Copenhagen_ ## Abstract diff --git a/content/NAVPatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/index.md b/content/NAVPatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/index.md index 3dd4d43e..1feb5f56 100644 --- a/content/NAVPatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/index.md +++ b/content/NAVPatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/index.md @@ -2,7 +2,7 @@ title = "use Queries to Detect Duplicate Records" weight = 1340 +++ -_by Abshishek Ghosh and Bogdan Sturzoiu at Microsoft Development Center Copenhagen** +_Originally by Abshishek Ghosh and Bogdan Sturzoiu at Microsoft Development Center Copenhagen** **_ ## **Abstract** diff --git a/content/NAVPatterns/1-patterns/queries/use-queries-to-replace-nested-loops/index.md b/content/NAVPatterns/1-patterns/queries/use-queries-to-replace-nested-loops/index.md index b85acefa..b55281da 100644 --- a/content/NAVPatterns/1-patterns/queries/use-queries-to-replace-nested-loops/index.md +++ b/content/NAVPatterns/1-patterns/queries/use-queries-to-replace-nested-loops/index.md @@ -2,7 +2,7 @@ title = "Use Queries to Replace Nested Loops" weight = 1350 +++ -#### _by Bogdan Sturzoiu, Microsoft Development Center Copenhagen_ +#### _Originally by Bogdan Sturzoiu, Microsoft Development Center Copenhagen_ ## **Abstract** diff --git a/content/NAVPatterns/1-patterns/temporary-dataset-report/index.md b/content/NAVPatterns/1-patterns/temporary-dataset-report/index.md index 009a606c..affe2cc4 100644 --- a/content/NAVPatterns/1-patterns/temporary-dataset-report/index.md +++ b/content/NAVPatterns/1-patterns/temporary-dataset-report/index.md @@ -2,7 +2,7 @@ title = "Temporary Dataset Report" weight = 1190 +++ -_by Abhishek Ghosh, at Microsoft Development Center Copenhagen_ +_Originally by Abhishek Ghosh, at Microsoft Development Center Copenhagen_ Abstract