This commit is contained in:
JeremyVyska 2021-12-05 21:23:42 +00:00
parent b46ee5b225
commit e9d640d50a
164 changed files with 12201 additions and 3918 deletions

View file

@ -5,16 +5,16 @@
<meta name=generator content="Hugo 0.89.4">
<meta name=description content>
<title>Easy Update Of Setup Or Supplementary Information :: AL Guidelines</title>
<link href=/css/nucleus.css?1638662727 rel=stylesheet>
<link href=/css/fontawesome-all.min.css?1638662727 rel=stylesheet>
<link href=/css/featherlight.min.css?1638662727 rel=stylesheet>
<link href=/css/perfect-scrollbar.min.css?1638662727 rel=stylesheet>
<link href=/css/auto-complete.css?1638662727 rel=stylesheet>
<link href=/css/theme.css?1638662727 rel=stylesheet>
<link href=/css/theme-blue.css?1638662727 rel=stylesheet>
<link href=/css/variant.css?1638662727 rel=stylesheet>
<link href=/css/print.css?1638662727 rel=stylesheet media=print>
<script src=/js/jquery.min.js?1638662727></script>
<link href=/css/nucleus.css?1638739417 rel=stylesheet>
<link href=/css/fontawesome-all.min.css?1638739417 rel=stylesheet>
<link href=/css/featherlight.min.css?1638739417 rel=stylesheet>
<link href=/css/perfect-scrollbar.min.css?1638739417 rel=stylesheet>
<link href=/css/auto-complete.css?1638739417 rel=stylesheet>
<link href=/css/theme.css?1638739417 rel=stylesheet>
<link href=/css/theme-blue.css?1638739417 rel=stylesheet>
<link href=/css/variant.css?1638739417 rel=stylesheet>
<link href=/css/print.css?1638739417 rel=stylesheet media=print>
<script src=/js/jquery.min.js?1638739417></script>
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
</head>
<body data-url=/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>
@ -32,9 +32,9 @@ ALGuidelines.Dev
<input data-search-input id=search-by type=search placeholder=Search...>
<span data-search-clear><i class="fas fa-times"></i></span>
</div>
<script src=/js/lunr.min.js?1638662727></script>
<script src=/js/auto-complete.js?1638662727></script>
<script src=/js/search.js?1638662727></script>
<script src=/js/lunr.min.js?1638739417></script>
<script src=/js/auto-complete.js?1638739417></script>
<script src=/js/search.js?1638739417></script>
</div>
<div class=highlightable>
<ul class=topics>
@ -57,7 +57,7 @@ ALGuidelines.Dev
<li data-nav-id=/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
<li data-nav-id=/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
<li data-nav-id=/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
<li data-nav-id=/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
<li data-nav-id=/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Façade" class=dd-item><a href=/navpatterns/1-patterns/data-migration-facade/>Data Migration Façade</a></li>
<li data-nav-id=/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
<li data-nav-id=/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/navpatterns/1-patterns/document/>Document</a></li>
<li data-nav-id=/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class="dd-item active"><a href=/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
@ -85,12 +85,17 @@ ALGuidelines.Dev
<li data-nav-id=/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/navpatterns/1-patterns/product-name/>Product Name</a></li>
<li data-nav-id=/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/navpatterns/1-patterns/queries/>Queries</a><ul>
<li data-nav-id=/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
<li data-nav-id=/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
<li data-nav-id=/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="Use Queries to Detect Duplicate Records" class=dd-item><a href=/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>Use Queries to Detect Duplicate Records</a></li>
<li data-nav-id=/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
<li data-nav-id=/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
<li data-nav-id=/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
<li data-nav-id=/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
<li data-nav-id=/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/navpatterns/1-patterns/security/>Security</a></li>
<li data-nav-id=/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/navpatterns/1-patterns/security/>Security</a><ul>
<li data-nav-id=/navpatterns/1-patterns/security/1-sensitive-data-encapsulation/ title="Sensitive Data Encapsulation" class=dd-item><a href=/navpatterns/1-patterns/security/1-sensitive-data-encapsulation/>Sensitive Data Encapsulation</a></li>
<li data-nav-id=/navpatterns/1-patterns/security/2-data-encryption/ title="Data Encryption" class=dd-item><a href=/navpatterns/1-patterns/security/2-data-encryption/>Data Encryption</a></li>
<li data-nav-id=/navpatterns/1-patterns/security/3-single-point-of-access/ title="Single Point of Access" class=dd-item><a href=/navpatterns/1-patterns/security/3-single-point-of-access/>Single Point of Access</a></li>
<li data-nav-id=/navpatterns/1-patterns/security/4-masked-text/ title="Masked Text" class=dd-item><a href=/navpatterns/1-patterns/security/4-masked-text/>Masked Text</a></li>
<li data-nav-id=/navpatterns/1-patterns/security/5-ssl-in-nav/ title="SSL in NAV" class=dd-item><a href=/navpatterns/1-patterns/security/5-ssl-in-nav/>SSL in NAV</a></li></ul></li>
<li data-nav-id=/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
<li data-nav-id=/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
<li data-nav-id=/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/navpatterns/1-patterns/singleton/>Singleton</a><ul>
@ -107,8 +112,22 @@ ALGuidelines.Dev
<li data-nav-id=/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
<li data-nav-id=/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/>Design</a><ul>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/by-reference-parameters/ title="By Reference Parameters" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/by-reference-parameters/>By Reference Parameters</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/class-coupling/ title="Class Coupling" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/class-coupling/>Class Coupling</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/cyclomatic-complexity/ title="Cyclomatic Complexity" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/cyclomatic-complexity/>Cyclomatic Complexity</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/encapsulate-local-functionality/ title="Encapsulate Local Functionality" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/encapsulate-local-functionality/>Encapsulate Local Functionality</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/findset-findfirst-findlast/ title="FINDSET FINDFIRST FINDLAST" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/findset-findfirst-findlast/>FINDSET FINDFIRST FINDLAST</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/initialized-variables/ title="Initialized Variables" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/initialized-variables/>Initialized Variables</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/maintainability-index/ title="Maintainability Index" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/maintainability-index/>Maintainability Index</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/parameter-placeholders/ title="Parameter Placeholders" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/parameter-placeholders/>Parameter Placeholders</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/static-object-invocation/ title="Static Object Invocation" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/static-object-invocation/>Static Object Invocation</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/unreachable-code/ title="Unreachable Code" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/unreachable-code/>Unreachable Code</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/unused-initialized-variables/ title="Unused Initialized Variables" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/unused-initialized-variables/>Unused Initialized Variables</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/unused-variables/ title="Unused Variables" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/unused-variables/>Unused Variables</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/variable-capacity-mismatch/ title="Variable Capacity Mismatch" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/variable-capacity-mismatch/>Variable Capacity Mismatch</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/design/with-scope-name-collision/ title="WITH Scope Name Collision" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/design/with-scope-name-collision/>WITH Scope Name Collision</a></li></ul></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally used DotNet Types" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally used DotNet Types</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
@ -121,7 +140,7 @@ ALGuidelines.Dev
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
<li data-nav-id=/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
@ -232,31 +251,38 @@ ALGuidelines.Dev
<h2 id=usage>Usage</h2>
<p>Define two functions in the setup or supplementary table: One for verifying if the needed information is available, and another for exposing the page that contains the fields that the user must update.</p>
<p>Call the code. For example:</p>
<p>Local IsXAvailable : Boolean<br>
If field X &lt;> '' then<br>
Exit(True)<br>
Exit(false)</p>
<p>VerifyAndSetX<br>
If IsXAvailable then<br>
Exit;<br>
If Confirm(&lsquo;Field X is missing a value. Do you want to update it now?') then<br>
Open the card page in edit mode</p>
<p>If not IsXAvailable then<br>
Error(Field X is missing a value. Please correct it.)</p>
<p>The calling code</p>
<p>..</p>
<p>SetupTable.VerifyAndSetX</p>
<p>..</p>
<h2 id=nav-specific-example>NAV Specific Example</h2>
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-AL data-lang=AL><span style=color:#66d9ef>Local</span> IsXAvailable : <span style=color:#66d9ef>Boolean</span>
<span style=color:#66d9ef>If</span> <span style=color:#66d9ef>field</span> X &lt;\&gt; <span style=color:#e6db74>&#39;&#39;</span> <span style=color:#66d9ef>then</span>
<span style=color:#66d9ef>Exit</span><span style=color:#f92672>(</span>True<span style=color:#f92672>)
</span><span style=color:#f92672></span><span style=color:#66d9ef>Exit</span><span style=color:#f92672>(</span>false<span style=color:#f92672>)
</span><span style=color:#f92672>
</span><span style=color:#f92672></span>VerifyAndSetX
<span style=color:#66d9ef>If</span> IsXAvailable <span style=color:#66d9ef>then</span>
<span style=color:#66d9ef>Exit</span>;
<span style=color:#66d9ef>If</span> Confirm<span style=color:#f92672>(</span><span style=color:#e6db74>&#39;Field X is missing a value. Do you want to update it now?&#39;</span><span style=color:#f92672>) </span><span style=color:#66d9ef>then</span>
Open the card <span style=color:#66d9ef>page</span> <span style=color:#66d9ef>in</span> edit mode
<span style=color:#66d9ef>If</span> <span style=color:#f92672>not</span> IsXAvailable <span style=color:#66d9ef>then</span>
Error<span style=color:#f92672>(</span><span style=color:#66d9ef>Field</span> X is missing a <span style=color:#66d9ef>value</span><span style=color:#f92672>. </span>Please correct it<span style=color:#f92672>.)
</span><span style=color:#f92672>
</span><span style=color:#f92672></span>The calling <span style=color:#66d9ef>code</span>
<span style=color:#f92672>..
</span><span style=color:#f92672>
</span><span style=color:#f92672></span>SetupTable<span style=color:#f92672>.</span>VerifyAndSetX
<span style=color:#f92672>..
</span></code></pre></div><h2 id=nav-specific-example>NAV Specific Example</h2>
<hr>
<p>In the <strong>Sales & Receivables Setup</strong> table (311) for the DK version, the following procedures have been added:</p>
<p>Local Procedure IsOIOUBLPathAvailable(&mldr;)</p>
<p>Procedure VerifyAndSetOIOUBLPath(&mldr;)</p>
<p>The code in the <strong>Sales & Receivables Setup</strong> table can now be called directly from the related processing codeunit, such as the <strong>Sales-Post + Print</strong> codeunit (82).</p>
<p>Were the code is called:</p>
<p>IF (&ldquo;EAN No.&rdquo; &lt;> &lsquo;') THEN</p>
<p>SalesSetup.VerifyAndSetOIOUBLPathSetup(SalesHeader.&ldquo;Document Type&rdquo;);</p>
<p>If the setup is not updated properly, the user is prompted to update it as follows.</p>
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-AL data-lang=AL><span style=color:#66d9ef>IF</span> <span style=color:#f92672>(</span>&#34;EAN No.&#34; &lt;\&gt; <span style=color:#e6db74>&#39;&#39;</span><span style=color:#f92672>) </span><span style=color:#66d9ef>THEN</span>
SalesSetup<span style=color:#f92672>.</span>VerifyAndSetOIOUBLPathSetup<span style=color:#f92672>(</span>SalesHeader<span style=color:#f92672>.</span>&#34;Document Type&#34;<span style=color:#f92672>)</span>;
</code></pre></div><p>If the setup is not updated properly, the user is prompted to update it as follows.</p>
<p><a href=0654.easy-update-1.png><img src=0654.easy-update-1.png alt=" "></a></p>
<p>Choosing <strong>Yes</strong> opens the related setup page.</p>
<p><a href=4024.easy-update-2.png><img src=4024.easy-update-2.png alt=" "></a></p>
@ -271,7 +297,9 @@ Error(Field X is missing a value. Please correct it.)</p>
<h2 id=related-topics>Related Topics</h2>
<p>The anti-pattern is to do a testfield on a field that is not in the table that you are currently updating.</p>
<p>The test field message can often be confusing because the pages are often named differently than the tables, which can lead to misunderstanding and context-switching.</p>
<p><a href="https://www.youtube.com/watch?v=oeASJN-zqTo&list=PLhZ3P-LY7CqmVszuvtJLujFyHpsVN0U_w&index=18">watch?v=oeASJN zqTo&list=PLhZ3P LY7CqmVszuvtJLujFyHpsVN0Uw&index=18</a></p>
<div style=position:relative;padding-bottom:56.25%;height:0;overflow:hidden>
<iframe src=https://www.youtube.com/embed/oeASJN-zqTo style=position:absolute;top:0;left:0;width:100%;height:100%;border:0 allowfullscreen title="YouTube Video"></iframe>
</div>
<footer class=footline>
</footer>
</main>
@ -284,12 +312,12 @@ Error(Field X is missing a value. Please correct it.)</p>
<div style=left:-1000px;overflow:scroll;position:absolute;top:-1000px;border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px>
<div style=border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px></div>
</div>
<script src=/js/clipboard.min.js?1638662727></script>
<script src=/js/perfect-scrollbar.min.js?1638662727></script>
<script src=/js/perfect-scrollbar.jquery.min.js?1638662727></script>
<script src=/js/jquery.svg.pan.zoom.js?1638662727></script>
<script src=/js/featherlight.min.js?1638662727></script>
<script src=/js/modernizr.custom-3.6.0.js?1638662727></script>
<script src=/js/relearn.js?1638662727></script>
<script src=/js/clipboard.min.js?1638739417></script>
<script src=/js/perfect-scrollbar.min.js?1638739417></script>
<script src=/js/perfect-scrollbar.jquery.min.js?1638739417></script>
<script src=/js/jquery.svg.pan.zoom.js?1638739417></script>
<script src=/js/featherlight.min.js?1638739417></script>
<script src=/js/modernizr.custom-3.6.0.js?1638739417></script>
<script src=/js/relearn.js?1638739417></script>
</body>
</html>