deploy: 552e37fedc
0
.nojekyll
Normal file
33
404.html
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>404 Page not found :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061750 rel=stylesheet media=print>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}p,li,ul{text-align:center}ul{list-style-type:none}</style>
|
||||
</head>
|
||||
<body data-url=/>
|
||||
<div id=body style=margin-left:0>
|
||||
<div id=overlay></div>
|
||||
<div id=chapter>
|
||||
<main id=body-inner>
|
||||
<h1>Error</h1>
|
||||
<p></p>
|
||||
<p>Woops. Looks like this page doesn't exist ¯\_(ツ)_/¯.</p>
|
||||
<p></p>
|
||||
<p><a href=/bcalhelp/>Go to homepage</a></p>
|
||||
<p><img src=/bcalhelp/images/gopher-404.jpg style=width:50% alt="Page not found!"></p>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
# Microsoft Open Source Code of Conduct
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
|
||||
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
|
||||
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
|
||||
21
LICENSE
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE
|
||||
33
README.md
|
|
@ -1,33 +0,0 @@
|
|||
# Project
|
||||
|
||||
> This repo has been populated by an initial template to help get you started. Please
|
||||
> make sure to update the content to build a great experience for community-building.
|
||||
|
||||
As the maintainer of this project, please make a few updates:
|
||||
|
||||
- Improving this README.MD file to provide a great experience
|
||||
- Updating SUPPORT.MD with content about this project's support experience
|
||||
- Understanding the security reporting process in SECURITY.MD
|
||||
- Remove this section from the README
|
||||
|
||||
## Contributing
|
||||
|
||||
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
||||
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
||||
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
|
||||
|
||||
When you submit a pull request, a CLA bot will automatically determine whether you need to provide
|
||||
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
|
||||
provided by the bot. You will only need to do this once across all repos using our CLA.
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
|
||||
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||
|
||||
## Trademarks
|
||||
|
||||
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
|
||||
trademarks or logos is subject to and must follow
|
||||
[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
|
||||
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
|
||||
Any use of third-party trademarks or logos are subject to those third-party's policies.
|
||||
41
SECURITY.md
|
|
@ -1,41 +0,0 @@
|
|||
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
|
||||
|
||||
## Security
|
||||
|
||||
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
|
||||
|
||||
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
|
||||
|
||||
## Reporting Security Issues
|
||||
|
||||
**Please do not report security vulnerabilities through public GitHub issues.**
|
||||
|
||||
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
|
||||
|
||||
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
|
||||
|
||||
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
|
||||
|
||||
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
|
||||
|
||||
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
|
||||
* Full paths of source file(s) related to the manifestation of the issue
|
||||
* The location of the affected source code (tag/branch/commit or direct URL)
|
||||
* Any special configuration required to reproduce the issue
|
||||
* Step-by-step instructions to reproduce the issue
|
||||
* Proof-of-concept or exploit code (if possible)
|
||||
* Impact of the issue, including how an attacker might exploit the issue
|
||||
|
||||
This information will help us triage your report more quickly.
|
||||
|
||||
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
|
||||
|
||||
## Preferred Languages
|
||||
|
||||
We prefer all communications to be in English.
|
||||
|
||||
## Policy
|
||||
|
||||
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
|
||||
|
||||
<!-- END MICROSOFT SECURITY.MD BLOCK -->
|
||||
25
SUPPORT.md
|
|
@ -1,25 +0,0 @@
|
|||
# TODO: The maintainer of this repo has not yet edited this file
|
||||
|
||||
**REPO OWNER**: Do you want Customer Service & Support (CSS) support for this product/project?
|
||||
|
||||
- **No CSS support:** Fill out this template with information about how to file issues and get help.
|
||||
- **Yes CSS support:** Fill out an intake form at [aka.ms/spot](https://aka.ms/spot). CSS will work with/help you to determine next steps. More details also available at [aka.ms/onboardsupport](https://aka.ms/onboardsupport).
|
||||
- **Not sure?** Fill out a SPOT intake as though the answer were "Yes". CSS will help you decide.
|
||||
|
||||
*Then remove this first heading from this SUPPORT.MD file before publishing your repo.*
|
||||
|
||||
# Support
|
||||
|
||||
## How to file issues and get help
|
||||
|
||||
This project uses GitHub Issues to track bugs and feature requests. Please search the existing
|
||||
issues before filing new issues to avoid duplicates. For new issues, file your bug or
|
||||
feature request as a new Issue.
|
||||
|
||||
For help and questions about using this project, please **REPO MAINTAINER: INSERT INSTRUCTIONS HERE
|
||||
FOR HOW TO ENGAGE REPO OWNERS OR COMMUNITY FOR HELP. COULD BE A STACK OVERFLOW TAG OR OTHER
|
||||
CHANNEL. WHERE WILL YOU HELP PEOPLE?**.
|
||||
|
||||
## Microsoft Support Policy
|
||||
|
||||
Support for this **PROJECT or PRODUCT** is limited to the resources listed above.
|
||||
231
bcbestpractices/index.html
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<link rel=alternate type=application/rss+xml href=/bcalhelp/bcbestpractices/index.xml title="BC AL Help">
|
||||
<meta name=description content>
|
||||
<title>BC Dev. Best Practices :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061749 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061749></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/bcbestpractices/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061749></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class="dd-item active parent"><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class=dd-item><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/BCBestPractices/_index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/bcbestpractices/ aria-disabled=true><span itemprop=name>BC Dev. Best Practices</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<div id=chapter>
|
||||
<main id=body-inner>
|
||||
<h1 id=business-central-best-practices>Business Central Best Practices</h1>
|
||||
<h2 id=coming-soon>Coming soon!</h2>
|
||||
<p>This section will be cover things that aren’t as simple as Design Patterns, but will help make sure your development is:</p>
|
||||
<ul>
|
||||
<li>high-performance</li>
|
||||
<li>complies with good designs</li>
|
||||
<li>has high maintability</li>
|
||||
</ul>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/bcpatterns/ title="BC Patterns"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/ title="NAV Patterns Archive"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061749></script>
|
||||
</body>
|
||||
</html>
|
||||
1
bcbestpractices/index.xml
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>BC Dev. Best Practices on BC AL Help</title><link>https://microsoft.github.io/bcalhelp/bcbestpractices/</link><description>Recent content in BC Dev. Best Practices on BC AL Help</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://microsoft.github.io/bcalhelp/bcbestpractices/index.xml" rel="self" type="application/rss+xml"/></channel></rss>
|
||||
226
bcpatterns/index.html
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<link rel=alternate type=application/rss+xml href=/bcalhelp/bcpatterns/index.xml title="BC AL Help">
|
||||
<meta name=description content>
|
||||
<title>BC Patterns :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061749 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061749></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/bcpatterns/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061749></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class="dd-item active parent"><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class=dd-item><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/BCPatterns/_index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/bcpatterns/ aria-disabled=true><span itemprop=name>BC Patterns</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<div id=chapter>
|
||||
<main id=body-inner>
|
||||
<h1 id=business-central-design-patterns>Business Central Design Patterns</h1>
|
||||
<h2 id=coming-soon>Coming soon!</h2>
|
||||
<p>This section will be all about the Design Patterns for BC and AL.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/welcome/ title=Welcome><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061749></script>
|
||||
</body>
|
||||
</html>
|
||||
1
bcpatterns/index.xml
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>BC Patterns on BC AL Help</title><link>https://microsoft.github.io/bcalhelp/bcpatterns/</link><description>Recent content in BC Patterns on BC AL Help</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://microsoft.github.io/bcalhelp/bcpatterns/index.xml" rel="self" type="application/rss+xml"/></channel></rss>
|
||||
222
categories/index.html
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<link rel=alternate type=application/rss+xml href=/bcalhelp/categories/index.xml title="BC AL Help">
|
||||
<meta name=description content>
|
||||
<title>Categories :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061750 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061750 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061750></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/categories/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061750></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class=dd-item><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/categories/ aria-disabled=true><span itemprop=name>Categories</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Categories</h1>
|
||||
<ul>
|
||||
</ul>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/related-links/ title="Related Links"><i class="fa fa-chevron-left"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061750></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061750></script>
|
||||
</body>
|
||||
</html>
|
||||
1
categories/index.xml
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Categories on BC AL Help</title><link>https://microsoft.github.io/bcalhelp/categories/</link><description>Recent content in Categories on BC AL Help</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://microsoft.github.io/bcalhelp/categories/index.xml" rel="self" type="application/rss+xml"/></channel></rss>
|
||||
48
css/auto-complete.css
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
.autocomplete-suggestions {
|
||||
text-align: left;
|
||||
cursor: default;
|
||||
border: 1px solid #ccc;
|
||||
border-top: 0;
|
||||
background: #fff;
|
||||
box-shadow: -1px 1px 3px rgba(0,0,0,.1);
|
||||
|
||||
/* core styles should not be changed */
|
||||
position: absolute;
|
||||
display: none;
|
||||
z-index: 9999;
|
||||
max-height: 254px;
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.autocomplete-suggestion {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
padding: 7px;
|
||||
line-height: 23px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.autocomplete-suggestion b {
|
||||
font-weight: normal;
|
||||
color: #1f8dd6;
|
||||
}
|
||||
|
||||
.autocomplete-suggestion.selected {
|
||||
background: #333;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.autocomplete-suggestion:hover {
|
||||
background: #444;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.autocomplete-suggestion > .context {
|
||||
font-size: 12px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
8
css/featherlight.min.css
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
* Featherlight - ultra slim jQuery lightbox
|
||||
* Version 1.7.13 - http://noelboss.github.io/featherlight/
|
||||
*
|
||||
* Copyright 2018, Noël Raoul Bossart (http://www.noelboss.com)
|
||||
* MIT Licensed.
|
||||
**/
|
||||
html.with-featherlight{overflow:hidden}.featherlight{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483647;text-align:center;white-space:nowrap;cursor:pointer;background:#333;background:rgba(0,0,0,0)}.featherlight:last-of-type{background:rgba(0,0,0,.8)}.featherlight:before{content:'';display:inline-block;height:100%;vertical-align:middle}.featherlight .featherlight-content{position:relative;text-align:left;vertical-align:middle;display:inline-block;overflow:auto;padding:25px 25px 0;border-bottom:25px solid transparent;margin-left:5%;margin-right:5%;max-height:95%;background:#fff;cursor:auto;white-space:normal}.featherlight .featherlight-inner{display:block}.featherlight link.featherlight-inner,.featherlight script.featherlight-inner,.featherlight style.featherlight-inner{display:none}.featherlight .featherlight-close-icon{position:absolute;z-index:9999;top:0;right:0;line-height:25px;width:25px;cursor:pointer;text-align:center;font-family:Arial,sans-serif;background:#fff;background:rgba(255,255,255,.3);color:#000;border:0;padding:0}.featherlight .featherlight-close-icon::-moz-focus-inner{border:0;padding:0}.featherlight .featherlight-image{width:100%}.featherlight-iframe .featherlight-content{border-bottom:0;padding:0;-webkit-overflow-scrolling:touch}.featherlight iframe{border:0}.featherlight *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:1024px){.featherlight .featherlight-content{margin-left:0;margin-right:0;max-height:98%;padding:10px 10px 0;border-bottom:10px solid transparent}}@media print{html.with-featherlight>*>:not(.featherlight){display:none}}
|
||||
5
css/fontawesome-all.min.css
vendored
Normal file
611
css/nucleus.css
Normal file
|
|
@ -0,0 +1,611 @@
|
|||
*, *::before, *::after {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box; }
|
||||
|
||||
@-webkit-viewport {
|
||||
width: device-width; }
|
||||
@-moz-viewport {
|
||||
width: device-width; }
|
||||
@-ms-viewport {
|
||||
width: device-width; }
|
||||
@-o-viewport {
|
||||
width: device-width; }
|
||||
@viewport {
|
||||
width: device-width; }
|
||||
html {
|
||||
font-size: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%; }
|
||||
|
||||
body {
|
||||
margin: 0; }
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block; }
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block;
|
||||
vertical-align: baseline; }
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0; }
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none; }
|
||||
|
||||
a {
|
||||
background: transparent;
|
||||
text-decoration: none; }
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0; }
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted; }
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold; }
|
||||
|
||||
dfn {
|
||||
font-style: italic; }
|
||||
|
||||
mark {
|
||||
background: #FFFF27;
|
||||
color: #333; }
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 0.8rem;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline; }
|
||||
|
||||
sup {
|
||||
top: -0.5em; }
|
||||
|
||||
sub {
|
||||
bottom: -0.25em; }
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%; }
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden; }
|
||||
|
||||
figure {
|
||||
margin: 1em 40px; }
|
||||
|
||||
hr {
|
||||
height: 0; }
|
||||
|
||||
pre {
|
||||
overflow: auto; }
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit;
|
||||
font: inherit;
|
||||
margin: 0; }
|
||||
|
||||
button {
|
||||
overflow: visible; }
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none; }
|
||||
|
||||
button,
|
||||
html input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
cursor: pointer; }
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default; }
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0; }
|
||||
|
||||
input {
|
||||
line-height: normal; }
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
padding: 0; }
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto; }
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; }
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none; }
|
||||
|
||||
legend {
|
||||
border: 0;
|
||||
padding: 0; }
|
||||
|
||||
textarea {
|
||||
overflow: auto; }
|
||||
|
||||
optgroup {
|
||||
font-weight: bold; }
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
table-layout: fixed;
|
||||
width: 100%; }
|
||||
|
||||
tr, td, th {
|
||||
vertical-align: middle; }
|
||||
|
||||
th, td {
|
||||
padding: 0.425rem 0; }
|
||||
|
||||
th {
|
||||
text-align: left; }
|
||||
|
||||
.container {
|
||||
width: 75em;
|
||||
margin: 0 auto;
|
||||
padding: 0; }
|
||||
@media only all and (min-width: 60em) and (max-width: 74.938em) {
|
||||
.container {
|
||||
width: 60em; } }
|
||||
@media only all and (min-width: 48em) and (max-width: 59.938em) {
|
||||
.container {
|
||||
width: 48em; } }
|
||||
@media only all and (min-width: 30.063em) and (max-width: 47.938em) {
|
||||
.container {
|
||||
width: 30em; } }
|
||||
@media only all and (max-width: 30em) {
|
||||
.container {
|
||||
width: 100%; } }
|
||||
|
||||
.grid {
|
||||
display: -webkit-box;
|
||||
display: -moz-box;
|
||||
display: box;
|
||||
display: -webkit-flex;
|
||||
display: -moz-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-flex-flow: row;
|
||||
-moz-flex-flow: row;
|
||||
flex-flow: row;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
@media only all and (max-width: 47.938em) {
|
||||
.grid {
|
||||
-webkit-flex-flow: row wrap;
|
||||
-moz-flex-flow: row wrap;
|
||||
flex-flow: row wrap; } }
|
||||
|
||||
.block {
|
||||
-webkit-box-flex: 1;
|
||||
-moz-box-flex: 1;
|
||||
box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
-moz-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
min-height: 0; }
|
||||
@media only all and (max-width: 47.938em) {
|
||||
.block {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 100%;
|
||||
-moz-flex: 0 100%;
|
||||
-ms-flex: 0 100%;
|
||||
flex: 0 100%; } }
|
||||
|
||||
@media only all and (max-width: 47.938em) {
|
||||
body [class*="size-"] {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 100%;
|
||||
-moz-flex: 0 100%;
|
||||
-ms-flex: 0 100%;
|
||||
flex: 0 100%; } }
|
||||
|
||||
.size-1-2 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 50%;
|
||||
-moz-flex: 0 50%;
|
||||
-ms-flex: 0 50%;
|
||||
flex: 0 50%; }
|
||||
|
||||
.size-1-3 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 33.33333%;
|
||||
-moz-flex: 0 33.33333%;
|
||||
-ms-flex: 0 33.33333%;
|
||||
flex: 0 33.33333%; }
|
||||
|
||||
.size-1-4 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 25%;
|
||||
-moz-flex: 0 25%;
|
||||
-ms-flex: 0 25%;
|
||||
flex: 0 25%; }
|
||||
|
||||
.size-1-5 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 20%;
|
||||
-moz-flex: 0 20%;
|
||||
-ms-flex: 0 20%;
|
||||
flex: 0 20%; }
|
||||
|
||||
.size-1-6 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 16.66667%;
|
||||
-moz-flex: 0 16.66667%;
|
||||
-ms-flex: 0 16.66667%;
|
||||
flex: 0 16.66667%; }
|
||||
|
||||
.size-1-7 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 14.28571%;
|
||||
-moz-flex: 0 14.28571%;
|
||||
-ms-flex: 0 14.28571%;
|
||||
flex: 0 14.28571%; }
|
||||
|
||||
.size-1-8 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 12.5%;
|
||||
-moz-flex: 0 12.5%;
|
||||
-ms-flex: 0 12.5%;
|
||||
flex: 0 12.5%; }
|
||||
|
||||
.size-1-9 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 11.11111%;
|
||||
-moz-flex: 0 11.11111%;
|
||||
-ms-flex: 0 11.11111%;
|
||||
flex: 0 11.11111%; }
|
||||
|
||||
.size-1-10 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 10%;
|
||||
-moz-flex: 0 10%;
|
||||
-ms-flex: 0 10%;
|
||||
flex: 0 10%; }
|
||||
|
||||
.size-1-11 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 9.09091%;
|
||||
-moz-flex: 0 9.09091%;
|
||||
-ms-flex: 0 9.09091%;
|
||||
flex: 0 9.09091%; }
|
||||
|
||||
.size-1-12 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 8.33333%;
|
||||
-moz-flex: 0 8.33333%;
|
||||
-ms-flex: 0 8.33333%;
|
||||
flex: 0 8.33333%; }
|
||||
|
||||
@media only all and (min-width: 48em) and (max-width: 59.938em) {
|
||||
.size-tablet-1-2 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 50%;
|
||||
-moz-flex: 0 50%;
|
||||
-ms-flex: 0 50%;
|
||||
flex: 0 50%; }
|
||||
|
||||
.size-tablet-1-3 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 33.33333%;
|
||||
-moz-flex: 0 33.33333%;
|
||||
-ms-flex: 0 33.33333%;
|
||||
flex: 0 33.33333%; }
|
||||
|
||||
.size-tablet-1-4 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 25%;
|
||||
-moz-flex: 0 25%;
|
||||
-ms-flex: 0 25%;
|
||||
flex: 0 25%; }
|
||||
|
||||
.size-tablet-1-5 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 20%;
|
||||
-moz-flex: 0 20%;
|
||||
-ms-flex: 0 20%;
|
||||
flex: 0 20%; }
|
||||
|
||||
.size-tablet-1-6 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 16.66667%;
|
||||
-moz-flex: 0 16.66667%;
|
||||
-ms-flex: 0 16.66667%;
|
||||
flex: 0 16.66667%; }
|
||||
|
||||
.size-tablet-1-7 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 14.28571%;
|
||||
-moz-flex: 0 14.28571%;
|
||||
-ms-flex: 0 14.28571%;
|
||||
flex: 0 14.28571%; }
|
||||
|
||||
.size-tablet-1-8 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 12.5%;
|
||||
-moz-flex: 0 12.5%;
|
||||
-ms-flex: 0 12.5%;
|
||||
flex: 0 12.5%; }
|
||||
|
||||
.size-tablet-1-9 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 11.11111%;
|
||||
-moz-flex: 0 11.11111%;
|
||||
-ms-flex: 0 11.11111%;
|
||||
flex: 0 11.11111%; }
|
||||
|
||||
.size-tablet-1-10 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 10%;
|
||||
-moz-flex: 0 10%;
|
||||
-ms-flex: 0 10%;
|
||||
flex: 0 10%; }
|
||||
|
||||
.size-tablet-1-11 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 9.09091%;
|
||||
-moz-flex: 0 9.09091%;
|
||||
-ms-flex: 0 9.09091%;
|
||||
flex: 0 9.09091%; }
|
||||
|
||||
.size-tablet-1-12 {
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
box-flex: 0;
|
||||
-webkit-flex: 0 8.33333%;
|
||||
-moz-flex: 0 8.33333%;
|
||||
-ms-flex: 0 8.33333%;
|
||||
flex: 0 8.33333%; } }
|
||||
@media only all and (max-width: 47.938em) {
|
||||
@supports not (flex-wrap: wrap) {
|
||||
.grid {
|
||||
display: block;
|
||||
-webkit-box-lines: inherit;
|
||||
-moz-box-lines: inherit;
|
||||
box-lines: inherit;
|
||||
-webkit-flex-wrap: inherit;
|
||||
-moz-flex-wrap: inherit;
|
||||
-ms-flex-wrap: inherit;
|
||||
flex-wrap: inherit; }
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
-webkit-box-flex: inherit;
|
||||
-moz-box-flex: inherit;
|
||||
box-flex: inherit;
|
||||
-webkit-flex: inherit;
|
||||
-moz-flex: inherit;
|
||||
-ms-flex: inherit;
|
||||
flex: inherit; } } }
|
||||
.first-block {
|
||||
-webkit-box-ordinal-group: 0;
|
||||
-webkit-order: -1;
|
||||
-ms-flex-order: -1;
|
||||
order: -1; }
|
||||
|
||||
.last-block {
|
||||
-webkit-box-ordinal-group: 2;
|
||||
-webkit-order: 1;
|
||||
-ms-flex-order: 1;
|
||||
order: 1; }
|
||||
|
||||
.fixed-blocks {
|
||||
-webkit-flex-flow: row wrap;
|
||||
-moz-flex-flow: row wrap;
|
||||
flex-flow: row wrap; }
|
||||
.fixed-blocks .block {
|
||||
-webkit-box-flex: inherit;
|
||||
-moz-box-flex: inherit;
|
||||
box-flex: inherit;
|
||||
-webkit-flex: inherit;
|
||||
-moz-flex: inherit;
|
||||
-ms-flex: inherit;
|
||||
flex: inherit;
|
||||
width: 25%; }
|
||||
@media only all and (min-width: 60em) and (max-width: 74.938em) {
|
||||
.fixed-blocks .block {
|
||||
width: 33.33333%; } }
|
||||
@media only all and (min-width: 48em) and (max-width: 59.938em) {
|
||||
.fixed-blocks .block {
|
||||
width: 50%; } }
|
||||
@media only all and (max-width: 47.938em) {
|
||||
.fixed-blocks .block {
|
||||
width: 100%; } }
|
||||
|
||||
body {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5; }
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0.85rem 0 1rem 0;
|
||||
text-rendering: optimizeLegibility; }
|
||||
|
||||
h1 {
|
||||
font-size: 3.25rem; }
|
||||
|
||||
h2 {
|
||||
font-size: 2.55rem; }
|
||||
|
||||
h3 {
|
||||
font-size: 2.15rem; }
|
||||
|
||||
h4 {
|
||||
font-size: 1.8rem; }
|
||||
|
||||
h5 {
|
||||
font-size: 1.4rem; }
|
||||
|
||||
h6 {
|
||||
font-size: 0.9rem; }
|
||||
|
||||
p {
|
||||
margin: 1rem 0; }
|
||||
|
||||
ul, ol {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem; }
|
||||
ul ul, ul ol, ol ul, ol ol {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0; }
|
||||
|
||||
blockquote {
|
||||
margin: 1.5rem 0;
|
||||
padding-left: 0.85rem; }
|
||||
|
||||
cite {
|
||||
display: block;
|
||||
font-size: 0.925rem; }
|
||||
cite:before {
|
||||
content: "\2014 \0020"; }
|
||||
|
||||
pre {
|
||||
margin: 1.5rem 0;
|
||||
padding: 0.938rem; }
|
||||
|
||||
code {
|
||||
vertical-align: bottom; }
|
||||
|
||||
small {
|
||||
font-size: 0.925rem; }
|
||||
|
||||
hr {
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-top: none;
|
||||
margin: 1.5rem 0; }
|
||||
|
||||
fieldset {
|
||||
border: 0;
|
||||
padding: 0.938rem;
|
||||
margin: 0 0 1rem 0; }
|
||||
|
||||
input,
|
||||
label,
|
||||
select {
|
||||
display: block; }
|
||||
|
||||
label {
|
||||
margin-bottom: 0.425rem; }
|
||||
label.required:after {
|
||||
content: "*"; }
|
||||
label abbr {
|
||||
display: none; }
|
||||
|
||||
textarea, input[type="email"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="url"], input[type="color"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"], select[multiple=multiple] {
|
||||
-webkit-transition: border-color;
|
||||
-moz-transition: border-color;
|
||||
transition: border-color;
|
||||
border-radius: 0.1875rem;
|
||||
margin-bottom: 0.85rem;
|
||||
padding: 0.425rem 0.425rem;
|
||||
width: 100%; }
|
||||
textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus {
|
||||
outline: none; }
|
||||
|
||||
textarea {
|
||||
resize: vertical; }
|
||||
|
||||
input[type="checkbox"], input[type="radio"] {
|
||||
display: inline;
|
||||
margin-right: 0.425rem; }
|
||||
|
||||
input[type="file"] {
|
||||
width: 100%; }
|
||||
|
||||
select {
|
||||
width: auto;
|
||||
max-width: 100%;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
button,
|
||||
input[type="submit"] {
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
border: inherit; }
|
||||
2
css/perfect-scrollbar.min.css
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* perfect-scrollbar v0.6.13 */
|
||||
.ps-container{-ms-touch-action:auto;touch-action:auto;overflow:hidden !important;-ms-overflow-style:none}@supports (-ms-overflow-style: none){.ps-container{overflow:auto !important}}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.ps-container{overflow:auto !important}}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block;background-color:transparent}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999;height:11px}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999;width:11px}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;opacity:0;-webkit-transition:background-color .2s linear, opacity .2s linear;-o-transition:background-color .2s linear, opacity .2s linear;-moz-transition:background-color .2s linear, opacity .2s linear;transition:background-color .2s linear, opacity .2s linear;bottom:0px;height:15px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;-o-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;-moz-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -webkit-border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;bottom:2px;height:6px}.ps-container>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x,.ps-container>.ps-scrollbar-x-rail:active>.ps-scrollbar-x{height:11px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;opacity:0;-webkit-transition:background-color .2s linear, opacity .2s linear;-o-transition:background-color .2s linear, opacity .2s linear;-moz-transition:background-color .2s linear, opacity .2s linear;transition:background-color .2s linear, opacity .2s linear;right:0;width:15px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;-o-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;-moz-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -webkit-border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;right:2px;width:6px}.ps-container>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y,.ps-container>.ps-scrollbar-y-rail:active>.ps-scrollbar-y{width:11px}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999;height:11px}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999;width:11px}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999}
|
||||
109
css/print.css
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
#body #navigation {
|
||||
display: none;
|
||||
}
|
||||
html,
|
||||
body #body{
|
||||
font-size: 8.9pt;
|
||||
}
|
||||
pre code {
|
||||
font-size: 8.3pt;
|
||||
}
|
||||
#body .padding {
|
||||
/* remove page padding - this can be set exactly in the print setup */
|
||||
padding: 0;
|
||||
}
|
||||
code.copy-to-clipboard-inline {
|
||||
border-bottom-right-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
border-right-width: 1px;
|
||||
}
|
||||
pre {
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
#body #top-bar{
|
||||
background-color: #fff; /* avoid background bleeding*/
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-radius: 0;
|
||||
padding-left: 0; /* for print, we want to align with the footer to ease the layout */
|
||||
color: #777;
|
||||
}
|
||||
#top-github-link {
|
||||
/* we don't need this while printing */
|
||||
display: none;
|
||||
}
|
||||
#body #breadcrumbs {
|
||||
width: 100%;
|
||||
}
|
||||
#body #breadcrumbs .links {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.copy-to-clipboard {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#body h1, #body h2, #body h3, #body h4, #body h5, #body h6 {
|
||||
/* better contrast for colored elements */
|
||||
color: black !important;
|
||||
}
|
||||
#body th, #body td,
|
||||
#body code, #body strong, #body b,
|
||||
#body li, #body dd, #body dt,
|
||||
#body p,
|
||||
#body .anchor,
|
||||
#body a {
|
||||
/* better contrast for colored elements */
|
||||
color: black;
|
||||
}
|
||||
|
||||
.progress {
|
||||
/* we don't need this while printing */
|
||||
display: none !important;
|
||||
}
|
||||
hr{
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
#chapter h1 {
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.footline {
|
||||
/* in print mode show footer line to signal reader the end of document */
|
||||
border-top: 1px solid #ddd;
|
||||
color: #777;
|
||||
margin-top: 1.5rem;
|
||||
padding-top: .75rem;
|
||||
}
|
||||
#body #body-inner a {
|
||||
/* in print we want to distinguish links in our content from
|
||||
normal text even if printed black/white;
|
||||
don't use a.highlight in selector to also get links that are
|
||||
put as HTML into markdown */
|
||||
text-decoration-line: underline;
|
||||
}
|
||||
#toc-menu {
|
||||
/* we don't need this while printing */
|
||||
display: none;
|
||||
}
|
||||
#sidebar-toggle-span {
|
||||
/* we don't need this while printing */
|
||||
display: none;
|
||||
}
|
||||
#breadcrumbs .links {
|
||||
display: inline;
|
||||
}
|
||||
#top-bar{
|
||||
/* the header is sticky which is not suitable for print; */
|
||||
position: inherit; /* IE11 doesn't know "initial" here */
|
||||
}
|
||||
#top-bar.is-sticky {
|
||||
box-shadow: initial;
|
||||
}
|
||||
#body .tab-nav-button:not(.active) {
|
||||
opacity: .5;
|
||||
}
|
||||
#head-tags {
|
||||
display: none;
|
||||
}
|
||||
mark {
|
||||
background: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
57
css/tabs.css
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
#body .tab-nav-button {
|
||||
border-width: 1px 1px 1px 1px !important;
|
||||
border-color: #ccc !important;
|
||||
border-radius: 4px 4px 0 0 !important;
|
||||
background-color: #eaeaea !important;
|
||||
-webkit-print-color-adjust: exact;
|
||||
color-adjust: exact;
|
||||
float: left;
|
||||
display: block;
|
||||
position: relative;
|
||||
margin-left: 4px;
|
||||
bottom: -1px;
|
||||
}
|
||||
#body .tab-nav-button:first-child {
|
||||
margin-left: 9px;
|
||||
}
|
||||
#body .tab-nav-button.active {
|
||||
background-color: #fff !important;
|
||||
border-bottom-color: #fff !important;
|
||||
}
|
||||
#body .tab-nav-button:not(.active) {
|
||||
border-bottom-color: #ddd !important;
|
||||
margin-top: 7px;
|
||||
padding-bottom: 2px !important;
|
||||
padding-top: 2px !important;
|
||||
}
|
||||
#body .tab-nav-button:not(.active) span {
|
||||
opacity: .8;
|
||||
}
|
||||
#body .tab-panel {
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
#body .tab-content {
|
||||
background-color: #fff;
|
||||
clear: both;
|
||||
-webkit-print-color-adjust: exact;
|
||||
color-adjust: exact;
|
||||
display: block;
|
||||
padding: 8px;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #ccc;
|
||||
z-index: 10;
|
||||
}
|
||||
#body .tab-content .tab-item{
|
||||
display: none;
|
||||
}
|
||||
|
||||
#body .tab-content .tab-item.active{
|
||||
display: block;
|
||||
}
|
||||
|
||||
#body .tab-item pre{
|
||||
margin-bottom: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
49
css/tags.css
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/* Tags */
|
||||
|
||||
#head-tags{
|
||||
margin-left:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
|
||||
#body .tags a.tag-link {
|
||||
display: inline-block;
|
||||
line-height: 2em;
|
||||
font-size: 0.8em;
|
||||
position: relative;
|
||||
margin: 0 16px 8px 0;
|
||||
padding: 0 10px 0 12px;
|
||||
background: #8451a1;
|
||||
|
||||
-webkit-border-bottom-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
-webkit-border-top-right-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#body .tags a.tag-link:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top:0;
|
||||
left: -.99em;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent #8451a1 transparent transparent;
|
||||
border-style: solid;
|
||||
border-width: 1em 1em 1em 0;
|
||||
}
|
||||
|
||||
#body .tags a.tag-link:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 1px;
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
-webkit-border-radius: 50%;
|
||||
border-radius: 100%;
|
||||
background: #fff;
|
||||
}
|
||||
30
css/theme-blue.css
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
:root {
|
||||
--MAIN-TEXT-color: #323232; /* Color of text by default */
|
||||
--MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5-h6 */
|
||||
--MAIN-LINK-color: #1C90F3; /* Color of links */
|
||||
--MAIN-LINK-HOVER-color: #167ad0; /* Color of hovered links */
|
||||
--MAIN-ANCHOR-color: #1C90F3; /* color of anchors on titles */
|
||||
|
||||
--MAIN-CODE-color: #e2e4e5; /* fallback color for code background */
|
||||
--MAIN-CODE-BG-color: #282a36; /* fallback color for code text */
|
||||
|
||||
--MENU-HOME-LINK-color: #323232; /* Color of the home button text */
|
||||
--MENU-HOME-LINK-HOVER-color: #5e5e5e; /* Color of the hovered home button text */
|
||||
|
||||
--MENU-HEADER-BG-color: #1C90F3; /* Background color of menu header */
|
||||
--MENU-HEADER-BORDER-color: #33a1ff; /*Color of menu header border */
|
||||
|
||||
--MENU-SEARCH-BG-color: #167ad0; /* Search field background color (by default borders + icons) */
|
||||
--MENU-SEARCH-BOX-color: #33a1ff; /* Override search field border color */
|
||||
--MENU-SEARCH-BOX-ICONS-color: #a1d2fd; /* Override search field icons color */
|
||||
|
||||
--MENU-SECTIONS-ACTIVE-BG-color: #20272b; /* Background color of the active section and its children */
|
||||
--MENU-SECTIONS-BG-color: #252c31; /* Background color of other sections */
|
||||
--MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */
|
||||
--MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */
|
||||
|
||||
--MENU-VISITED-color: #33a1ff; /* Color of 'page visited' icons in menu */
|
||||
--MENU-SECTION-HR-color: #20272b; /* Color of <hr> separator in menu */
|
||||
}
|
||||
30
css/theme-green.css
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
:root {
|
||||
--MAIN-TEXT-color: #323232; /* Color of text by default */
|
||||
--MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5-h6 */
|
||||
--MAIN-LINK-color: #599a3e; /* Color of links */
|
||||
--MAIN-LINK-HOVER-color: #3f6d2c; /* Color of hovered links */
|
||||
--MAIN-ANCHOR-color: #599a3e; /* color of anchors on titles */
|
||||
|
||||
--MAIN-CODE-color: #e2e4e5; /* fallback color for code background */
|
||||
--MAIN-CODE-BG-color: #282a36; /* fallback color for code text */
|
||||
|
||||
--MENU-HOME-LINK-color: #323232; /* Color of the home button text */
|
||||
--MENU-HOME-LINK-HOVER-color: #5e5e5e; /* Color of the hovered home button text */
|
||||
|
||||
--MENU-HEADER-BG-color: #74b559; /* Background color of menu header */
|
||||
--MENU-HEADER-BORDER-color: #9cd484; /*Color of menu header border */
|
||||
|
||||
--MENU-SEARCH-BG-color: #599a3e; /* Search field background color (by default borders + icons) */
|
||||
--MENU-SEARCH-BOX-color: #84c767; /* Override search field border color */
|
||||
--MENU-SEARCH-BOX-ICONS-color: #c7f7c4; /* Override search field icons color */
|
||||
|
||||
--MENU-SECTIONS-ACTIVE-BG-color: #1b211c; /* Background color of the active section and its children */
|
||||
--MENU-SECTIONS-BG-color: #222723; /* Background color of other sections */
|
||||
--MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */
|
||||
--MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */
|
||||
|
||||
--MENU-VISITED-color: #599a3e; /* Color of 'page visited' icons in menu */
|
||||
--MENU-SECTION-HR-color: #18211c; /* Color of <hr> separator in menu */
|
||||
}
|
||||
30
css/theme-red.css
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
:root {
|
||||
--MAIN-TEXT-color: #323232; /* Color of text by default */
|
||||
--MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5-h6 */
|
||||
--MAIN-LINK-color: #f31c1c; /* Color of links */
|
||||
--MAIN-LINK-HOVER-color: #d01616; /* Color of hovered links */
|
||||
--MAIN-ANCHOR-color: #f31c1c; /* color of anchors on titles */
|
||||
|
||||
--MAIN-CODE-color: #e2e4e5; /* fallback color for code background */
|
||||
--MAIN-CODE-BG-color: #282a36; /* fallback color for code text */
|
||||
|
||||
--MENU-HOME-LINK-color: #ccc; /* Color of the home button text */
|
||||
--MENU-HOME-LINK-HOVER-color: #e6e6e6; /* Color of the hovered home button text */
|
||||
|
||||
--MENU-HEADER-BG-color: #dc1010; /* Background color of menu header */
|
||||
--MENU-HEADER-BORDER-color: #e23131; /*Color of menu header border */
|
||||
|
||||
--MENU-SEARCH-BG-color: #b90000; /* Search field background color (by default borders + icons) */
|
||||
--MENU-SEARCH-BOX-color: #ef2020; /* Override search field border color */
|
||||
--MENU-SEARCH-BOX-ICONS-color: #fda1a1; /* Override search field icons color */
|
||||
|
||||
--MENU-SECTIONS-ACTIVE-BG-color: #2b2020; /* Background color of the active section and its children */
|
||||
--MENU-SECTIONS-BG-color: #312525; /* Background color of other sections */
|
||||
--MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */
|
||||
--MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */
|
||||
|
||||
--MENU-VISITED-color: #ff3333; /* Color of 'page visited' icons in menu */
|
||||
--MENU-SECTION-HR-color: #2b2020; /* Color of <hr> separator in menu */
|
||||
}
|
||||
30
css/theme-relearn.css
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
:root {
|
||||
--MAIN-TEXT-color: #323232; /* Color of text by default */
|
||||
--MAIN-TITLES-TEXT-color: #444753; /* Color of titles h2-h3-h4-h5-h6 */
|
||||
--MAIN-LINK-color: #486ac9; /* Color of links */
|
||||
--MAIN-LINK-HOVER-color: #0044ff; /* Color of hovered links */
|
||||
--MAIN-ANCHOR-color: #486ac9; /* color of anchors on titles */
|
||||
|
||||
--MAIN-CODE-color: #e2e4e5; /* fallback color for code background */
|
||||
--MAIN-CODE-BG-color: #282a36; /* fallback color for code text */
|
||||
|
||||
--MENU-HOME-LINK-color: #323232; /* Color of the home button text */
|
||||
--MENU-HOME-LINK-HOVER-color: #5e5e5e; /* Color of the hovered home button text */
|
||||
|
||||
--MENU-HEADER-BG-color: #7dc903; /* Background color of menu header */
|
||||
--MENU-HEADER-BORDER-color: #7dc903; /*Color of menu header border */
|
||||
|
||||
--MENU-SEARCH-BG-color: #3d414d; /* Search field background color (by default borders + icons) */
|
||||
--MENU-SEARCH-BOX-color: #efefef; /* Override search field border color */
|
||||
--MENU-SEARCH-BOX-ICONS-color: #ddd; /* Override search field icons color */
|
||||
|
||||
--MENU-SECTIONS-ACTIVE-BG-color: #202028; /* Background color of the active section and its children */
|
||||
--MENU-SECTIONS-BG-color: #282830; /* Background color of other sections */
|
||||
--MENU-SECTIONS-LINK-color: #bababa; /* Color of links in menu */
|
||||
--MENU-SECTIONS-LINK-HOVER-color: #fff; /* Color of links in menu, when hovered */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-color: #444; /* Color of active category text */
|
||||
--MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */
|
||||
|
||||
--MENU-VISITED-color: #506397; /* Color of 'page visited' icons in menu */
|
||||
--MENU-SECTION-HR-color: #28292e; /* Color of <hr> separator in menu */
|
||||
}
|
||||
1346
css/theme.css
Normal file
97
css/variant.css
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
body {
|
||||
color: var(--MAIN-TEXT-color) !important;
|
||||
}
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
color: var(--MAIN-TITLES-TEXT-color) !important;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--MAIN-LINK-color);
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: var(--MAIN-CODE-BG-color);
|
||||
color: var(--MAIN-CODE-color);
|
||||
}
|
||||
|
||||
.anchor {
|
||||
color: var(--MAIN-ANCHOR-color);
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--MAIN-LINK-HOVER-color);
|
||||
}
|
||||
|
||||
#sidebar ul li.visited > a .read-icon {
|
||||
color: var(--MENU-VISITED-color);
|
||||
}
|
||||
|
||||
#body a.highlight:after {
|
||||
background-color: var(--MAIN-LINK-HOVER-color);
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
background-color: var(--MENU-SECTIONS-BG-color);
|
||||
}
|
||||
|
||||
#sidebar #header-wrapper {
|
||||
background-color: var(--MENU-HEADER-BG-color);
|
||||
color: var(--MENU-SEARCH-BOX-color);
|
||||
border-color: var(--MENU-HEADER-BORDER-color);
|
||||
}
|
||||
|
||||
#sidebar .searchbox {
|
||||
border-color: var(--MENU-SEARCH-BOX-color);
|
||||
background-color: var(--MENU-SEARCH-BG-color);
|
||||
}
|
||||
|
||||
#sidebar ul.topics > li.parent, #sidebar ul.topics > li.active {
|
||||
background-color: var(--MENU-SECTIONS-ACTIVE-BG-color);
|
||||
}
|
||||
|
||||
#sidebar .searchbox * {
|
||||
color: var(--MENU-SEARCH-BOX-ICONS-color);
|
||||
}
|
||||
|
||||
#sidebar a {
|
||||
color: var(--MENU-SECTIONS-LINK-color);
|
||||
}
|
||||
|
||||
#sidebar a:hover {
|
||||
color: var(--MENU-SECTIONS-LINK-HOVER-color);
|
||||
}
|
||||
|
||||
#sidebar ul li.active > a {
|
||||
background-color: var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color);
|
||||
color: var(--MENU-SECTION-ACTIVE-CATEGORY-color) !important;
|
||||
}
|
||||
|
||||
#sidebar hr {
|
||||
border-color: var(--MENU-SECTION-HR-color);
|
||||
}
|
||||
|
||||
#body .tags a.tag-link {
|
||||
background-color: var(--MENU-HEADER-BG-color);
|
||||
}
|
||||
|
||||
#body .tags a.tag-link:before {
|
||||
border-right-color: var(--MENU-HEADER-BG-color);
|
||||
}
|
||||
|
||||
#homelinks {
|
||||
background-color: var(--MENU-HEADER-BG-color);
|
||||
border-bottom-color: var(--MENU-HEADER-BORDER-color);
|
||||
}
|
||||
|
||||
#homelinks a {
|
||||
color: var(--MENU-HOME-LINK-color);
|
||||
}
|
||||
|
||||
#homelinks a:hover {
|
||||
color: var(--MENU-HOME-LINK-HOVER-color);
|
||||
}
|
||||
|
||||
#sidebar .nav-title {
|
||||
color: var(--MENU-SECTIONS-LINK-HOVER-color) !important;
|
||||
}
|
||||
BIN
fonts/WorkSans-Bold.woff
Normal file
BIN
fonts/WorkSans-Bold.woff2
Normal file
BIN
fonts/WorkSans-ExtraLight.woff
Normal file
BIN
fonts/WorkSans-ExtraLight.woff2
Normal file
BIN
fonts/WorkSans-Light.woff
Normal file
BIN
fonts/WorkSans-Light.woff2
Normal file
BIN
fonts/WorkSans-Medium.woff
Normal file
BIN
fonts/WorkSans-Medium.woff2
Normal file
BIN
fonts/WorkSans-Regular.woff
Normal file
BIN
fonts/WorkSans-Regular.woff2
Normal file
1
images/clippy.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="896" height="1024"><path d="M128 768h256v64H128v-64zm320-384H128v64h320v-64zm128 192V448L384 640l192 192V704h320V576H576zm-288-64H128v64h160v-64zM128 704h160v-64H128v64zm576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z"/></svg>
|
||||
|
After Width: | Height: | Size: 509 B |
BIN
images/gopher-404.jpg
Normal file
|
After Width: | Height: | Size: 201 KiB |
217
index.html
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<link rel=alternate type=application/rss+xml href=/bcalhelp/index.xml title="BC AL Help">
|
||||
<link rel=alternate type=application/json href=/bcalhelp/index.json title="BC AL Help">
|
||||
<meta name=description content>
|
||||
<title>Home :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061749 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061749></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061749></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class=dd-item><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle><i class="fas fa-bars"></i> navigation</a>
|
||||
</span>
|
||||
<h2 id=business-central-design-patterns--best-practices>Business Central Design Patterns & Best Practices</h2>
|
||||
<p>This site is meant to house some of the community’s knowledge about Microsoft Dynamics 365 Business Central AL Development best practices, particularly around hosting Design Patterns.</p>
|
||||
<h3 id=what-are-design-patterns>What are Design Patterns?</h3>
|
||||
<p>To quote the original NAV Team blog post about the NAV Design Patterns:</p>
|
||||
<blockquote>
|
||||
<p>A team of people interested in NAV application design has come together to work on naming and surfacing design solutions to common NAV business needs. When those solutions are generic enough to be applied in various places of the NAV application, with slight variations on implementation but mainly respecting the same base concepts, we can describe them as NAV design patterns.</p>
|
||||
</blockquote>
|
||||
<p>A design pattern is a repeatable template of how to solve a common development challenge.</p>
|
||||
<h3 id=history-of-nav-design-patterns>History of “NAV Design Patterns”</h3>
|
||||
<p>In 2013, Microsoft NAV Dev Team and prominent members of the community collaborated on a Community and Microsoft collection of commonly needed / used Design Patterns.</p>
|
||||
<p>For some history on this, Waldo’s posts <a href=https://www.waldo.be/2013/06/14/code-is-poetry/>Code is Poetry</a> and <a href=https://www.waldo.be/2013/08/28/design-is-philosophy-2/>Design is Philosophy</a> are a great read.</p>
|
||||
<h3 id=contributing>Contributing</h3>
|
||||
<p>Contributions to this project are <a href=https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license>released</a> to the public under the <a href=https://github.com/BC-Design-Patterns/AL-Dev-Help/blob/main/LICENSE>project’s open source license</a>.</p>
|
||||
<p>This project adheres to the <a href=http://contributor-covenant.org/>Contributor Covenant Code of Conduct</a>.
|
||||
By participating, you are expected to uphold this code.</p>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-next" href=/bcalhelp/welcome/ title=Welcome><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061749></script>
|
||||
</body>
|
||||
</html>
|
||||
1
index.json
Normal file
4
index.xml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on BC AL Help</title><link>https://microsoft.github.io/bcalhelp/</link><description>Recent content in Home on BC AL Help</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://microsoft.github.io/bcalhelp/index.xml" rel="self" type="application/rss+xml"/><item><title>Welcome</title><link>https://microsoft.github.io/bcalhelp/welcome/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://microsoft.github.io/bcalhelp/welcome/</guid><description>Chapter X Some Chapter title Lorem Ipsum.</description></item><item><title>BC Patterns</title><link>https://microsoft.github.io/bcalhelp/bcpatterns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://microsoft.github.io/bcalhelp/bcpatterns/</guid><description>Business Central Design Patterns Coming soon! This section will be all about the Design Patterns for BC and AL.</description></item><item><title>BC Dev. Best Practices</title><link>https://microsoft.github.io/bcalhelp/bcbestpractices/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://microsoft.github.io/bcalhelp/bcbestpractices/</guid><description>Business Central Best Practices Coming soon! This section will be cover things that aren&rsquo;t as simple as Design Patterns, but will help make sure your development is:
|
||||
high-performance complies with good designs has high maintability</description></item><item><title>NAV Patterns Archive</title><link>https://microsoft.github.io/bcalhelp/navpatterns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://microsoft.github.io/bcalhelp/navpatterns/</guid><description>NAV Patterns Archive About the archive This section of the site is a careful reproduction of the content of the Original Microsoft Community NAV Design Patterns project, created with permission.
|
||||
Reading the archive Bear in mind, many of the style and formatting guidelines in this section have been brought forward into:
|
||||
The automatic formatting provided by the AL Extension The Code Analyzers Additionally, a variety of topics around the Windows Client and DotNet are outdated, and should only be used for either reference or if working in older environments.</description></item></channel></rss>
|
||||
3
js/auto-complete.js
Normal file
7
js/clipboard.min.js
vendored
Normal file
9
js/featherlight.min.js
vendored
Normal file
2
js/jquery.min.js
vendored
Normal file
637
js/jquery.svg.pan.zoom.js
Normal file
|
|
@ -0,0 +1,637 @@
|
|||
// Generated by CoffeeScript 1.10.0
|
||||
|
||||
/*
|
||||
jQuery SVG Pan Zoom v1.0.2, June 2015
|
||||
|
||||
Author: Daniel Hoffmann Bernardes (daniel.hoffmann.bernardes@gmail.com)
|
||||
|
||||
Repository: https://github.com/DanielHoffmann/jquery-svg-pan-zoom/
|
||||
|
||||
jQuery plugin to enable pan and zoom in SVG images either programmatically or through mouse/touch events.
|
||||
|
||||
[Demo page](http://danielhoffmann.github.io/jquery-svg-pan-zoom/)
|
||||
|
||||
* Features
|
||||
- Programmatically manipulate the SVG viewBox
|
||||
- Mouse and touch events to pan the SVG viewBox
|
||||
- Mousewheel events to zoom in or out the SVG viewBox
|
||||
- Animations
|
||||
- Mousewheel zooming keeps the cursor over the same coordinates relative to the image (A.K.A. GoogleMaps-like zoom)
|
||||
- Limiting the navigable area
|
||||
|
||||
* Requirements
|
||||
|
||||
jQuery
|
||||
|
||||
SVG-enabled browser (does not work with SVG work-arounds that use Flash)
|
||||
|
||||
* The viewBox
|
||||
The viewBox is an attribute of SVG images that defines the area of the SVG that is visible, it is defined by 4 numbers: X, Y, Width, Height. These numbers together specify the visible area. This plugin works by manipulating these four numbers. For example, moving the image to the right alters the X value while zooming in reduces Width and Height.
|
||||
|
||||
|
||||
* Usage
|
||||
```javascript
|
||||
var svgPanZoom= $("svg").svgPanZoom(options)
|
||||
```
|
||||
|
||||
If the selection has more than one element `svgPanZoom` will return an array with a SvgPanZoom object for each image in the same order of the selection. If only one element is selected then the return is a single SvgPanZoom object. If no elements are selected the above call returns `null`
|
||||
|
||||
The returned SvgPanZoom object contains all options, these options can be overriden at any time directly, for example to disable mouseWheel events simply:
|
||||
|
||||
```javascript
|
||||
svgPanZoom.events.mouseWheel= false
|
||||
```
|
||||
|
||||
|
||||
the SvgPanZoom object also has methods for manipulating the viewBox programmatically. For example:
|
||||
|
||||
```javascript
|
||||
svgPanZoom.zoomIn()
|
||||
```
|
||||
|
||||
will zoomIn the image using options.zoomFactor.
|
||||
|
||||
* Building
|
||||
This project requires coffeescript to be installed in order to build.
|
||||
|
||||
`coffee -m --compile --output compiled/ src/`
|
||||
|
||||
* Options
|
||||
|
||||
```javascript
|
||||
Options:
|
||||
{
|
||||
events: {
|
||||
mouseWheel: boolean (true), // enables mouse wheel zooming events
|
||||
doubleClick: boolean (true), // enables double-click to zoom-in events
|
||||
drag: boolean (true), // enables drag and drop to move the SVG events
|
||||
dragCursor: string "move" // cursor to use while dragging the SVG
|
||||
},
|
||||
animationTime: number (300), // time in milliseconds to use as default for animations. Set 0 to remove the animation
|
||||
zoomFactor: number (0.25), // how much to zoom-in or zoom-out
|
||||
maxZoom: number (3), //maximum zoom in, must be a number bigger than 1
|
||||
panFactor: (number (100), // how much to move the viewBox when calling .panDirection() methods
|
||||
initialViewBox: { // the initial viewBox, if null or undefined will try to use the viewBox set in the svg tag. Also accepts string in the format "X Y Width Height"
|
||||
x: number (0) // the top-left corner X coordinate
|
||||
y: number (0) // the top-left corner Y coordinate
|
||||
width: number (1000) // the width of the viewBox
|
||||
height: number (1000) // the height of the viewBox
|
||||
},
|
||||
limits: { // the limits in which the image can be moved. If null or undefined will use the initialViewBox plus 15% in each direction
|
||||
x: number (-150)
|
||||
y: number (-150)
|
||||
x2: number (1150)
|
||||
y2: number (1150)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
* Methods
|
||||
|
||||
- pan
|
||||
|
||||
```javascript
|
||||
svgPanZoom.panLeft(amount, animationTime)
|
||||
svgPanZoom.panRight(amount, animationTime)
|
||||
svgPanZoom.panUp(amount, animationTime)
|
||||
svgPanZoom.panDown(amount, animationTime)
|
||||
```
|
||||
|
||||
Moves the SVG viewBox in the specified direction. Parameters:
|
||||
- amount: Number, optional. How much to move the viewBox, defaults to options.panFactor.
|
||||
- animationTime: Number, optional. How long the animation should last, defaults to options.animationTime.
|
||||
|
||||
|
||||
- zoom
|
||||
|
||||
```javascript
|
||||
svgPanZoom.zoomIn(animationTime)
|
||||
svgPanZoom.zoomOut(animationTime)
|
||||
```
|
||||
|
||||
Zooms the viewBox. Parameters:
|
||||
- animationTime: Number, optional. How long the animation should last, defaults to options.animationTime.
|
||||
|
||||
|
||||
- reset
|
||||
|
||||
```javascript
|
||||
svgPanZoom.reset()
|
||||
```
|
||||
|
||||
Resets the SVG to options.initialViewBox values.
|
||||
|
||||
- getViewBox
|
||||
|
||||
```javascript
|
||||
svgPanZoom.getViewBox()
|
||||
```
|
||||
|
||||
Returns the viewbox in this format:
|
||||
|
||||
```javascript
|
||||
{
|
||||
x: number
|
||||
y: number
|
||||
width: number
|
||||
height: number
|
||||
}
|
||||
```
|
||||
|
||||
- setViewBox
|
||||
|
||||
```javascript
|
||||
svgPanZoom.setViewBox(x, y, width, height, animationTime)
|
||||
```
|
||||
|
||||
Changes the viewBox to the specified coordinates. Will respect the `options.limits` adapting the viewBox if needed (moving or reducing it to fit into `options.limits`
|
||||
- x: Number, the new x coodinate of the top-left corner
|
||||
- y: Number, the new y coodinate of the top-left corner
|
||||
- width: Number, the new width of the viewBox
|
||||
- height: Number, the new height of the viewBox
|
||||
- animationTime: Number, optional. How long the animation should last, defaults to options.animationTime.
|
||||
|
||||
- setCenter
|
||||
|
||||
```javascript
|
||||
svgPanZoom.setCenter(x, y, animationTime)
|
||||
```
|
||||
|
||||
Sets the center of the SVG. Parameters:
|
||||
- x: Number, the new x coordinate of the center
|
||||
- y: Number, the new y coordinate of the center
|
||||
- animationTime: Number, optional. How long the animation should last, defaults to options.animationTime.
|
||||
|
||||
|
||||
|
||||
|
||||
* Notes:
|
||||
|
||||
- Only works in SVGs inlined in the HTML. You can use $.load() to load the SVG image in the page using AJAX and call $().svgPanZoom() in the callback
|
||||
- Touch pinch events to zoom not yet supported
|
||||
- This plugin does not create any controls (like arrows to move the image) on top of the SVG. These controls are simple to create manually and they can call the methods to move the image.
|
||||
- Do not manipulate the SVG viewBox attribute manually, use SvgPanZoom.setViewBox() instead
|
||||
|
||||
Copyright (C) 2014 Daniel Hoffmann Bernardes, Ícaro Technologies
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
(function() {
|
||||
var hasProp = {}.hasOwnProperty;
|
||||
|
||||
(function($) {
|
||||
var checkLimits, defaultOptions, defaultViewBox, getViewBoxCoordinatesFromEvent, parseViewBoxString;
|
||||
defaultOptions = {
|
||||
events: {
|
||||
mouseWheel: true,
|
||||
doubleClick: true,
|
||||
drag: true,
|
||||
dragCursor: "move"
|
||||
},
|
||||
animationTime: 300,
|
||||
zoomFactor: 0.25,
|
||||
maxZoom: 3,
|
||||
panFactor: 100,
|
||||
initialViewBox: null,
|
||||
limits: null
|
||||
};
|
||||
defaultViewBox = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 1000,
|
||||
height: 1000
|
||||
};
|
||||
|
||||
/**
|
||||
* Check the limits of the view box, return a new viewBox that respects the limits while keeping
|
||||
* the original view box size if possible. If the view box needs to be reduced, the returned view
|
||||
* box will keep the aspect ratio of the original view box.
|
||||
*
|
||||
* @param {Object} viewBox
|
||||
* The original view box. Takes numbers, in the format `{x, y, width, height}`.
|
||||
*
|
||||
* @param {Object} limits
|
||||
* Extents which can be shown, in the view box coordinate system. Takes numbers in the format
|
||||
* `{x, y, x2, y2}`.
|
||||
*
|
||||
* @return {Object} viewBox
|
||||
* A new view box object, squeezed into the limits. Contains numbers, in the format `{x, y,
|
||||
* width, height}`.
|
||||
*/
|
||||
checkLimits = function(viewBox, limits) {
|
||||
var limitsHeight, limitsWidth, reductionFactor, vb;
|
||||
vb = $.extend({}, viewBox);
|
||||
limitsWidth = Math.abs(limits.x2 - limits.x);
|
||||
limitsHeight = Math.abs(limits.y2 - limits.y);
|
||||
if (vb.width > limitsWidth) {
|
||||
if (vb.height > limitsHeight) {
|
||||
if (limitsWidth > limitsHeight) {
|
||||
reductionFactor = limitsHeight / vb.height;
|
||||
vb.height = limitsHeight;
|
||||
vb.width = vb.width * reductionFactor;
|
||||
} else {
|
||||
reductionFactor = limitsWidth / vb.width;
|
||||
vb.width = limitsWidth;
|
||||
vb.height = vb.height * reductionFactor;
|
||||
}
|
||||
} else {
|
||||
reductionFactor = limitsWidth / vb.width;
|
||||
vb.width = limitsWidth;
|
||||
vb.height = vb.height * reductionFactor;
|
||||
}
|
||||
} else if (vb.height > limitsHeight) {
|
||||
reductionFactor = limitsHeight / vb.height;
|
||||
vb.height = limitsHeight;
|
||||
vb.width = vb.width * reductionFactor;
|
||||
}
|
||||
if (vb.x < limits.x) {
|
||||
vb.x = limits.x;
|
||||
}
|
||||
if (vb.y < limits.y) {
|
||||
vb.y = limits.y;
|
||||
}
|
||||
if (vb.x + vb.width > limits.x2) {
|
||||
vb.x = limits.x2 - vb.width;
|
||||
}
|
||||
if (vb.y + vb.height > limits.y2) {
|
||||
vb.y = limits.y2 - vb.height;
|
||||
}
|
||||
return vb;
|
||||
};
|
||||
|
||||
/**
|
||||
* Parse the viewbox string as defined in the spec for the svg tag.
|
||||
*
|
||||
* @param {String} viewBoxString
|
||||
* A valid value of the `viewBox` attribute.
|
||||
*
|
||||
* @return {Object} viewBox
|
||||
* A view box object. Contains numbers, in the format `{x, y, width, height}`.
|
||||
*/
|
||||
parseViewBoxString = function(string) {
|
||||
var vb;
|
||||
vb = string.replace("\s+", " ").split(" ");
|
||||
return vb = {
|
||||
x: parseFloat(vb[0]),
|
||||
y: parseFloat(vb[1]),
|
||||
width: parseFloat(vb[2]),
|
||||
height: parseFloat(vb[3])
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the mouse or first touch position from the `event`, relative to the SVG viewBox.
|
||||
*
|
||||
* @param {SVGElement} svgRoot
|
||||
* The `<svg>` DOM object
|
||||
*
|
||||
* @param {MouseEvent|TouchEvent|jQueryEvent} event
|
||||
* The DOM or jQuery event.
|
||||
*
|
||||
* @return {Object}
|
||||
* Coordinates of the event. Contains numbers, in the format `{x, y}`.
|
||||
*/
|
||||
getViewBoxCoordinatesFromEvent = function(svgRoot, event) {
|
||||
var ctm, foo, pos;
|
||||
foo = {
|
||||
x: null,
|
||||
y: null
|
||||
};
|
||||
if (event.type === "touchstart" || event.type === "touchmove") {
|
||||
if ((event.originalEvent != null) && (event.touches == null)) {
|
||||
foo.x = event.originalEvent.touches[0].clientX;
|
||||
foo.y = event.originalEvent.touches[0].clientY;
|
||||
} else {
|
||||
foo.x = event.touches[0].clientX;
|
||||
foo.y = event.touches[0].clientY;
|
||||
}
|
||||
} else {
|
||||
if (event.clientX != null) {
|
||||
foo.x = event.clientX;
|
||||
foo.y = event.clientY;
|
||||
} else {
|
||||
foo.x = event.originalEvent.clientX;
|
||||
foo.y = event.originalEvent.clientY;
|
||||
}
|
||||
}
|
||||
pos = svgRoot.createSVGPoint();
|
||||
pos.x = parseInt(foo.x, 10);
|
||||
pos.y = parseInt(foo.y, 10);
|
||||
ctm = svgRoot.getScreenCTM();
|
||||
ctm = ctm.inverse();
|
||||
pos = pos.matrixTransform(ctm);
|
||||
return pos;
|
||||
};
|
||||
return $.fn.svgPanZoom = function(options) {
|
||||
var ret;
|
||||
ret = [];
|
||||
this.each(function() {
|
||||
var $animationDiv, dragStarted, horizontalSizeIncrement, key, opts, preventClick, value, vb, verticalSizeIncrement, viewBox;
|
||||
opts = $.extend(true, {}, defaultOptions, options);
|
||||
opts.$svg = $(this);
|
||||
if (opts.animationTime == null) {
|
||||
opts.animationTime = 0;
|
||||
}
|
||||
opts.$svg[0].setAttribute("preserveAspectRatio", "xMidYMid meet");
|
||||
vb = $.extend({}, this.viewBox.baseVal);
|
||||
if (vb.x == null) {
|
||||
vb.x = 0;
|
||||
}
|
||||
if (vb.y == null) {
|
||||
vb.y = 0;
|
||||
}
|
||||
if (vb.width == null) {
|
||||
vb.width = 0;
|
||||
}
|
||||
if (vb.height == null) {
|
||||
vb.height = 0;
|
||||
}
|
||||
if (opts.initialViewBox != null) {
|
||||
if (typeof opts.initialViewBox === "string") {
|
||||
vb = parseViewBoxString(opts.initialViewBox);
|
||||
} else if (typeof opts.initialViewBox === "object") {
|
||||
vb = $.extend({}, defaultViewBox, opts.initialViewBox);
|
||||
} else {
|
||||
throw "initialViewBox is of invalid type";
|
||||
}
|
||||
} else if (vb.x === 0 && vb.y === 0 && vb.width === 0 && vb.height === 0) {
|
||||
vb = defaultViewBox;
|
||||
}
|
||||
viewBox = vb;
|
||||
opts.initialViewBox = $.extend({}, viewBox);
|
||||
if (opts.limits == null) {
|
||||
horizontalSizeIncrement = viewBox.width * 0.15;
|
||||
verticalSizeIncrement = viewBox.height * 0.15;
|
||||
opts.limits = {
|
||||
x: viewBox.x - horizontalSizeIncrement,
|
||||
y: viewBox.y - verticalSizeIncrement,
|
||||
x2: viewBox.x + viewBox.width + horizontalSizeIncrement,
|
||||
y2: viewBox.y + viewBox.height + verticalSizeIncrement
|
||||
};
|
||||
}
|
||||
opts.reset = function() {
|
||||
var inivb;
|
||||
inivb = this.initialViewBox;
|
||||
this.setViewBox(inivb.x, inivb.y, inivb.width, inivb.height, 0);
|
||||
};
|
||||
opts.getViewBox = function() {
|
||||
return $.extend({}, viewBox);
|
||||
};
|
||||
$animationDiv = $("<div></div>");
|
||||
opts.setViewBox = function(x, y, width, height, animationTime) {
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
if (animationTime > 0) {
|
||||
$animationDiv.css({
|
||||
left: viewBox.x + "px",
|
||||
top: viewBox.y + "px",
|
||||
width: viewBox.width + "px",
|
||||
height: viewBox.height + "px"
|
||||
});
|
||||
}
|
||||
viewBox = {
|
||||
x: x != null ? x : viewBox.x,
|
||||
y: y != null ? y : viewBox.y,
|
||||
width: width ? width : viewBox.width,
|
||||
height: height ? height : viewBox.height
|
||||
};
|
||||
viewBox = checkLimits(viewBox, this.limits);
|
||||
if (animationTime > 0) {
|
||||
$animationDiv.stop().animate({
|
||||
left: viewBox.x,
|
||||
top: viewBox.y,
|
||||
width: viewBox.width,
|
||||
height: viewBox.height
|
||||
}, {
|
||||
duration: animationTime,
|
||||
easing: "linear",
|
||||
step: (function(value, properties) {
|
||||
var $div;
|
||||
$div = $animationDiv;
|
||||
this.$svg[0].setAttribute("viewBox", ($div.css("left").slice(0, -2)) + " " + ($div.css("top").slice(0, -2)) + " " + ($div.css("width").slice(0, -2)) + " " + ($div.css("height").slice(0, -2)));
|
||||
}).bind(this)
|
||||
});
|
||||
} else {
|
||||
this.$svg[0].setAttribute("viewBox", viewBox.x + " " + viewBox.y + " " + viewBox.width + " " + viewBox.height);
|
||||
}
|
||||
};
|
||||
opts.panLeft = function(amount, animationTime) {
|
||||
if (amount == null) {
|
||||
amount = this.panFactor;
|
||||
}
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
this.panRight(-amount, animationTime);
|
||||
};
|
||||
opts.panRight = function(amount, animationTime) {
|
||||
if (amount == null) {
|
||||
amount = this.panFactor;
|
||||
}
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
this.setViewBox(viewBox.x + amount, null, null, null, animationTime);
|
||||
};
|
||||
opts.panUp = function(amount, animationTime) {
|
||||
if (amount == null) {
|
||||
amount = this.panFactor;
|
||||
}
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
this.panDown(-amount, animationTime);
|
||||
};
|
||||
opts.panDown = function(amount, animationTime) {
|
||||
if (amount == null) {
|
||||
amount = this.panFactor;
|
||||
}
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
this.setViewBox(null, viewBox.y + amount, null, null, animationTime);
|
||||
};
|
||||
opts.zoomIn = function(amount, animationTime) {
|
||||
if (amount == null) {
|
||||
amount = this.zoomFactor;
|
||||
}
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
this.zoomOut(-amount, animationTime);
|
||||
};
|
||||
opts.zoomOut = function(amount, animationTime) {
|
||||
var center, newHeight, newWidth;
|
||||
if (amount == null) {
|
||||
amount = this.zoomFactor;
|
||||
}
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
if (amount === 0) {
|
||||
return;
|
||||
} else if (amount < 0) {
|
||||
amount = Math.abs(amount);
|
||||
newWidth = viewBox.width / (1 + amount);
|
||||
newHeight = viewBox.height / (1 + amount);
|
||||
} else {
|
||||
newWidth = viewBox.width * (1 + amount);
|
||||
newHeight = viewBox.height * (1 + amount);
|
||||
}
|
||||
center = {
|
||||
x: viewBox.x + viewBox.width / 2,
|
||||
y: viewBox.y + viewBox.height / 2
|
||||
};
|
||||
this.setViewBox(center.x - newWidth / 2, center.y - newWidth / 2, newWidth, newHeight, animationTime);
|
||||
};
|
||||
opts.setCenter = function(x, y, animationTime) {
|
||||
if (animationTime == null) {
|
||||
animationTime = this.animationTime;
|
||||
}
|
||||
this.setViewBox(x - viewBox.width / 2, y - viewBox.height / 2, viewBox.width, viewBox.height, animationTime);
|
||||
};
|
||||
for (key in opts) {
|
||||
if (!hasProp.call(opts, key)) continue;
|
||||
value = opts[key];
|
||||
if (typeof value === "function") {
|
||||
opts.key = value.bind(opts);
|
||||
}
|
||||
}
|
||||
opts.$svg.on("mousewheel DOMMouseScroll MozMousePixelScroll", (function(ev) {
|
||||
var delta, minHeight, minWidth, newMousePosition, newViewBox, newcenter, oldDistanceFromCenter, oldMousePosition, oldViewBox, oldcenter, reductionFactor;
|
||||
delta = parseInt(ev.originalEvent.wheelDelta || -ev.originalEvent.detail);
|
||||
if (delta === 0 || opts.events.mouseWheel !== true) {
|
||||
return;
|
||||
}
|
||||
oldViewBox = this.getViewBox();
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
oldMousePosition = getViewBoxCoordinatesFromEvent(this.$svg[0], ev);
|
||||
oldcenter = {
|
||||
x: viewBox.x + viewBox.width / 2,
|
||||
y: viewBox.y + viewBox.height / 2
|
||||
};
|
||||
oldDistanceFromCenter = {
|
||||
x: oldcenter.x - oldMousePosition.x,
|
||||
y: oldcenter.y - oldMousePosition.y
|
||||
};
|
||||
if (delta > 0) {
|
||||
this.zoomIn(void 0, 0);
|
||||
minWidth = this.initialViewBox.width / this.maxZoom;
|
||||
minHeight = this.initialViewBox.height / this.maxZoom;
|
||||
if (viewBox.width < minWidth) {
|
||||
reductionFactor = minWidth / viewBox.width;
|
||||
viewBox.width = minWidth;
|
||||
viewBox.height = viewBox.height * reductionFactor;
|
||||
}
|
||||
if (viewBox.height < minHeight) {
|
||||
reductionFactor = minHeight / viewBox.height;
|
||||
viewBox.height = minHeight;
|
||||
viewBox.width = viewBox.width * reductionFactor;
|
||||
}
|
||||
} else {
|
||||
this.zoomOut(void 0, 0);
|
||||
}
|
||||
newMousePosition = getViewBoxCoordinatesFromEvent(this.$svg[0], ev);
|
||||
newcenter = {
|
||||
x: oldcenter.x + (oldMousePosition.x - newMousePosition.x),
|
||||
y: oldcenter.y + (oldMousePosition.y - newMousePosition.y)
|
||||
};
|
||||
this.setCenter(newcenter.x, newcenter.y, 0);
|
||||
newViewBox = this.getViewBox();
|
||||
this.setViewBox(oldViewBox.x, oldViewBox.y, oldViewBox.width, oldViewBox.height, 0);
|
||||
this.setViewBox(newViewBox.x, newViewBox.y, newViewBox.width, newViewBox.height);
|
||||
}).bind(opts));
|
||||
opts.$svg.dblclick((function(ev) {
|
||||
if (opts.events.doubleClick !== true) {
|
||||
return;
|
||||
}
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
return this.zoomIn();
|
||||
}).bind(opts));
|
||||
opts.$svg[0].addEventListener("click", function(ev) {
|
||||
var preventClick;
|
||||
if (preventClick) {
|
||||
preventClick = false;
|
||||
ev.stopPropagation();
|
||||
return ev.preventDefault();
|
||||
}
|
||||
}, true);
|
||||
dragStarted = false;
|
||||
preventClick = false;
|
||||
opts.$svg.on("mousedown touchstart", (function(ev) {
|
||||
var $body, domBody, initialViewBox, mouseMoveCallback, mouseUpCallback, oldCursor;
|
||||
if (dragStarted) {
|
||||
return;
|
||||
}
|
||||
if (opts.events.drag !== true || (ev.type === "mousedown" && ev.which !== 1)) {
|
||||
return;
|
||||
}
|
||||
dragStarted = true;
|
||||
preventClick = false;
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
initialViewBox = $.extend({}, viewBox);
|
||||
$body = $(window.document.body);
|
||||
domBody = $body[0];
|
||||
oldCursor = $body.css("cursor");
|
||||
if (this.events.dragCursor != null) {
|
||||
$body.css("cursor", this.events.dragCursor);
|
||||
}
|
||||
mouseMoveCallback = (function(ev2) {
|
||||
var currentMousePosition, initialMousePosition;
|
||||
ev2.preventDefault();
|
||||
ev2.stopPropagation();
|
||||
initialMousePosition = getViewBoxCoordinatesFromEvent(this.$svg[0], ev);
|
||||
currentMousePosition = getViewBoxCoordinatesFromEvent(this.$svg[0], ev2);
|
||||
if (Math.sqrt(Math.pow(ev.pageX + ev2.pageX, 2) + Math.pow(ev.pageY + ev2.pageY, 2)) > 3) {
|
||||
preventClick = true;
|
||||
}
|
||||
this.setViewBox(initialViewBox.x + initialMousePosition.x - currentMousePosition.x, initialViewBox.y + initialMousePosition.y - currentMousePosition.y, null, null, 0);
|
||||
}).bind(opts);
|
||||
mouseUpCallback = (function(ev2) {
|
||||
if (ev2.type === "mouseout" && ev2.target !== ev2.currentTarget) {
|
||||
return;
|
||||
}
|
||||
ev2.preventDefault();
|
||||
ev2.stopPropagation();
|
||||
domBody.removeEventListener("mousemove", mouseMoveCallback, true);
|
||||
domBody.removeEventListener("touchmove", mouseMoveCallback, true);
|
||||
domBody.removeEventListener("mouseup", mouseUpCallback, true);
|
||||
domBody.removeEventListener("touchend", mouseUpCallback, true);
|
||||
domBody.removeEventListener("touchcancel", mouseUpCallback, true);
|
||||
domBody.removeEventListener("mouseout", mouseUpCallback, true);
|
||||
if (this.events.dragCursor != null) {
|
||||
$body.css("cursor", oldCursor);
|
||||
}
|
||||
dragStarted = false;
|
||||
}).bind(opts);
|
||||
domBody.addEventListener("mousemove", mouseMoveCallback, true);
|
||||
domBody.addEventListener("touchmove", mouseMoveCallback, true);
|
||||
domBody.addEventListener("mouseup", mouseUpCallback, true);
|
||||
domBody.addEventListener("touchend", mouseUpCallback, true);
|
||||
domBody.addEventListener("touchcancel", mouseUpCallback, true);
|
||||
domBody.addEventListener("mouseout", mouseUpCallback, true);
|
||||
}).bind(opts));
|
||||
opts.setViewBox(vb.x, vb.y, vb.width, vb.height, 0);
|
||||
ret.push(opts);
|
||||
});
|
||||
if (ret.length === 0) {
|
||||
return null;
|
||||
}
|
||||
if (ret.length === 1) {
|
||||
return ret[0];
|
||||
} else {
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
})(jQuery);
|
||||
|
||||
}).call(this);
|
||||
|
||||
//# sourceMappingURL=jquery.svg.pan.zoom.js.map
|
||||
6
js/lunr.min.js
vendored
Normal file
32
js/mermaid.min.js
vendored
Normal file
3
js/modernizr.custom-3.6.0.js
Normal file
2
js/perfect-scrollbar.jquery.min.js
vendored
Normal file
2
js/perfect-scrollbar.min.js
vendored
Normal file
616
js/relearn.js
Normal file
|
|
@ -0,0 +1,616 @@
|
|||
// Scrollbar Width function
|
||||
function getScrollBarWidth() {
|
||||
var inner = document.createElement('p');
|
||||
inner.style.width = "100%";
|
||||
inner.style.height = "200px";
|
||||
|
||||
var outer = document.createElement('div');
|
||||
outer.style.position = "absolute";
|
||||
outer.style.top = "0px";
|
||||
outer.style.left = "0px";
|
||||
outer.style.visibility = "hidden";
|
||||
outer.style.width = "200px";
|
||||
outer.style.height = "150px";
|
||||
outer.style.overflow = "hidden";
|
||||
outer.appendChild(inner);
|
||||
|
||||
document.body.appendChild(outer);
|
||||
var w1 = inner.offsetWidth;
|
||||
outer.style.overflow = 'scroll';
|
||||
var w2 = inner.offsetWidth;
|
||||
if (w1 == w2) w2 = outer.clientWidth;
|
||||
|
||||
document.body.removeChild(outer);
|
||||
|
||||
return (w1 - w2);
|
||||
};
|
||||
|
||||
function setMenuHeight() {
|
||||
$('#sidebar .highlightable').height($('#sidebar').innerHeight() - $('#header-wrapper').height() - 40);
|
||||
$('#sidebar .highlightable').perfectScrollbar('update');
|
||||
}
|
||||
|
||||
function fallbackMessage(action) {
|
||||
var actionMsg = '';
|
||||
var actionKey = (action === 'cut' ? 'X' : 'C');
|
||||
|
||||
if (/iPhone|iPad/i.test(navigator.userAgent)) {
|
||||
actionMsg = 'No support :(';
|
||||
}
|
||||
else if (/Mac/i.test(navigator.userAgent)) {
|
||||
actionMsg = 'Press ⌘-' + actionKey + ' to ' + action;
|
||||
}
|
||||
else {
|
||||
actionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;
|
||||
}
|
||||
|
||||
return actionMsg;
|
||||
}
|
||||
|
||||
function switchTab(tabGroup, tabId) {
|
||||
allTabItems = jQuery("[data-tab-group='"+tabGroup+"']");
|
||||
targetTabItems = jQuery("[data-tab-group='"+tabGroup+"'][data-tab-item='"+tabId+"']");
|
||||
|
||||
// if event is undefined then switchTab was called from restoreTabSelection
|
||||
// so it's not a button event and we don't need to safe the selction or
|
||||
// prevent page jump
|
||||
var isButtonEvent = event != undefined;
|
||||
|
||||
if(isButtonEvent){
|
||||
// save button position relative to viewport
|
||||
var yposButton = event.target.getBoundingClientRect().top;
|
||||
}
|
||||
|
||||
allTabItems.removeClass("active");
|
||||
targetTabItems.addClass("active");
|
||||
|
||||
if(isButtonEvent){
|
||||
// reset screen to the same position relative to clicked button to prevent page jump
|
||||
var yposButtonDiff = event.target.getBoundingClientRect().top - yposButton;
|
||||
window.scrollTo(window.scrollX, window.scrollY+yposButtonDiff);
|
||||
|
||||
// Store the selection to make it persistent
|
||||
if(window.localStorage){
|
||||
var selectionsJSON = window.localStorage.getItem("tabSelections");
|
||||
if(selectionsJSON){
|
||||
var tabSelections = JSON.parse(selectionsJSON);
|
||||
}else{
|
||||
var tabSelections = {};
|
||||
}
|
||||
tabSelections[tabGroup] = tabId;
|
||||
window.localStorage.setItem("tabSelections", JSON.stringify(tabSelections));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function restoreTabSelections() {
|
||||
if(window.localStorage){
|
||||
var selectionsJSON = window.localStorage.getItem("tabSelections");
|
||||
if(selectionsJSON){
|
||||
var tabSelections = JSON.parse(selectionsJSON);
|
||||
}else{
|
||||
var tabSelections = {};
|
||||
}
|
||||
Object.keys(tabSelections).forEach(function(tabGroup) {
|
||||
var tabItem = tabSelections[tabGroup];
|
||||
switchTab(tabGroup, tabItem);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function initMermaid() {
|
||||
$('code.language-mermaid').each(function(index, element) {
|
||||
var content = $(element).html().replace(/&/g, '&');
|
||||
$(element).parent().replaceWith('<div class="mermaid" align="center">' + content + '</div>');
|
||||
});
|
||||
|
||||
if (typeof mermaid != 'undefined' && typeof mermaid.mermaidAPI != 'undefined') {
|
||||
mermaid.mermaidAPI.initialize( Object.assign( {}, mermaid.mermaidAPI.getSiteConfig(), { startOnLoad: true } ) );
|
||||
mermaid.contentLoaded();
|
||||
$(".mermaid svg").svgPanZoom({})
|
||||
}
|
||||
}
|
||||
|
||||
function scrollToActiveMenu() {
|
||||
window.setTimeout(function(){
|
||||
var e = $("#sidebar ul.topics li.active")[0];
|
||||
if( e && e.scrollIntoView ){
|
||||
e.scrollIntoView({
|
||||
block: 'center',
|
||||
});
|
||||
}
|
||||
}, 200);
|
||||
}
|
||||
|
||||
// Get Parameters from some url
|
||||
var getUrlParameter = function getUrlParameter(sPageURL) {
|
||||
var url = sPageURL.split('?');
|
||||
var obj = {};
|
||||
if (url.length == 2) {
|
||||
var sURLVariables = url[1].split('&'),
|
||||
sParameterName,
|
||||
i;
|
||||
for (i = 0; i < sURLVariables.length; i++) {
|
||||
sParameterName = sURLVariables[i].split('=');
|
||||
obj[sParameterName[0]] = sParameterName[1];
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
|
||||
// Execute actions on images generated from Markdown pages
|
||||
var images = $("main#body-inner img").not(".inline");
|
||||
// Wrap image inside a featherlight (to get a full size view in a popup)
|
||||
images.wrap(function(){
|
||||
var image =$(this);
|
||||
var o = getUrlParameter(image[0].src);
|
||||
var f = o['featherlight'];
|
||||
// IF featherlight is false, do not use feather light
|
||||
if (f != 'false') {
|
||||
if (!image.parent("a").length) {
|
||||
var html = $( "<a>" ).attr("href", image[0].src).attr("data-featherlight", "image").get(0).outerHTML;
|
||||
return html;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Change styles, depending on parameters set to the image
|
||||
images.each(function(index){
|
||||
var image = $(this)
|
||||
var o = getUrlParameter(image[0].src);
|
||||
if (typeof o !== "undefined") {
|
||||
var h = o["height"];
|
||||
var w = o["width"];
|
||||
var c = o["classes"];
|
||||
image.css("width", function() {
|
||||
if (typeof w !== "undefined") {
|
||||
return w;
|
||||
} else {
|
||||
return "auto";
|
||||
}
|
||||
});
|
||||
image.css("height", function() {
|
||||
if (typeof h !== "undefined") {
|
||||
return h;
|
||||
} else {
|
||||
return "auto";
|
||||
}
|
||||
});
|
||||
if (typeof c !== "undefined") {
|
||||
var classes = c.split(',');
|
||||
for (i = 0; i < classes.length; i++) {
|
||||
image.addClass(classes[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// for the window resize
|
||||
$(window).resize(function() {
|
||||
setMenuHeight();
|
||||
});
|
||||
// for the sticky header
|
||||
$(window).scroll(function() {
|
||||
// add shadow when not in top position
|
||||
if ($(this).scrollTop() == 0) {
|
||||
$('#top-bar').removeClass("is-sticky");
|
||||
}
|
||||
else {
|
||||
$('#top-bar').addClass("is-sticky");
|
||||
}
|
||||
});
|
||||
// debouncing function from John Hann
|
||||
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
|
||||
(function($, sr) {
|
||||
|
||||
var debounce = function(func, threshold, execAsap) {
|
||||
var timeout;
|
||||
|
||||
return function debounced() {
|
||||
var obj = this, args = arguments;
|
||||
|
||||
function delayed() {
|
||||
if (!execAsap)
|
||||
func.apply(obj, args);
|
||||
timeout = null;
|
||||
};
|
||||
|
||||
if (timeout)
|
||||
clearTimeout(timeout);
|
||||
else if (execAsap)
|
||||
func.apply(obj, args);
|
||||
|
||||
timeout = setTimeout(delayed, threshold || 100);
|
||||
};
|
||||
}
|
||||
// smartresize
|
||||
jQuery.fn[sr] = function(fn) { return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
|
||||
|
||||
})(jQuery, 'smartresize');
|
||||
|
||||
jQuery(function() {
|
||||
restoreTabSelections();
|
||||
initMermaid();
|
||||
scrollToActiveMenu();
|
||||
|
||||
jQuery('#sidebar .category-icon').on('click', function() {
|
||||
$( this ).toggleClass("fa-angle-down fa-angle-right") ;
|
||||
$( this ).parent().parent().children('ul').toggle() ;
|
||||
return false;
|
||||
});
|
||||
|
||||
var sidebarStatus = searchStatus = 'open';
|
||||
$('#sidebar .highlightable').perfectScrollbar();
|
||||
setMenuHeight();
|
||||
|
||||
jQuery('#overlay').on('click', function() {
|
||||
jQuery(document.body).toggleClass('sidebar-hidden');
|
||||
sidebarStatus = (jQuery(document.body).hasClass('sidebar-hidden') ? 'closed' : 'open');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('[data-sidebar-toggle]').on('click', function() {
|
||||
jQuery(document.body).toggleClass('sidebar-hidden');
|
||||
sidebarStatus = (jQuery(document.body).hasClass('sidebar-hidden') ? 'closed' : 'open');
|
||||
|
||||
return false;
|
||||
});
|
||||
jQuery('[data-clear-history-toggle]').on('click', function() {
|
||||
sessionStorage.clear();
|
||||
location.reload();
|
||||
return false;
|
||||
});
|
||||
jQuery('[data-search-toggle]').on('click', function() {
|
||||
if (sidebarStatus == 'closed') {
|
||||
jQuery('[data-sidebar-toggle]').trigger('click');
|
||||
jQuery(document.body).removeClass('searchbox-hidden');
|
||||
searchStatus = 'open';
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
jQuery(document.body).toggleClass('searchbox-hidden');
|
||||
searchStatus = (jQuery(document.body).hasClass('searchbox-hidden') ? 'closed' : 'open');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
var ajax;
|
||||
jQuery('[data-search-input]').on('input', function() {
|
||||
var input = jQuery(this),
|
||||
value = input.val(),
|
||||
items = jQuery('[data-nav-id]');
|
||||
items.removeClass('search-match');
|
||||
if (!value.length) {
|
||||
$('ul.topics').removeClass('searched');
|
||||
items.css('display', 'block');
|
||||
sessionStorage.removeItem('search-value');
|
||||
$("mark").parents(".expand-marked").removeClass("expand-marked");
|
||||
$(".highlightable").unhighlight({ element: 'mark' })
|
||||
return;
|
||||
}
|
||||
|
||||
sessionStorage.setItem('search-value', value);
|
||||
$("mark").parents(".expand-marked").removeClass("expand-marked");
|
||||
$(".highlightable").unhighlight({ element: 'mark' }).highlight(value, { element: 'mark' });
|
||||
$("mark").parents(".expand").addClass("expand-marked");
|
||||
|
||||
if (ajax && ajax.abort) ajax.abort();
|
||||
|
||||
jQuery('[data-search-clear]').on('click', function() {
|
||||
jQuery('[data-search-input]').val('').trigger('input');
|
||||
sessionStorage.removeItem('search-input');
|
||||
$("mark").parents(".expand-marked").removeClass("expand-marked");
|
||||
$(".highlightable").unhighlight({ element: 'mark' })
|
||||
});
|
||||
});
|
||||
|
||||
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
|
||||
return function( elem ) {
|
||||
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
|
||||
};
|
||||
});
|
||||
|
||||
if (sessionStorage.getItem('search-value')) {
|
||||
var searchValue = sessionStorage.getItem('search-value')
|
||||
$(document.body).removeClass('searchbox-hidden');
|
||||
$('[data-search-input]').val(searchValue);
|
||||
$('[data-search-input]').trigger('input');
|
||||
var searchedElem = $('#body-inner').find(':contains(' + searchValue + ')').get(0);
|
||||
if (searchedElem) {
|
||||
searchedElem.scrollIntoView(true);
|
||||
var scrolledY = window.scrollY;
|
||||
if(scrolledY){
|
||||
window.scroll(0, scrolledY - 125);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$(".highlightable").highlight(sessionStorage.getItem('search-value'), { element: 'mark' });
|
||||
$("mark").parents(".expand").addClass("expand-marked");
|
||||
|
||||
// clipboard
|
||||
var clipInit = false;
|
||||
$('code').each(function() {
|
||||
var code = $(this),
|
||||
text = code.text();
|
||||
|
||||
if (text.length > 5) {
|
||||
if (!clipInit) {
|
||||
var text, clip = new ClipboardJS('.copy-to-clipboard', {
|
||||
text: function(trigger) {
|
||||
text = $(trigger).prev('code').text();
|
||||
return text.replace(/^\$\s/gm, '');
|
||||
}
|
||||
});
|
||||
|
||||
var inPre;
|
||||
clip.on('success', function(e) {
|
||||
e.clearSelection();
|
||||
inPre = $(e.trigger).parent().prop('tagName') == 'PRE';
|
||||
$(e.trigger).attr('aria-label', 'Copied to clipboard!').addClass('tooltipped tooltipped-' + (inPre ? 'w' : 's'));
|
||||
});
|
||||
|
||||
clip.on('error', function(e) {
|
||||
inPre = $(e.trigger).parent().prop('tagName') == 'PRE';
|
||||
$(e.trigger).attr('aria-label', fallbackMessage(e.action)).addClass('tooltipped tooltipped-' + (inPre ? 'w' : 's'));
|
||||
$(document).one('copy', function(){
|
||||
$(e.trigger).attr('aria-label', 'Copied to clipboard!').addClass('tooltipped tooltipped-' + (inPre ? 'w' : 's'));
|
||||
});
|
||||
});
|
||||
|
||||
clipInit = true;
|
||||
}
|
||||
|
||||
code.addClass('copy-to-clipboard-inline');
|
||||
code.after('<span class="copy-to-clipboard" title="Copy to clipboard" />');
|
||||
code.next('.copy-to-clipboard').on('mouseleave', function() {
|
||||
$(this).attr('aria-label', null).removeClass('tooltipped tooltipped-s tooltipped-w');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// allow keyboard control for prev/next links
|
||||
jQuery(function() {
|
||||
jQuery('.nav-prev').click(function(){
|
||||
location.href = jQuery(this).attr('href');
|
||||
});
|
||||
jQuery('.nav-next').click(function() {
|
||||
location.href = jQuery(this).attr('href');
|
||||
});
|
||||
});
|
||||
|
||||
jQuery('input, textarea').keydown(function (e) {
|
||||
// left and right arrow keys
|
||||
if (e.which == '37' || e.which == '39') {
|
||||
e.stopPropagation();
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(document).keydown(function(e) {
|
||||
// prev links - left arrow key
|
||||
if(e.which == '37') {
|
||||
jQuery('.nav.nav-prev').click();
|
||||
}
|
||||
|
||||
// next links - right arrow key
|
||||
if(e.which == '39') {
|
||||
jQuery('.nav.nav-next').click();
|
||||
}
|
||||
});
|
||||
|
||||
$('#top-bar a:not(:has(img)):not(.btn)').addClass('highlight');
|
||||
$('#body-inner a:not(:has(img)):not(.btn):not(a[rel="footnote"])').addClass('highlight');
|
||||
|
||||
var touchsupport = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)
|
||||
if (!touchsupport){ // browser doesn't support touch
|
||||
$('#toc-menu').hover(function() {
|
||||
$('.progress').stop(true, false, true).fadeToggle(100);
|
||||
});
|
||||
|
||||
$('.progress').hover(function() {
|
||||
$('.progress').stop(true, false, true).fadeToggle(100);
|
||||
});
|
||||
}
|
||||
if (touchsupport){ // browser does support touch
|
||||
$('#toc-menu').click(function() {
|
||||
$('.progress').stop(true, false, true).fadeToggle(100);
|
||||
});
|
||||
$('.progress').click(function() {
|
||||
$('.progress').stop(true, false, true).fadeToggle(100);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix anchor scrolling that hides behind top nav bar
|
||||
* Courtesy of https://stackoverflow.com/a/13067009/28106
|
||||
*
|
||||
* We could use pure css for this if only heading anchors were
|
||||
* involved, but this works for any anchor, including footnotes
|
||||
**/
|
||||
(function (document, history, location) {
|
||||
var HISTORY_SUPPORT = !!(history && history.pushState);
|
||||
|
||||
var anchorScrolls = {
|
||||
ANCHOR_REGEX: /^#[^ ]+$/,
|
||||
OFFSET_HEIGHT_PX: 50,
|
||||
|
||||
/**
|
||||
* Establish events, and fix initial scroll position if a hash is provided.
|
||||
*/
|
||||
init: function () {
|
||||
this.scrollToCurrent();
|
||||
$(window).on('hashchange', $.proxy(this, 'scrollToCurrent'));
|
||||
$('body').on('click', 'a', $.proxy(this, 'delegateAnchors'));
|
||||
},
|
||||
|
||||
/**
|
||||
* Return the offset amount to deduct from the normal scroll position.
|
||||
* Modify as appropriate to allow for dynamic calculations
|
||||
*/
|
||||
getFixedOffset: function () {
|
||||
return this.OFFSET_HEIGHT_PX;
|
||||
},
|
||||
|
||||
/**
|
||||
* If the provided href is an anchor which resolves to an element on the
|
||||
* page, scroll to it.
|
||||
* @param {String} href
|
||||
* @return {Boolean} - Was the href an anchor.
|
||||
*/
|
||||
scrollIfAnchor: function (href, pushToHistory) {
|
||||
var match, anchorOffset;
|
||||
|
||||
if (!this.ANCHOR_REGEX.test(href)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
match = document.getElementById(href.slice(1));
|
||||
|
||||
if (match) {
|
||||
anchorOffset = $(match).offset().top - this.getFixedOffset();
|
||||
$('html, body').animate({ scrollTop: anchorOffset });
|
||||
|
||||
// Add the state to history as-per normal anchor links
|
||||
if (HISTORY_SUPPORT && pushToHistory) {
|
||||
history.pushState({}, document.title, location.pathname + href);
|
||||
}
|
||||
}
|
||||
|
||||
return !!match;
|
||||
},
|
||||
|
||||
/**
|
||||
* Attempt to scroll to the current location's hash.
|
||||
*/
|
||||
scrollToCurrent: function (e) {
|
||||
if (this.scrollIfAnchor(window.location.hash) && e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* If the click event's target was an anchor, fix the scroll position.
|
||||
*/
|
||||
delegateAnchors: function (e) {
|
||||
var elem = e.target;
|
||||
|
||||
if (this.scrollIfAnchor(elem.getAttribute('href'), true)) {
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready($.proxy(anchorScrolls, 'init'));
|
||||
})(window.document, window.history, window.location);
|
||||
|
||||
// Add link button for every
|
||||
var text, clip = new ClipboardJS('.anchor');
|
||||
$("h1~h2,h1~h3,h1~h4,h1~h5,h1~h6").append(function(index, html){
|
||||
var element = $(this);
|
||||
var url = encodeURI(document.location.origin + document.location.pathname);
|
||||
var link = url + "#"+element[0].id;
|
||||
var html = " " + $( "<span>" ).addClass("anchor").attr("data-clipboard-text", link).append("<i class='fas fa-link fa-lg'></i>").get(0).outerHTML;
|
||||
return html;
|
||||
});
|
||||
|
||||
$(".anchor").on('mouseleave', function(e) {
|
||||
$(this).attr('aria-label', null).removeClass('tooltipped tooltipped-s tooltipped-w');
|
||||
});
|
||||
|
||||
clip.on('success', function(e) {
|
||||
e.clearSelection();
|
||||
$(e.trigger).attr('aria-label', 'Link copied to clipboard!').addClass('tooltipped tooltipped-s');
|
||||
});
|
||||
|
||||
$('a[rel="lightbox"]').featherlight({
|
||||
root: 'div#body'
|
||||
});
|
||||
|
||||
sessionStorage.setItem(jQuery('body').data('url'), 1);
|
||||
|
||||
// loop through the sessionStorage and see if something should be marked as visited
|
||||
for (var url in sessionStorage) {
|
||||
if (sessionStorage.getItem(url) == 1){
|
||||
// in case we have `relativeURLs=true` we have to strip the
|
||||
// relative path to root
|
||||
url = url.replace( /\.\.\//g, '/' ).replace( /^\/+\//, '/' );
|
||||
jQuery('[data-nav-id="' + url + '"]').addClass('visited');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.extend({
|
||||
highlight: function(node, re, nodeName, className) {
|
||||
if (node.nodeType === 3 && node.parentElement && node.parentElement.namespaceURI == 'http://www.w3.org/1999/xhtml') { // text nodes
|
||||
var match = node.data.match(re);
|
||||
if (match) {
|
||||
var highlight = document.createElement(nodeName || 'span');
|
||||
highlight.className = className || 'highlight';
|
||||
var wordNode = node.splitText(match.index);
|
||||
wordNode.splitText(match[0].length);
|
||||
var wordClone = wordNode.cloneNode(true);
|
||||
highlight.appendChild(wordClone);
|
||||
wordNode.parentNode.replaceChild(highlight, wordNode);
|
||||
return 1; //skip added node in parent
|
||||
}
|
||||
} else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
|
||||
!/(script|style)/i.test(node.tagName) && // ignore script and style nodes
|
||||
!(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
|
||||
for (var i = 0; i < node.childNodes.length; i++) {
|
||||
i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.fn.unhighlight = function(options) {
|
||||
var settings = {
|
||||
className: 'highlight',
|
||||
element: 'span'
|
||||
};
|
||||
jQuery.extend(settings, options);
|
||||
|
||||
return this.find(settings.element + "." + settings.className).each(function() {
|
||||
var parent = this.parentNode;
|
||||
parent.replaceChild(this.firstChild, this);
|
||||
parent.normalize();
|
||||
}).end();
|
||||
};
|
||||
|
||||
jQuery.fn.highlight = function(words, options) {
|
||||
var settings = {
|
||||
className: 'highlight',
|
||||
element: 'span',
|
||||
caseSensitive: false,
|
||||
wordsOnly: false
|
||||
};
|
||||
jQuery.extend(settings, options);
|
||||
|
||||
if (!words) { return; }
|
||||
|
||||
if (words.constructor === String) {
|
||||
words = [words];
|
||||
}
|
||||
words = jQuery.grep(words, function(word, i) {
|
||||
return word != '';
|
||||
});
|
||||
words = jQuery.map(words, function(word, i) {
|
||||
return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
});
|
||||
if (words.length == 0) { return this; }
|
||||
;
|
||||
|
||||
var flag = settings.caseSensitive ? "" : "i";
|
||||
var pattern = "(" + words.join("|") + ")";
|
||||
if (settings.wordsOnly) {
|
||||
pattern = "\\b" + pattern + "\\b";
|
||||
}
|
||||
var re = new RegExp(pattern, flag);
|
||||
|
||||
return this.each(function() {
|
||||
jQuery.highlight(this, re, settings.element, settings.className);
|
||||
});
|
||||
};
|
||||
104
js/search.js
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
var lunrIndex, pagesIndex;
|
||||
|
||||
// Initialize lunrjs using our generated index file
|
||||
function initLunr() {
|
||||
// First retrieve the index file
|
||||
$.getJSON(index_url)
|
||||
.done(function(index) {
|
||||
pagesIndex = index;
|
||||
// Set up lunrjs by declaring the fields we use
|
||||
// Also provide their boost level for the ranking
|
||||
lunrIndex = lunr(function() {
|
||||
this.ref('index');
|
||||
this.field('title', {
|
||||
boost: 15
|
||||
});
|
||||
this.field('tags', {
|
||||
boost: 10
|
||||
});
|
||||
this.field('content', {
|
||||
boost: 5
|
||||
});
|
||||
|
||||
this.pipeline.remove(lunr.stemmer);
|
||||
this.searchPipeline.remove(lunr.stemmer);
|
||||
|
||||
// Feed lunr with each file and let lunr actually index them
|
||||
pagesIndex.forEach(function(page, idx) {
|
||||
page.index = idx;
|
||||
this.add(page);
|
||||
}, this);
|
||||
})
|
||||
})
|
||||
.fail(function(jqxhr, textStatus, error) {
|
||||
var err = textStatus + ', ' + error;
|
||||
console.error('Error getting Hugo index file:', err);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a search in lunr and transform the result
|
||||
*
|
||||
* @param {String} term
|
||||
* @return {Array} results
|
||||
*/
|
||||
function search(term) {
|
||||
// Find the item in our index corresponding to the lunr one to have more info
|
||||
// Remove Lunr special search characters: https://lunrjs.com/guides/searching.html
|
||||
var searchTerm = lunr.tokenizer(term.replace(/[*:^~+-]/, ' ')).reduce( function(a,token){return a.concat(searchPatterns(token.str))}, []).join(' ');
|
||||
return !searchTerm ? [] : lunrIndex.search(searchTerm).map(function(result) {
|
||||
return { index: result.ref, matches: Object.keys(result.matchData.metadata) }
|
||||
});
|
||||
}
|
||||
|
||||
function searchPatterns(word) {
|
||||
return [
|
||||
word + '^100',
|
||||
word + '*^10',
|
||||
'*' + word + '^10',
|
||||
word + '~' + Math.floor(word.length / 4) + '^1' // allow 1 in 4 letters to have a typo
|
||||
];
|
||||
}
|
||||
|
||||
// Let's get started
|
||||
initLunr();
|
||||
$(function() {
|
||||
var searchList = new autoComplete({
|
||||
/* selector for the search box element */
|
||||
selector: $('#search-by').get(0),
|
||||
/* source is the callback to perform the search */
|
||||
source: function(term, response) {
|
||||
response(search(term));
|
||||
},
|
||||
/* renderItem displays individual search results */
|
||||
renderItem: function(item, term) {
|
||||
var page = pagesIndex[item.index];
|
||||
var numContextWords = 2;
|
||||
var contextPattern = '(?:\\S+ +){0,' + numContextWords + '}\\S*\\b(?:' +
|
||||
item.matches.map( function(match){return match.replace(/\W/g, '\\$&')} ).join('|') +
|
||||
')\\b\\S*(?: +\\S+){0,' + numContextWords + '}';
|
||||
var context = page.content.match(new RegExp(contextPattern, 'i'));
|
||||
var divcontext = document.createElement('div');
|
||||
divcontext.className = 'context';
|
||||
divcontext.innerText = (context || '');
|
||||
var divsuggestion = document.createElement('div');
|
||||
divsuggestion.className = 'autocomplete-suggestion';
|
||||
divsuggestion.setAttribute('data-term', term);
|
||||
divsuggestion.setAttribute('data-title', page.title);
|
||||
divsuggestion.setAttribute('data-uri', baseUri + page.uri);
|
||||
divsuggestion.setAttribute('data-context', context);
|
||||
divsuggestion.innerText = '» ' + page.title;
|
||||
divsuggestion.appendChild(divcontext);
|
||||
return divsuggestion.outerHTML;
|
||||
},
|
||||
/* onSelect callback fires when a search suggestion is chosen */
|
||||
onSelect: function(e, term, item) {
|
||||
location.href = item.getAttribute('data-uri');
|
||||
}
|
||||
});
|
||||
|
||||
// JavaScript-autoComplete only registers the focus event when minChars is 0 which doesn't make sense, let's do it ourselves
|
||||
// https://github.com/Pixabay/JavaScript-autoComplete/blob/master/auto-complete.js#L191
|
||||
var selector = $('#search-by').get(0);
|
||||
$(selector).focus(selector.focusHandler);
|
||||
});
|
||||
BIN
navpatterns/1-patterns/activity-log/Activity-Log-NAV.jpg
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
navpatterns/1-patterns/activity-log/Activity-Log.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
304
navpatterns/1-patterns/activity-log/index.html
Normal file
|
|
@ -0,0 +1,304 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Activity Logs :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/activity-log/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/activity-log/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/activity-log/ aria-disabled=true><span itemprop=name>Activity Logs</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#activity-log>Activity Log</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Activity Logs</h1>
|
||||
<p><em>Originally by Ciprian Iordache at Microsoft Development Center Copenhagen</em></p>
|
||||
<h2 id=activity-log>Activity Log</h2>
|
||||
<p><strong>Abstract</strong></p>
|
||||
<p>The Activity Log pattern tracks execution of activities. This is a Dynamics NAV specific implementation of the <a href=http://martinfowler.com/eaaDev/AuditLog.html>Audit Log</a> pattern.</p>
|
||||
<p><a href=Activity-Log.jpg><img src=Activity-Log.jpg alt=" "></a></p>
|
||||
<p><strong>Problem</strong></p>
|
||||
<p>In general, integrating with external systems can be very challenging, due to the complexity of the situation – connectivity issues, asynchronous operations, user errors, etc. These challenges require sometimes re-trying several times, polling the external system, re-send/re-get data as all these activities can succeed but can very well fail.</p>
|
||||
<p>Similar challenges exist in situations where a lengthy, complex task, composed of different steps is to be executed by various people in various timeframes. In case of errors (but sometimes also in case of success) there will be a need to track these activities to see what happened and the actual person which did a specific step.</p>
|
||||
<p>In all these cases, we need to be able to troubleshoot.</p>
|
||||
<p>A tracking/logging functionality could be implemented for each activity/step separately, but this would lead to code duplication and problems in maintaining the code in future.</p>
|
||||
<p>In NAV there is already the Change Log functionality which can record all the data changes that have been done to specific tables, specific fields. However, this functionality is not available for activities. Also, there are few places where separate logging/tracking implementations were done but the current pattern proposes an unified, central way of data recording and enables the user to track all/most of the activities.</p>
|
||||
<p><strong>Solution</strong></p>
|
||||
<p>The Activity Log pattern tracks specific outcome of the activities, in order to be able to assess what went wrong/fine or who performed a specific activity.</p>
|
||||
<p>Activity Log pattern</p>
|
||||
<ul>
|
||||
<li>records the activity and its outcome (error or success messages)</li>
|
||||
<li>assembles all messages in one central view and presents them to the user filtered for the specific activity and ordered in reverse chronological order.</li>
|
||||
</ul>
|
||||
<p>Figure below illustrates the how the Activity Log manifests in the UI. The figure shows a part of an activity log for a posted document that was sent to the document exchange service and illustrates both successful and failed activities.</p>
|
||||
<p><a href=Activity-Log-NAV.jpg><img src=Activity-Log-NAV.jpg alt=" "></a></p>
|
||||
<p>This functionality is implemented in the following way - Activity Log table (TAB710) contains a simple function that allows you to log the result of a task or activity:</p>
|
||||
<p>ActivityLog.LogActivity(ContextRecordID,ActivityLog.Status::Failed,ContextDescription,ActivityDescription,ActivityMessage);</p>
|
||||
<p>Similar to TAB700 for Error Messaging, the Activity Log table contains a RECORDID that is a link to the parent/context entity. That permits the Activity Log to be used in a generic way, for any kind of entities (tables) and it also permits filtering the data to a specific related entity only before being presenting to the user.</p>
|
||||
<p>The following parameters should be provided to the function:</p>
|
||||
<ul>
|
||||
<li>RecordID: The record/context for which the activity is logged</li>
|
||||
<li>Status: The task/activity outcome</li>
|
||||
<li>Descriptions/Messages: fields that will clearly describe the state and outcome of the task</li>
|
||||
</ul>
|
||||
<p>To show the log, add a page action, with the caption including the name “<prefix> Log” and link it to the image named “Log”:</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:#ae81ff>1</span> ;<span style=color:#66d9ef>Action</span> ;
|
||||
Name=ActivityLog;
|
||||
CaptionML=ENU=<span style=color:#e6db74>'Activity Log'</span>;
|
||||
ToolTipML=ENU=<span style=color:#e6db74>'View the status and any errors if the document was sent as an electronic document or OCR file through the document exchange service.'</span>;
|
||||
ApplicationArea=#Basic,#Suite;
|
||||
Image=Log;
|
||||
OnAction=
|
||||
<span style=color:#66d9ef>VAR</span>
|
||||
ActivityLog@<span style=color:#ae81ff>1000</span> : <span style=color:#66d9ef>Record</span> <span style=color:#ae81ff>710</span>;
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
ActivityLog<span style=color:#f92672>.</span>ShowEntries<span style=color:#f92672>(</span><span style=color:#66d9ef>RECORDID</span><span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
}
|
||||
</code></pre></div><p><strong>NAV usages</strong></p>
|
||||
<p>In Dynamics NAV 2016, there is a new feature for sending documents in electronic format to a document exchange service. In this case, sending documents requires multiple steps as it is an asynchronous activity and as such, in order to keep track of what’s happening and when the Activity Log functionality was used. That offers later the possibility to see who sent and when a document was sent, when it was dispatched, if any dispatch errors and how many tries have been made until the document was finally dispatched or rejected.</p>
|
||||
<p>So as usages in NAV 2016, we have the document exchange and OCR features plus the related posted documents involved in the document exchange feature.</p>
|
||||
<ul>
|
||||
<li>COD1294.TXT</li>
|
||||
<li>COD1410.TXT</li>
|
||||
<li>PAG1270.TXT</li>
|
||||
<li>PAG1275.TXT</li>
|
||||
<li>PAG143.TXT</li>
|
||||
<li>PAG144.TXT</li>
|
||||
<li>PAG189.TXT</li>
|
||||
<li>TAB112.TXT</li>
|
||||
<li>TAB114.TXT</li>
|
||||
<li>TAB130.TXT</li>
|
||||
</ul>
|
||||
<p><strong>Ideas for improvement</strong></p>
|
||||
<p>Replace the scattered similar functionality (as mentioned above, we have several places having close functionality or similar requirements) with this new pattern.</p>
|
||||
<p><strong>Consequences</strong></p>
|
||||
<ul>
|
||||
<li>Use with caution, similar to the Change Log functionality, as if the pattern will be used extensively in all the activities/operations within NAV, the table might become large containing many records and might cause some performance issues when presenting the data to the client (filtering on the specific activity).</li>
|
||||
<li>Do not log private or confidential information (passwords, amounts, salaries, sensitive data), unless you are ok with this data to be showed to all users (even to users which normally would not have access to this data), thus overriding the permission sets.</li>
|
||||
<li>Log only essential information (quality over quantity). Can the logged data be used to analyze the problem, or is it just junk data?</li>
|
||||
</ul>
|
||||
<p><strong>NAV Versions</strong></p>
|
||||
<p>Supported from NAV 2016</p>
|
||||
<p><strong>Related Topics</strong></p>
|
||||
<p>Error Message Processing – provides a similar view and uses similar concepts: has a generic implementation (uses as link the same RECORDID feature) and uses same filtering functionality when displaying the data to the user.</p>
|
||||
<p>Audit Log – as mentioned in the beginning, this pattern is a NAV specific implementation of the audit log pattern.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 32 KiB |
303
navpatterns/1-patterns/argument-table/index.html
Normal file
|
|
@ -0,0 +1,303 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Argument Table :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/argument-table/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/argument-table/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/argument-table/ aria-disabled=true><span itemprop=name>Argument Table</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#bad-example-1>Bad example 1</a></li>
|
||||
<li><a href=#bad-example-2>Bad example 2</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href=#good-example-1>Good example 1</a></li>
|
||||
<li><a href=#good-example-2>Good example 2</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Argument Table</h1>
|
||||
<h1 id=argument-table-pattern>Argument table pattern</h1>
|
||||
<p><em>Originally By Nikola Kukrika and Waldo</em></p>
|
||||
<h1 id=abstract>Abstract</h1>
|
||||
<p>The Argument Table pattern is used to provide an extension point for adding new arguments without changing the signature. By grouping multiple arguments into a table the code becomes more readable (function signature and the usage of the function).</p>
|
||||
<p><a href=0218.Argument-Table-image.png><img src=0218.Argument-Table-image.png alt=" "></a></p>
|
||||
<h1 id=problem>Problem</h1>
|
||||
<p>In CAL overloading function signature is not supported. It is also not possible to provide default values for the function arguments.</p>
|
||||
<p>When an argument needs to be added to the function, the existing function needs to be extracted to a new method with an additional argument and the original function will call new method. This will cause an upgrade problem in the future, since the entire body of the method is replaced.</p>
|
||||
<p>Second commonly occurring problem is option duplication. In order to pass options often they are duplicated in the signature.</p>
|
||||
<p>The last problem that can be solved is high number of arguments. Functions with a high number of arguments are hard to understand. Having arguments grouped within the table with a meaningful name will improve readability and make code easier to understanding.</p>
|
||||
<p>Few examples of the bad implementations are as illustrated here:</p>
|
||||
<h2 id=bad-example-1>Bad example 1</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>PROCEDURE</span> FillInVATReturnData@<span style=color:#ae81ff>1200001</span><span style=color:#f92672>(</span><span style=color:#66d9ef>VAR</span> DeclarationID@<span style=color:#ae81ff>1200000</span> : <span style=color:#66d9ef>Code</span> [<span style=color:#ae81ff>20</span>];<span style=color:#66d9ef>VAR</span> LineID@<span style=color:#ae81ff>1200001</span> : <span style=color:#66d9ef>Code</span> [<span style=color:#ae81ff>20</span>];<span style=color:#66d9ef>VAR</span> PeerID@<span style=color:#ae81ff>1200002</span> : <span style=color:#66d9ef>Code</span> [<span style=color:#ae81ff>20</span>]; <span style=color:#66d9ef>VAR</span> DocumentNo@<span style=color:#ae81ff>1200003</span>: <span style=color:#66d9ef>Code</span>[<span style=color:#ae81ff>20</span>]; <span style=color:#66d9ef>VAR</span> NumberOfCopies@<span style=color:#ae81ff>1200007</span>: <span style=color:#66d9ef>Integer</span>; <span style=color:#66d9ef>VAR</span> Uploaded@<span style=color:#ae81ff>1200004</span> : <span style=color:#66d9ef>Boolean</span>; <span style=color:#66d9ef>VAR</span> Correction@<span style=color:#ae81ff>1200005</span> : <span style=color:#66d9ef>Boolean</span>; <span style=color:#66d9ef>VAR</span> HasValidationErr@<span style=color:#ae81ff>1200006</span> : <span style=color:#66d9ef>Boolean</span><span style=color:#f92672>)</span>;
|
||||
</code></pre></div><p><strong>Call</strong></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>FillInVATReturnData<span style=color:#f92672>(</span>NoSeries, NextLineID, CustomerID, DocumentNo, SingleCopy, ???, ??, <span style=color:#f92672>....</span>, <span style=color:#f92672>...)
|
||||
</span></code></pre></div><p>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.</p>
|
||||
<h2 id=bad-example-2>Bad example 2</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> <span style=color:#66d9ef>PROCEDURE</span> GetTableSyncSetupW1@<span style=color:#ae81ff>3</span><span style=color:#f92672>(</span>OldTableId@<span style=color:#ae81ff>1002</span> : <span style=color:#66d9ef>Integer</span>; <span style=color:#66d9ef>VAR</span> UpgradeTableId@<span style=color:#ae81ff>1001</span> : <span style=color:#66d9ef>Integer</span>; <span style=color:#66d9ef>VAR</span> TableUpgradeMode@<span style=color:#ae81ff>1000</span> : <span style=color:#e6db74>'Check, Copy, Move, Force'</span><span style=color:#f92672>) </span>: <span style=color:#66d9ef>Boolean</span>;
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
<span style=color:#66d9ef>CASE</span> OldTableId <span style=color:#66d9ef>OF</span>
|
||||
<span style=color:#66d9ef>DATABASE</span>::"Sales Header":
|
||||
SetTableSyncSetup<span style=color:#f92672>(</span><span style=color:#ae81ff>0</span>,TableUpgradeMode::Check,UpgradeTableId,TableUpgradeMode<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>DATABASE</span>::"Posting Exch. Column Def":
|
||||
SetTableSyncSetup<span style=color:#f92672>(</span><span style=color:#ae81ff>104025</span>,TableUpgradeMode::Copy,UpgradeTableId,TableUpgradeMode<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>DATABASE</span>::"Payment Export Data":
|
||||
SetTableSyncSetup<span style=color:#f92672>(</span><span style=color:#ae81ff>0</span>,TableUpgradeMode::Force,UpgradeTableId,TableUpgradeMode<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>ELSE</span>
|
||||
<span style=color:#66d9ef>EXIT</span><span style=color:#f92672>(</span>FALSE<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
<span style=color:#66d9ef>EXIT</span><span style=color:#f92672>(</span>TRUE<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
</code></pre></div><p>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.</p>
|
||||
<h1 id=solution>Solution</h1>
|
||||
<p>By grouping the arguments within the table it is possible to add additional argument and reuse it where it is needed without changing the signature.</p>
|
||||
<p>Multiple parameters are grouped within the single object with a meaningful name so the code becomes more readable.</p>
|
||||
<p>It is possible to assign default values and to have the code validation.</p>
|
||||
<p>Argument table should preferably be a temporary table since the implementation is simpler.</p>
|
||||
<p>The examples of usages addressing problems shown above are:</p>
|
||||
<h2 id=good-example-1>Good example 1</h2>
|
||||
<p>New table</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>TAB <span style=color:#ae81ff>50003</span> VAT Return Data
|
||||
<span style=color:#66d9ef>PROCEDURE</span> FillInVATReturnData@<span style=color:#ae81ff>1200001</span><span style=color:#f92672>(</span><span style=color:#66d9ef>VAR</span> VATReturnData@<span style=color:#ae81ff>1200000</span> : <span style=color:#66d9ef>Record</span> <span style=color:#ae81ff>50003</span><span style=color:#f92672>)</span>;
|
||||
</code></pre></div><hr>
|
||||
<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>VATReturnData<span style=color:#f92672>.</span>INIT;
|
||||
VATReturnData<span style=color:#f92672>.</span>NumberOfCopies <span style=color:#f92672>:=</span> GetDefaultNumberOfCopies;
|
||||
VATReturnData<span style=color:#f92672>.</span>Uploaded <span style=color:#f92672>:=</span> FALSE;
|
||||
|
||||
FillInVATReturnData<span style=color:#f92672>(</span>VATReturnData<span style=color:#f92672>)</span>;
|
||||
</code></pre></div><p>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.</p>
|
||||
<h2 id=good-example-2>Good example 2</h2>
|
||||
<p>Good example</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>PROCEDURE</span> GetTableSyncSetupW1@<span style=color:#ae81ff>3</span><span style=color:#f92672>(</span><span style=color:#66d9ef>VAR</span> TableSynchSetup@<span style=color:#ae81ff>1000</span> : <span style=color:#66d9ef>Record</span> <span style=color:#ae81ff>2000000135</span><span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
SetTableSyncSetup<span style=color:#f92672>(</span><span style=color:#66d9ef>DATABASE</span>::"Sales Header",<span style=color:#ae81ff>0</span>,TableSynchSetup<span style=color:#f92672>.</span>Mode::Check<span style=color:#f92672>)</span>;
|
||||
SetTableSyncSetup<span style=color:#f92672>(</span><span style=color:#66d9ef>DATABASE</span>::"Posting Exch. Column Def",<span style=color:#ae81ff>104025</span>,TableSynchSetup<span style=color:#f92672>.</span>Mode::Copy<span style=color:#f92672>)</span>;
|
||||
SetTableSyncSetup<span style=color:#f92672>(</span><span style=color:#66d9ef>DATABASE</span>::"Payment Export Data",<span style=color:#ae81ff>0</span>,TableSynchSetup<span style=color:#f92672>.</span>Mode::Force<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
</code></pre></div><p>Option definition is not encapsulated within the table. Arguments are grouped and we can add additional arguments without the need to change the signature.</p>
|
||||
<h1 id=downsides>Downsides</h1>
|
||||
<p>You need to create one more table</p>
|
||||
<p>Complex types can’t be embedded as fields in tables (cannot have a record field type etc).</p>
|
||||
<h1 id=nav-usages>NAV Usages</h1>
|
||||
<p>Upgrade Codeunits</p>
|
||||
<h1 id=related-patterns>Related Patterns</h1>
|
||||
<p>Posting Routine, Select behavior: Setting fields on existing records in order not to change the signatures.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -0,0 +1,299 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Data Driven Blocked Entity :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061749 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061749></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061749></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/blocked-entity/data-driven-blocked-entity/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="5"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/blocked-entity/><span itemprop=name>Blocked Entity</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ aria-disabled=true><span itemprop=name>Data Driven Blocked Entity</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents></nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Data Driven Blocked Entity</h1>
|
||||
<p><em>Written by Bogdan Andrei Sturzoiu, at Microsoft Development Center Copenhagen</em></p>
|
||||
<p><strong>Abstract</strong></p>
|
||||
<p>This pattern implements a generic mechanism for dynamically restricting and allowing usage of a record by the business process administrator.</p>
|
||||
<p><strong>Problem</strong></p>
|
||||
<p>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.</p>
|
||||
<p>For example, a new customer record should not be used for posting documents until it is approved by the relevant approver.</p>
|
||||
<p>We could solve this by using the <a href=/nav/w/designpatterns/79.blocked-entity>Blocked Entity pattern</a>, but it requires database schema changes, which have an upgrade impact.</p>
|
||||
<p>The blocked entity pattern involves:</p>
|
||||
<ol>
|
||||
<li>Adding a “blocked” status field on the record (either a Boolean or in the more advanced cases, an option field refining the usage).</li>
|
||||
<li>Adding specific code for the record in every place where the restriction needs to be enforced.</li>
|
||||
</ol>
|
||||
<p>In contrast, the Data-driven Blocked Entity pattern involves adding a new record (data change) to mark the restriction, instead of adding a new field (metadata change).</p>
|
||||
<p><strong>Solution</strong></p>
|
||||
<p>This pattern describes a generic mechanism of adding and lifting restrictions for any type of record.</p>
|
||||
<p>The restriction mechanism has the following elements:</p>
|
||||
<ol>
|
||||
<li>Adding a restriction record for a specific reason (e.g. the record requires approval), which will act as a surrogate key (unique identifier) for the restricted record. This can be implemented through a workflow response, or directly, by calling the Restriction Management codeunit function.</li>
|
||||
<li>Lifting the restriction when it is no longer necessary. Again, this can be done using a workflow response or directly by calling the dedicated function.</li>
|
||||
<li>Consuming the restriction in the places of interest for a specific purpose. This is an application feature that requires a call to the Restriction Management codeunit to check for restrictions.</li>
|
||||
</ol>
|
||||
<p>Currently, the restrictions are record-based and type-less. They act as simple tokens, and they have:</p>
|
||||
<ul>
|
||||
<li>A reason (e.g. the record requires approval)</li>
|
||||
<li>A purpose (e.g. the record cannot be posted).</li>
|
||||
</ul>
|
||||
<p>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.</p>
|
||||
<hr>
|
||||
<p><strong>Example</strong></p>
|
||||
<p>For example, we want to restrict posting Gen. Journal Lines if a customer has not been added in Account No. field.</p>
|
||||
<p>For this, the following components are needed:</p>
|
||||
<ol>
|
||||
<li>When a Gen. Journal Line is inserted, call RestrictRecordUsage in COD1550, either directly in the trigger or using an event subscriber.</li>
|
||||
<li>When you validate a Customer No. as Account no. and Customer as Account Type, lift the restrictions by calling AllowRecordUsage in COD1550.</li>
|
||||
<li>The consumption of the restriction at posting is already implemented as an event in TAB81, OnCheckGenJournalLinePostRestrictions. No further action necessary.</li>
|
||||
</ol>
|
||||
<p><strong>NAV Usage</strong></p>
|
||||
<p>All the approval workflows include a response that restricts usage of a record, and then, at the end of an approval loop, a response that allows the usage again by lifting the restriction. See responses “Add record restriction” and “Remove record restriction” implemented in COD1521.<a href=https://microsoft.sharepoint.com/teams/DynamicsNAV/Wiki/Nav%20Wiki%20Documents/NAV%20App%20Patterns/NAV%20App%20Patterns%20for%20Review/Data-Driven%20Blocked%20Entity.docx#_msocom_2><br>
|
||||
</a></p>
|
||||
<p>The code behind the “Add record restriction” workflow response:</p>
|
||||
<pre><code>RecRef.GETTABLE(Variant);
|
||||
Workflow.GET(WorkflowStepInstance."Workflow Code");
|
||||
RecordRestrictionMgt.RestrictRecordUsage(RecRef.RECORDID,STRSUBSTNO(RestrictUsageDetailsTxt,Workflow.Code,Workflow.Description));
|
||||
</code></pre>
|
||||
<p>The code behind the “Remove record restriction” response:</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>RecRef<span style=color:#f92672>.</span>GETTABLE<span style=color:#f92672>(</span><span style=color:#66d9ef>Variant</span><span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>CASE</span> RecRef<span style=color:#f92672>.</span>NUMBER <span style=color:#66d9ef>OF</span>
|
||||
<span style=color:#66d9ef>DATABASE</span>::"Approval Entry":
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
RecordRestrictionMgt<span style=color:#f92672>.</span>AllowRecordUsage<span style=color:#f92672>(</span>RecRef<span style=color:#f92672>.</span><span style=color:#66d9ef>RECORDID</span><span style=color:#f92672>)</span>;
|
||||
RecRef<span style=color:#f92672>.</span>SETTABLE<span style=color:#f92672>(</span>ApprovalEntry<span style=color:#f92672>)</span>;
|
||||
RecRef<span style=color:#f92672>.</span>GET<span style=color:#f92672>(</span>ApprovalEntry<span style=color:#f92672>.</span>"Record ID to Approve"<span style=color:#f92672>)</span>;
|
||||
AllowRecordUsage<span style=color:#f92672>(</span>RecRef<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
<span style=color:#66d9ef>DATABASE</span>::"Gen. Journal Batch":
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
RecRef<span style=color:#f92672>.</span>SETTABLE<span style=color:#f92672>(</span>GenJournalBatch<span style=color:#f92672>)</span>;
|
||||
RecordRestrictionMgt<span style=color:#f92672>.</span>AllowGenJournalBatchUsage<span style=color:#f92672>(</span>GenJournalBatch<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>
|
||||
<span style=color:#66d9ef>ELSE</span>
|
||||
RecordRestrictionMgt<span style=color:#f92672>.</span>AllowRecordUsage<span style=color:#f92672>(</span>RecRef<span style=color:#f92672>.</span><span style=color:#66d9ef>RECORDID</span><span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
</code></pre></div><p>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).</p>
|
||||
<hr>
|
||||
<p><strong>Consequences</strong></p>
|
||||
<p>Currently, there can only be one restriction per record. There are no restriction types.</p>
|
||||
<p>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.</p>
|
||||
<p><strong>NAV Versions</strong></p>
|
||||
<p>This pattern has been introduced in Dynamics NAV 2016.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061749></script>
|
||||
</body>
|
||||
</html>
|
||||
297
navpatterns/1-patterns/blocked-entity/index.html
Normal file
|
|
@ -0,0 +1,297 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<link rel=alternate type=application/rss+xml href=/bcalhelp/navpatterns/1-patterns/blocked-entity/index.xml title="BC AL Help">
|
||||
<meta name=description content>
|
||||
<title>Blocked Entity :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061749 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061749 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061749></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/blocked-entity/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061749></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class="dd-item active parent"><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/blocked-entity/_index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/blocked-entity/ aria-disabled=true><span itemprop=name>Blocked Entity</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#description>Description</a></li>
|
||||
<li><a href=#usage>Usage</a>
|
||||
<ul>
|
||||
<li><a href=#boolean-implementation>Boolean Implementation</a></li>
|
||||
<li><a href=#option-field-implementation>Option-Field Implementation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#nav-specific-example>NAV Specific Example</a>
|
||||
<ul>
|
||||
<li><a href=#boolean-implementation-1>Boolean Implementation</a></li>
|
||||
<li><a href=#option-field-implementation-1>Option-Field Implementation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#nav-usages>NAV Usages</a></li>
|
||||
<li><a href=#related-topics>Related Topics</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Blocked Entity</h1>
|
||||
<p><em>Originally by Abhishek Ghosh at Microsoft Development Center Copenhagen</em></p>
|
||||
<h2 id=abstract>Abstract</h2>
|
||||
<p>The Blocked Entity is used when it is required to stop transactions for an entity (mostly master data), temporarily or permanently.</p>
|
||||
<p><a href=2260.BlockedEntityPattern.png><img src=2260.BlockedEntityPattern.png alt=" "></a></p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>To block entities through metadata, read this pattern. To do the same thing through data, read <a href=/nav/w/designpatterns/247.data-driven-blocked-entity/edit>Data Driven Blocked Entity pattern</a>.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>In contrast, a permanent halt to transactions could be required when an item has become obsolete (or is about to become obsolete), and the company wants to stop further purchase or sale of the item. However, the company wants to maintain the transaction history of the item and, therefore, does not want to delete the item record.</p>
|
||||
<p>A simple design implementation of such requirements in Microsoft Dynamics NAV is to add a Blocked field in the entity table (and on the associated page). The implementation takes this state into the logic and checks for the value of this field in related transactions. For most simple scenarios, it is sufficient to have two states on the Blocked field, specifying whether it is allowed to perform transactions for the entity or not.</p>
|
||||
<p>In certain situations, however, there could be different levels of blocking. For example, the company could block all sales to a customer that has overdue payments, and the company does not want to allow transactions with this customer until the payments are received. In other situations, the customer may have raised objections about an invoice, and the company has decided not to generate new invoices for the customer until the issue has been resolved. However, the company does want to continue shipping goods to the customer so as not to impact the customer’s operations. In these scenarios, it may be necessary to have multiple states on the Blocked field depending on the level of restriction that is needed.</p>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p>As mentioned in the previous section, there are two implementations depending on business requirements: The 2-state Boolean field for simple implementations and the multi-state option field for more complex requirements. The implementation flow is similar for both patterns, except how the validation is implemented. The following discusses the two scenarios one by one.</p>
|
||||
<h3 id=boolean-implementation>Boolean Implementation</h3>
|
||||
<p>Add a Boolean field named Blocked in the table.</p>
|
||||
<p>In the relevant logic, add a condition to check the status of the Blocked flag. The cheapest way is to use a TESTFIELD:</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><rec variable\><span style=color:#f92672>.</span><span style=color:#66d9ef>TESTFIELD</span><span style=color:#f92672>(</span>Blocked,FALSE<span style=color:#f92672>)</span>;
|
||||
</code></pre></div><p>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.</p>
|
||||
<h3 id=option-field-implementation>Option-Field Implementation</h3>
|
||||
<p>Add an option field named Blocked in the table. The option values will reflect the different blocked states required by the company.</p>
|
||||
<p>Add this field on the card page (or on the List page if the entity does not have a card). As with the Boolean implementation, the convention is to add this field in the right-hand column in the General FastTab of the card page.</p>
|
||||
<p>Implement a function in the table that takes the transaction context as input and evaluates the Blocked field to decide whether the transaction should be allowed or not. Optionally, the function can be responsible for notifying the user and bubble up an error message straight away.</p>
|
||||
<p>Note: the option field assumes that only one of the multiple options can be active at a time. In other words, the options should be mutually exclusive.</p>
|
||||
<p>How not to use the option field in this case: if we want to block an item from sale and/or purchase, the 4 combined options would be <strong>Block none</strong> | <strong>Block Sales</strong> | <strong>Block Purchases</strong> | <strong>Block Sales and Purchases</strong>. This doesn’t scale, because if now we need to block another transaction, the number of option would grow too fast. In this situations, it is better to use two Boolean fields: <strong>Blocked Sale</strong>: <strong>true|false</strong> and <strong>Blocked Purchase: true|false</strong>.</p>
|
||||
<p>A good example of usage would be for varying the behavior depending on the chosen option, for example by displaying a different error message depending on the reason an Item is blocked. In this case we can have the item <strong>Not Blocked</strong> | <strong>Blocked due to defect</strong> | <strong>Blocked waiting for approval</strong>, etc.</p>
|
||||
<h2 id=nav-specific-example>NAV Specific Example</h2>
|
||||
<h3 id=boolean-implementation-1>Boolean Implementation</h3>
|
||||
<p><a href=8637.BlockedEntityPattern_5F00_5F00_5F00_Boolean.png><img src=8637.BlockedEntityPattern_5F00_5F00_5F00_Boolean.png alt=" "></a></p>
|
||||
<p>An example of the Boolean implementation on the Item card.</p>
|
||||
<p>In codeunit 22 – Item Jnl.-Post Line, the following lines of code have implemented a check based on the value of the Blocked field:</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>NOT</span> CalledFromAdjustment <span style=color:#66d9ef>THEN</span>
|
||||
Item<span style=color:#f92672>.</span><span style=color:#66d9ef>TESTFIELD</span><span style=color:#f92672>(</span>Blocked,FALSE<span style=color:#f92672>)</span>;
|
||||
</code></pre></div><h3 id=option-field-implementation-1>Option-Field Implementation</h3>
|
||||
<p><a href=3056.BlockedEntityPattern_5F00_5F00_5F00_Option.png><img src=3056.BlockedEntityPattern_5F00_5F00_5F00_Option.png alt=" "></a></p>
|
||||
<p>An example of the option field implementation on the Customer card.</p>
|
||||
<p>The CheckBlockedCustOnDocs and CheckBlockedCustOnJnls functions in the Customer table are responsible for validating the Blocked state with respect to the input document type. These functions are invoked in several areas, such as posting routines, where a status check on the Blocked field is required. This is a good practice where the Blocked implementation gets more complex, as this encourages reuse and ensures uniformity of implementation.</p>
|
||||
<h2 id=nav-usages>NAV Usages</h2>
|
||||
<p>Entities where the Blocked Entity has been implemented include:</p>
|
||||
<ul>
|
||||
<li>Item</li>
|
||||
<li>G/L Account</li>
|
||||
<li>Customer</li>
|
||||
<li>Vendor</li>
|
||||
<li>Bin</li>
|
||||
</ul>
|
||||
<h2 id=related-topics>Related Topics</h2>
|
||||
<p>The <a href=/nav/w/designpatterns/115.released-entity.aspx>Released Entity</a>.</p>
|
||||
<p><a href="https://www.youtube.com/watch?v=O2R-fTSup1o&list=PLhZ3P-LY7CqmVszuvtJLujFyHpsVN0U_w&index=16">watch?v=O2R fTSup1o&list=PLhZ3P LY7CqmVszuvtJLujFyHpsVN0Uw&index=16</a></p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061749></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061749></script>
|
||||
</body>
|
||||
</html>
|
||||
5
navpatterns/1-patterns/blocked-entity/index.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blocked Entity on BC AL Help</title><link>https://microsoft.github.io/bcalhelp/navpatterns/1-patterns/blocked-entity/</link><description>Recent content in Blocked Entity on BC AL Help</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://microsoft.github.io/bcalhelp/navpatterns/1-patterns/blocked-entity/index.xml" rel="self" type="application/rss+xml"/><item><title>Data Driven Blocked Entity</title><link>https://microsoft.github.io/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://microsoft.github.io/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/</guid><description>Written by Bogdan Andrei Sturzoiu, at Microsoft Development Center Copenhagen
|
||||
Abstract
|
||||
This pattern implements a generic mechanism for dynamically restricting and allowing usage of a record by the business process administrator.
|
||||
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.</description></item></channel></rss>
|
||||
|
After Width: | Height: | Size: 30 KiB |
341
navpatterns/1-patterns/cached-web-service-calls/index.html
Normal file
|
|
@ -0,0 +1,341 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Cached Web Server Calls :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/cached-web-service-calls/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ aria-disabled=true><span itemprop=name>Cached Web Server Calls</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#description>Description</a>
|
||||
<ul>
|
||||
<li><a href=#when-to-use-it>When to Use It</a></li>
|
||||
<li><a href=#diagram>Diagram</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#usage>Usage</a></li>
|
||||
<li><a href=#nav-specific-example>NAV Specific Example</a>
|
||||
<ul>
|
||||
<li><a href=#overview>Overview</a></li>
|
||||
<li><a href=#code-sample>Code Sample</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#nav-usages>NAV Usages</a></li>
|
||||
<li><a href=#ideas-for-improvement>Ideas for Improvement</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Cached Web Server Calls</h1>
|
||||
<p><em>Originally by Mostafa Balat, Microsoft Development Center Copenhagen</em></p>
|
||||
<h2 id=abstract>Abstract</h2>
|
||||
<p>In a service-oriented deployment, web services are used to extend NAV’s functionality and reach. Depending on how volatile this data is and the corresponding usage scheme, it is expected to be up-to-date within a pre-defined period of time (e.g. once a day).</p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>When NAV is integrated with external services, then the user scenarios become dependent on the data and functions offered by such services. Eventually, there are different approaches through which the external data can be retrieved, stored and used.</p>
|
||||
<ul>
|
||||
<li>Dynamic: either exposed by the external service itself or by a separate catalog that NAV can query.
|
||||
<ul>
|
||||
<li>Advantage: data is always up-to-date</li>
|
||||
<li>Disadvantage: it requires constant connection to the data source.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Static: hard-coded in the database for the user to benefit from.
|
||||
<ul>
|
||||
<li>Advantage: data is promptly available when needed.</li>
|
||||
<li>Disadvantage: if data changes at some point, it will require a maintenance effort, which exposes the business process to a risk of failure.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Cached: offered through an external service and gets pulled according to a pre-defined refresh rate or manually.
|
||||
<ul>
|
||||
<li>Advantage: data is ‘up-to-date’ within the rules acceptable by the business process, without extra load on the network resources or the external service.</li>
|
||||
<li>Disadvantage: if data changes while the auto-refresh did not happen yet, the user may not have access to the latest data; however, the user can manually force a refresh of the data, if asked to do so.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h3 id=when-to-use-it>When to Use It</h3>
|
||||
<p>Offer data in lookups that were cached from an external service.</p>
|
||||
<h3 id=diagram>Diagram</h3>
|
||||
<p><a href=Cached_5F00_Web_5F00_Service_5F00_Calls_5F00_Diagram.png><img src=Cached_5F00_Web_5F00_Service_5F00_Calls_5F00_Diagram.png alt=" "></a></p>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p>Set up an NAV feature to consume the data from an external service. Refresh the data on a pre-defined refresh rate (e.g. once a day) or when enforced by a power user or an admin. Cache the data in a table and offer it in lookups, as applicable.</p>
|
||||
<h2 id=nav-specific-example>NAV Specific Example</h2>
|
||||
<h3 id=overview>Overview</h3>
|
||||
<p><strong>PAG1259 Bank Name - Data Conv. List</strong> offers the required functionality to refresh and display the list of bank names needed to specify which file format to convert to. The page can be accessed from <strong>PAG1260 Bank Data Conv. Service Setup</strong> to display all available bank names. It is also used as a lookup on <strong>PAG370 Bank Account Card</strong>, where it offers a filtered view of the cached bank names based on the Country/Region Code field.</p>
|
||||
<p>If <strong>PAG1259 Bank Name - Data Conv. List</strong> is being open and the cached data is ‘old’, it refreshes the cache. The cached data is stored in <strong>TAB1259 Bank Data Conv. Bank</strong>. Meanwhile, the user has the chance to refresh the data using</p>
|
||||
<h3 id=code-sample>Code Sample</h3>
|
||||
<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>OnInit=<span style=color:#66d9ef>BEGIN</span>
|
||||
ShortTimeout <span style=color:#f92672>:=</span> <span style=color:#ae81ff>5000</span>;
|
||||
LongTimeout <span style=color:#f92672>:=</span> <span style=color:#ae81ff>30000</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
|
||||
OnOpenPage=<span style=color:#66d9ef>VAR</span>
|
||||
BankDataConvBank@<span style=color:#ae81ff>1002</span> : <span style=color:#66d9ef>Record</span> <span style=color:#ae81ff>1259</span>;
|
||||
ImpBankListExtDataHndl@<span style=color:#ae81ff>1000</span> : <span style=color:#66d9ef>Codeunit</span> <span style=color:#ae81ff>1289</span>;
|
||||
CountryRegionCode@<span style=color:#ae81ff>1004</span> : <span style=color:#66d9ef>Text</span>;
|
||||
HideErrors@<span style=color:#ae81ff>1003</span> : <span style=color:#66d9ef>Boolean</span>;
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
CountryRegionCode <span style=color:#f92672>:=</span> IdentifyCountryRegionCode<span style=color:#f92672>(</span>Rec,GETFILTER<span style=color:#f92672>(</span>"Country/Region Code"<span style=color:#f92672>))</span>;
|
||||
<span style=color:#66d9ef>IF</span> BankDataConvBank<span style=color:#f92672>.</span>ISEMPTY <span style=color:#66d9ef>THEN</span> <span style=color:#66d9ef>BEGIN</span>
|
||||
ImpBankListExtDataHndl<span style=color:#f92672>.</span>GetBankListFromConversionService<span style=color:#f92672>(</span>HideErrors,CountryRegionCode,ShortTimeout<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>EXIT</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
RefreshBankNamesOlderThanToday<span style=color:#f92672>(</span>CountryRegionCode,HideErrors,ShortTimeout<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
|
||||
OnAction=<span style=color:#66d9ef>VAR</span>
|
||||
ImpBankListExtDataHndl@<span style=color:#ae81ff>1000</span> : <span style=color:#66d9ef>Codeunit</span> <span style=color:#ae81ff>1289</span>;
|
||||
FilterNotUsed@<span style=color:#ae81ff>1001</span> : <span style=color:#66d9ef>Text</span>;
|
||||
ShowErrors@<span style=color:#ae81ff>1003</span> : <span style=color:#66d9ef>Boolean</span>;
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
ShowErrors <span style=color:#f92672>:=</span> TRUE;
|
||||
ImpBankListExtDataHndl<span style=color:#f92672>.</span>GetBankListFromConversionService<span style=color:#f92672>(</span>ShowErrors,FilterNotUsed,LongTimeout<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
|
||||
<span style=color:#66d9ef>LOCAL</span> <span style=color:#66d9ef>PROCEDURE</span> IdentifyCountryRegionCode@<span style=color:#ae81ff>1</span><span style=color:#f92672>(</span><span style=color:#66d9ef>VAR</span> BankDataConvBank@<span style=color:#ae81ff>1002</span> : <span style=color:#66d9ef>Record</span> <span style=color:#ae81ff>1259</span>;<span style=color:#66d9ef>Filter</span>@<span style=color:#ae81ff>1000</span> : <span style=color:#66d9ef>Text</span><span style=color:#f92672>) </span>: <span style=color:#66d9ef>Text</span>;
|
||||
<span style=color:#66d9ef>VAR</span>
|
||||
CompanyInformation@<span style=color:#ae81ff>1001</span> : <span style=color:#66d9ef>Record</span> <span style=color:#ae81ff>79</span>;
|
||||
BlankFilter@<span style=color:#ae81ff>1003</span> : <span style=color:#66d9ef>Text</span>;
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
BlankFilter <span style=color:#f92672>:=</span> <span style=color:#e6db74>''''''</span>;
|
||||
<span style=color:#66d9ef>IF</span> <span style=color:#66d9ef>Filter</span> = BlankFilter <span style=color:#66d9ef>THEN</span> <span style=color:#66d9ef>BEGIN</span>
|
||||
CompanyInformation<span style=color:#f92672>.</span>GET;
|
||||
BankDataConvBank<span style=color:#f92672>.</span>SETFILTER<span style=color:#f92672>(</span>"Country/Region Code",CompanyInformation<span style=color:#f92672>.</span>"Country/Region Code"<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>EXIT</span><span style=color:#f92672>(</span>BankDataConvBank<span style=color:#f92672>.</span>GETFILTER<span style=color:#f92672>(</span>"Country/Region Code"<span style=color:#f92672>))</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
<span style=color:#66d9ef>EXIT</span><span style=color:#f92672>(</span><span style=color:#66d9ef>Filter</span><span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
|
||||
<span style=color:#66d9ef>LOCAL</span> <span style=color:#66d9ef>PROCEDURE</span> RefreshBankNamesOlderThanToday@<span style=color:#ae81ff>5</span><span style=color:#f92672>(</span>CountryRegionCode@<span style=color:#ae81ff>1000</span> : <span style=color:#66d9ef>Text</span>;ShowErrors@<span style=color:#ae81ff>1002</span> : <span style=color:#66d9ef>Boolean</span>;Timeout@<span style=color:#ae81ff>1004</span> : <span style=color:#66d9ef>Integer</span><span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>VAR</span>
|
||||
BankDataConvBank@<span style=color:#ae81ff>1001</span> : <span style=color:#66d9ef>Record</span> <span style=color:#ae81ff>1259</span>;
|
||||
ImpBankListExtDataHndl@<span style=color:#ae81ff>1003</span> : <span style=color:#66d9ef>Codeunit</span> <span style=color:#ae81ff>1289</span>;
|
||||
<span style=color:#66d9ef>BEGIN</span>
|
||||
<span style=color:#66d9ef>IF</span> CountryRegionCode <\> <span style=color:#e6db74>''</span> <span style=color:#66d9ef>THEN</span>
|
||||
BankDataConvBank<span style=color:#f92672>.</span>SETFILTER<span style=color:#f92672>(</span>"Country/Region Code",CountryRegionCode<span style=color:#f92672>)</span>;
|
||||
BankDataConvBank<span style=color:#f92672>.</span>SETFILTER<span style=color:#f92672>(</span>"Last Update Date",<span style=color:#e6db74>'<%1'</span>,TODAY<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>IF</span> BankDataConvBank<span style=color:#f92672>.</span>FINDFIRST <span style=color:#66d9ef>THEN</span>
|
||||
ImpBankListExtDataHndl<span style=color:#f92672>.</span>GetBankListFromConversionService<span style=color:#f92672>(</span>ShowErrors,CountryRegionCode,Timeout<span style=color:#f92672>)</span>;
|
||||
<span style=color:#66d9ef>END</span>;
|
||||
</code></pre></div><h2 id=nav-usages>NAV Usages</h2>
|
||||
<p>Bank name lookup on the Bank Account card for dynamically identifying the format to use to generate a bank-specific payment file.</p>
|
||||
<h2 id=ideas-for-improvement>Ideas for Improvement</h2>
|
||||
<p>Expose the refresh rate through a setup table to make it easily configurable without changing the code.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 31 KiB |
251
navpatterns/1-patterns/conditional-cascading-update/index.html
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Conditional Cascading Update :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/conditional-cascading-update/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ aria-disabled=true><span itemprop=name>Conditional Cascading Update</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract><strong>Abstract</strong></a></li>
|
||||
<li><a href=#description><strong>Description</strong></a></li>
|
||||
<li><a href=#usage><strong>Usage</strong></a></li>
|
||||
<li><a href=#nav-specific-example><strong>NAV Specific Example</strong></a></li>
|
||||
<li><a href=#consequences><strong>Consequences</strong></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Conditional Cascading Update</h1>
|
||||
<p>_Originally by Jan Hoek at IDYN _</p>
|
||||
<h2 id=abstract><strong>Abstract</strong></h2>
|
||||
<p>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”.</p>
|
||||
<h2 id=description><strong>Description</strong></h2>
|
||||
<p>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.</p>
|
||||
<p>If the target field is non-editable, said transformation is usually the only way for the target field to receive new values, so no irreproducible information can be lost. However, if the target field is editable, the user may have cared enough to override the default (transformed) value, in which case revalidating the source field should not blindly replace the target field’s value.</p>
|
||||
<h2 id=usage><strong>Usage</strong></h2>
|
||||
<p>In the OnValidate trigger of the source field, test if the target field value is either blank, or equal to the transformed value of the source field’s previous contents. If it is, populate the target field’s value with the transformed source field value. If it is not, do nothing (effectively preserving the value set by the user).</p>
|
||||
<h2 id=nav-specific-example><strong>NAV Specific Example</strong></h2>
|
||||
<p>In the base application, this pattern can be found in Search Name/Search Description fields, which are updated with the uppercase value from the corresponding Name/Description field when the latter is validated, only if the Search Name/Description in question is currently blank, or equal to the (uppercase equivalent) of the previous contents of the Name/Description field.</p>
|
||||
<p><a href=3124.T18_5F00_Name_5F00_OnValidate.png><img src=3124.T18_5F00_Name_5F00_OnValidate.png alt=" "></a></p>
|
||||
<p>In this particular case, the transformation between source and target fields is implicit and due to the different data types of the fields (text vs. code). Note how the field triggers of the Search Name field itself do not contain any logic linked to this pattern.</p>
|
||||
<h2 id=consequences><strong>Consequences</strong></h2>
|
||||
<p>There is a case when this pattern should not be used. If the target field is non-editable, this pattern will not add any value, since there won’t be any user-overridden values to protect.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
navpatterns/1-patterns/copy-document/clip_5F00_image006.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
navpatterns/1-patterns/copy-document/clip_5F00_image008.jpg
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
navpatterns/1-patterns/copy-document/clip_5F00_image010.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
310
navpatterns/1-patterns/copy-document/index.html
Normal file
|
|
@ -0,0 +1,310 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Copy Document :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/copy-document/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/copy-document/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/copy-document/ aria-disabled=true><span itemprop=name>Copy Document</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#description>Description</a></li>
|
||||
<li><a href=#usage>Usage</a></li>
|
||||
<li><a href=#usage-sequence>Usage Sequence</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Copy Document</h1>
|
||||
<p><em>By Bogdan Sturzoiu at Microsoft Development Center Copenhagen</em></p>
|
||||
<h2 id=abstract>Abstract</h2>
|
||||
<p>The goal of the Copy Document pattern is to create a replica of an existing open or closed document (posted or not posted), by moving the lines and, optionally, the header information from the source document to a destination document.</p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>Documents are widely used by most of our customers. Many times, a significant portion of these documents are similar to each other, either by sharing the same customer, vendor, type, or line structure. Being able to re-use a document as a base for creating a new one is therefore an important means of saving time.</p>
|
||||
<p>Other business scenarios require that a newly created document is applied to an existing document. For example, in returns management, a return order can be the reversal of an existing order and can therefore be copied from the original order. Other times, there is even a legal requirement to match the document to its source. For example, credit memos need to be applied to the originating Invoice.</p>
|
||||
<p>For these reasons, NAV supports the copying of documents as a method to re-use or link documents.</p>
|
||||
<p>The Copy Document functionality is used in the following situations:</p>
|
||||
<ul>
|
||||
<li>The user wants to create a new open sales document (Quote, Order, Blanket Order, Invoice, Return Order, Credit Memo) based on an existing posted or non-posted sales document (Quote, Blanket Order, Order, Invoice, Return Order, Credit Memo, Posted Shipment, Posted Invoice, Posted Return Receipt, Posted Credit Memo).</li>
|
||||
<li>The user wants to create a new open purchase document (Quote, Order, Blanket Order, Invoice, Return Order, Credit Memo) based on an existing posted or non-posted purchase document (Quote, Blanket Order, Order, Invoice, Return Order, Credit Memo, Posted Shipment, Posted Invoice, Posted Return Receipt, Posted Credit Memo).</li>
|
||||
<li>The user wants to create a new production order (Simulated, Planned, Firm Planned or Released) based on an existing production order (Simulated, Planned, Firm Planned, Released or Finished).</li>
|
||||
<li>The user wants to create a new assembly order based on an existing assembly document (Quote, Blanket Order, Order and Posted Order).</li>
|
||||
<li>The user wants to create a new service contract or quote based on an existing service contract or quote.</li>
|
||||
<li>The user wants to create all relevant return-related documents. For example, from a sales return order, the user can recreate the involved supply chain documentation, by copying the information upwards to a purchase return order (if the items need to be returned to the vendor), purchase order (if the items need to be reordered), and sales order (if the items need to be re-sent to the customer).</li>
|
||||
</ul>
|
||||
<p><strong>Note</strong></p>
|
||||
<ul>
|
||||
<li>Not all to and from combinations are allowed. For example, you can only copy to open document types, since the posted documents are not editable.</li>
|
||||
<li>The destination document needs to have the header fully created. For example, a Sales Order will need to have the Sell-To Customer No. populated.</li>
|
||||
</ul>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p>The Dynamics NAV application developer can take into account using the Copy Document design pattern when they have requirements such as:</p>
|
||||
<ul>
|
||||
<li>To provide a quick and efficient way of moving content from a document to another.</li>
|
||||
<li>To allow reusing the document history as a template for new documents.</li>
|
||||
<li>To allow linking of documents that need to be applied to each other.</li>
|
||||
</ul>
|
||||
<p>The Copy Document pattern involves the following entities:</p>
|
||||
<ol>
|
||||
<li>Source document tables for document header and line. For example,Sales Header/Line.</li>
|
||||
<li>Destination document tables for document header and line.</li>
|
||||
</ol>
|
||||
<p>**Note:**The source document header/line and destination document header/line tables do not need to be the same. For example, you can copy a Sales Shipment Header/Lines into a Sales Header/Lines.
|
||||
3. Copy Document engine: COD6620, Copy Document Mgt.
|
||||
4. Copy Document report for a specific document type. The report requires the following parameters:</p>
|
||||
<ul>
|
||||
<li>Source Document Type</li>
|
||||
<li>Source Document No.</li>
|
||||
<li>Include Header (optional)</li>
|
||||
<li>Recalculate Lines (optional)
|
||||
Example: REP901, Copy Assembly Document</li>
|
||||
</ul>
|
||||
<p><a href=/cfs-file/__key/communityserver-wikis-components-files/00-00-00-00-42/clip_5F00_image002.gif><img src=/resized-image/__size/750x0/__key/communityserver-wikis-components-files/00-00-00-00-42/clip_5F00_image002.gif alt=" "></a></p>
|
||||
<h2 id=usage-sequence>Usage Sequence</h2>
|
||||
<p><strong>Precondition</strong>: The user creates a new destination document Header, filling up the required information.</p>
|
||||
<p><strong>Step 1</strong>: The user runs the Copy Document report (element no. 4), filling up the parameters:</p>
|
||||
<ul>
|
||||
<li>Source Document Type</li>
|
||||
<li>Source Document No.</li>
|
||||
<li>Include Header and/or Recalculate Lines (not all Copy Document reports have these).</li>
|
||||
</ul>
|
||||
<p><strong>Step 2</strong>: The report copies the information in the source tables (Header and Line) into the destination tables (Header and Line).</p>
|
||||
<p><strong>Post processing</strong>: The user performs additional editing of the destination document.</p>
|
||||
<p>The sequence flow of the pattern is described in the following diagram.</p>
|
||||
<p><a href=/cfs-file/__key/communityserver-wikis-components-files/00-00-00-00-42/clip_5F00_image004.gif><img src=/resized-image/__size/750x0/__key/communityserver-wikis-components-files/00-00-00-00-42/clip_5F00_image004.gif alt=" "></a></p>
|
||||
<p>Example: Copy Sales Document for Credit Memos.</p>
|
||||
<p>In the standard version of Microsoft Dynamics NAV, the Copy Document functionality is implemented in the Sales Credit Memo window as shown in the following section.</p>
|
||||
<p>***</p>
|
||||
<p><strong>Precondition</strong>: The user enters data in PAGE44, Sales Credit Memo.</p>
|
||||
<p><a href=clip_5F00_image006.jpg><img src=clip_5F00_image006.jpg alt=" "></a></p>
|
||||
<p><strong>Step 1</strong>: The user runs REP292, Copy Sales Document from the Sales Credit Memo window, populating the required parameters. The Include Header and Recalculate Lines fields are selected.</p>
|
||||
<p><a href=clip_5F00_image008.jpg><img src=clip_5F00_image008.jpg alt=" "></a></p>
|
||||
<p><strong>Step 2</strong>: The Sales Credit Memo window is populated with information from the source sales document.</p>
|
||||
<p><a href=clip_5F00_image010.jpg><img src=clip_5F00_image010.jpg alt=" "></a></p>
|
||||
<p><strong>Post processing</strong>: The user can now do additional editing of the sales credit memo.</p>
|
||||
<h1 id=nav-implementations>NAV Implementations</h1>
|
||||
<ol>
|
||||
<li>Copy Sales Document (REP292)</li>
|
||||
<li>Copy Purchase Document (REP492)</li>
|
||||
<li>Copy Service Document (REP5979)</li>
|
||||
<li>Copy Assembly Document (REP901)</li>
|
||||
</ol>
|
||||
<p><a href="https://www.youtube.com/watch?v=aTiwroXwW_0&list=PLhZ3P-LY7CqmVszuvtJLujFyHpsVN0U_w&index=17">watch?v=aTiwroXwW0&list=PLhZ3P LY7CqmVszuvtJLujFyHpsVN0Uw&index=17</a></p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 85 KiB |
391
navpatterns/1-patterns/create-data-from-templates/index.html
Normal file
|
|
@ -0,0 +1,391 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Create Data from Templates :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/create-data-from-templates/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ aria-disabled=true><span itemprop=name>Create Data from Templates</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#description>Description</a></li>
|
||||
<li><a href=#usage>Usage</a></li>
|
||||
<li><a href=#nav-specific-example>NAV Specific Example</a></li>
|
||||
<li><a href=#nav-usages>NAV Usages</a></li>
|
||||
<li><a href=#ideas-for-improvement>Ideas for improvement</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Create Data from Templates</h1>
|
||||
<p><em>Originally by Nikola Kukrika at Microsoft Development Center Copenhagen</em></p>
|
||||
<h2 id=abstract>Abstract</h2>
|
||||
<p>For many records, such as Items, Customers, and Vendors, users have to enter the same sets of data again and again. This is tedious, error-prone (users forget to enter a field or they choose the wrong group), and difficult to learn for some users.</p>
|
||||
<p>We can group sets of data as templates to speed up and simplify the process of entering data in Microsoft Dynamics NAV. For example, the process of creating a new customer could be simplified so that users only have to enter information that is specific for every individual customer, e.g. Name and Address/Contact.</p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>This pattern solves the problem of creating new records based on their type. You should use it whenever there is a large set of data that could be grouped in a meaningful way.</p>
|
||||
<p>In Microsoft Dynamics NAV 2013 R2, we have extended the Configuration Templates feature so that templates can be used in different languages than the language they were created in. We have also added the ability to set related templates so that related records can be inserted, such as dimensions for customers, items, and vendors.</p>
|
||||
<p>The pattern consists of two parts:</p>
|
||||
<p>1. Using templates to create new records or applying templates to existing records</p>
|
||||
<p>2. Defining and updating existing templates</p>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p><a href=4118.Picture1.png><img src=4118.Picture1.png alt=" "></a></p>
|
||||
<p>Using the patterns involves three steps.</p>
|
||||
<ol>
|
||||
<li>
|
||||
<p>As a first step, we must insert a record. This can be done either through C/AL code or by letting the user create a record using the <strong>New</strong> action.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>After the record is created, we must apply the template. This is done by using the <strong>UpdateRecord</strong> function in the **Config. Template Management **codeunit (8612).</p>
|
||||
</li>
|
||||
</ol>
|
||||
<p><strong>Config. Template Lines</strong> records reference one <strong>Config. Template Header</strong> record (lines pattern). The lines can be of type:</p>
|
||||
<ul>
|
||||
<li><strong>Field</strong> - Stores a field value that will be applied to the record</li>
|
||||
<li><strong>Related</strong> Template – References a Config. Template Header record for a related template.</li>
|
||||
</ul>
|
||||
<p>The <strong>UpdateRecord</strong> function applies values to the record one line at the time. One of the requirements was to be possible to use configuration templates in different language/regional settings than the template was created in.</p>
|
||||
<p>To support this scenario, when applying the<strong>Config. Template Line</strong> record, <strong>GLOBALLANGUAGE</strong> is set to the language ID of the field. This is important because the default value is stored as text, so we need to use the same formatting that NAV was running on when the template was created. Otherwise, data types, such as Boolean, Date, etc., will raise validation errors.</p>
|
||||
<p>Any updates to a <strong>Config. Template Line</strong> record will automatically update the language ID to the current one. Since lines are applied one by one, it is supported to have lines with different language IDs belonging to the same template.</p>
|
||||
<ol start=3>
|
||||
<li>After we have applied the template to the record, we can insert related templates. For example, when you insert an item, you may want to insert dimensions as well. You must implement the logic to apply or then modify the related templates, since this depends on the logic and the relationship between the records. Lines with <strong>Type = Related Template</strong> are used to reference related templates.</li>
|
||||
</ol>
|
||||
<p>Code example (Insert a record, apply a template, and insert the related templates):</p>
|
||||
<p><strong>// First insert a record Customer.INSERT(TRUE);</strong></p>
|
||||
<p><strong>// Apply a template RecRef.GETTABLE(Customer);</strong></p>
|
||||
<p>ConfigTemplateMgt.UpdateRecord(ConfigTemplateHeader,RecRef);</p>
|
||||
<p>RecRef.SETTABLE(Customer);</p>
|
||||
<p><strong>// Insert Dimensions – related templates</strong></p>
|
||||
<p>MiniDimensionsTemplate.InsertDimensionsFromTemplates(ConfigTemplateHeader,Customer.“No.",DATABASE::Customer);</p>
|
||||
<p>Code to insert related templates (dimensions):</p>
|
||||
<p><strong>FUNCTION InsertDimensionsFromTemplates(ConfigTemplateHeader : Record “Config. Template Header”;MasterRecordNo : Code[20];TableID : Integer)</strong></p>
|
||||
<p><strong>// There are multiple records (multiple dimensions per master record)</strong></p>
|
||||
<p><strong>// We have to set filter</strong>****</p>
|
||||
<p>ConfigTemplateLine.SETRANGE(Type,ConfigTemplateLine.Type::“Related Template”);****</p>
|
||||
<p>ConfigTemplateLine.SETRANGE(“Data Template Code”,ConfigTemplateHeader.Code);****</p>
|
||||
<hr>
|
||||
<p>IF ConfigTemplateLine.FINDSET THEN****</p>
|
||||
<p>REPEAT****</p>
|
||||
<p>ConfigTemplateHeader.GET(ConfigTemplateLine.“Template Code”);</p>
|
||||
<p><strong>// Ensure that the table where the template belongs to is Dimensions</strong></p>
|
||||
<p><strong>// We could have other related templates</strong>****</p>
|
||||
<p>IF ConfigTemplateHeader.“Table ID” = DATABASE::“Default Dimension” THEN****</p>
|
||||
<p>InsertDimensionFromTemplate(ConfigTemplateHeader,MasterRecordNo,TableID);****</p>
|
||||
<p>UNTIL ConfigTemplateLine.NEXT = 0;****</p>
|
||||
<hr>
|
||||
<p><strong>// Create a new Dimensions Record and link it to the Master Record</strong>****</p>
|
||||
<p><strong>FUNCTION InsertDimensionFromTemplate(ConfigTemplateHeader : Record “Config. Template Header”;MasterRecordNo : Code[20];TableID : Integer)</strong></p>
|
||||
<p>DefaultDimension.INIT;</p>
|
||||
<p>DefaultDimension.“No.” := MasterRecordNo;****</p>
|
||||
<p>DefaultDimension.“Table ID” := TableID;****</p>
|
||||
<p>DefaultDimension.“Dimension Code” := GetDefaultDimensionCode(ConfigTemplateHeader);****</p>
|
||||
<p>DefaultDimension.INSERT;****</p>
|
||||
<hr>
|
||||
<p>RecRef.GETTABLE(DefaultDimension);****</p>
|
||||
<p>ConfigTemplateMgt.UpdateRecord(ConfigTemplateHeader,RecRef);****</p>
|
||||
<p>RecRef.SETTABLE(DefaultDimension);</p>
|
||||
<p><strong>To surface the action in the product, you have three options:</strong></p>
|
||||
<ol>
|
||||
<li><strong>Recommended</strong> - Implement a separate action called <strong>New from Template</strong>.</li>
|
||||
<li><strong>Optional</strong> - Implement the apply template function on the document itself. This is especially good in scenarios where users are allowed to change the template.</li>
|
||||
<li><strong>Alternative</strong> - Remove the new action by configuration or set Insert Allowed to FALSE on the list (this will block the creation of new records from the lookup). Implement an application action named <strong>New</strong> and tie it to your code.</li>
|
||||
</ol>
|
||||
<p>**Note: ** In Microsoft Dynamics C5 2014, we chose to remove the <strong>New</strong> action with configuration since we wanted to promote the functionality and avoid the confusion in having too many options. However this might be difficult to maintain with a larger set of pages.</p>
|
||||
<p><strong>To view or edit templates, you have two options:</strong></p>
|
||||
<ol>
|
||||
<li>Use the <strong>Config. Template List</strong> table (8620) and the **Config. Template Header Card **table (8618).</li>
|
||||
</ol>
|
||||
<p>This is a generic solution that is not very usable and is error-prone (no lookups, checks for length, table relation checks, etc.) The default value is a text field of 250 characters, which might be much more than the field length, and may lead to validation errors when used. Users will most likely not be able to use this page.</p>
|
||||
<p><a href=2816.Picture3.png><img src=2816.Picture3.png alt=" "></a></p>
|
||||
<p>2. Implement custom pages resembling the document.</p>
|
||||
<p>This is optional if you want to enable the users to create and modify templates. In C5 2014, we created temporary tables with the same fields as the main record. Based on this temporary record, we built a page that resembles a document.</p>
|
||||
<p>Example of the <strong>Customer Template</strong> page:</p>
|
||||
<p><a href=7271.Picture4.png><img src=7271.Picture4.png alt=" "></a></p>
|
||||
<p>The goals of this solution were:</p>
|
||||
<ul>
|
||||
<li>To make the setup page resemble a document page so that it is easy to use with basic validation and lookups.</li>
|
||||
<li>To have only one place to store templates and maintain only one business logic for applying them, namely in the <strong>Configuration Template Header</strong> table.</li>
|
||||
<li>To avoid any lateral effects of doing validation on the temporary master record. Doing validation on fields, even though the record itself is temporary, could permanently modify other data in the database. For example, if you insert a new record in the <strong>Customer</strong> table, even in a temporary table, a Contact record is created, which will not be temporary.</li>
|
||||
<li>Testability: It is easy to test through RecordRef that the template table matches the main table. We can compare field lengths, data types, table relations, etc. The test is able to detect that they are out of sync, so it is easy to prevent errors.</li>
|
||||
</ul>
|
||||
<p>One example in the product is the **Mini Customer Template **table (1300).</p>
|
||||
<p>The table itself contains very little code. OnModify, OnInsert, and OnDelete triggers update the <strong>Configuration Header</strong> and <strong>Configuration Lines</strong> tables. The following functions in the **Config. Template Management **codeunit (8612), are used for this:</p>
|
||||
<ul>
|
||||
<li>ConfigTemplateManagement.CreateConfigTemplateAndLines</li>
|
||||
<li>ConfigTemplateManagement.UpdateConfigTemplateAndLines</li>
|
||||
<li>ConfigTemplateManagement.DeleteRelatedTemplates</li>
|
||||
</ul>
|
||||
<p>The CreateFieldRefArray function is used as an interface function on all the temporary template tables. It builds data to be read/written to the configuration templates.</p>
|
||||
<p>To further enhance the usability, we have provided the following additional functionality:</p>
|
||||
<ul>
|
||||
<li>Create a template from the existing record: The user opens an existing record and creates a template from that record. All the fields that are defined in the CreateFieldRefArray function are used to create the new template.</li>
|
||||
<li>Templates list: This page is used by users to select templates or create new ones. Depending on which templates they are working on, we show different template cards.</li>
|
||||
</ul>
|
||||
<h2 id=nav-specific-example>NAV Specific Example</h2>
|
||||
<p>In C5 2014, this is the workflow:</p>
|
||||
<p>The user opens the <strong>Customers List</strong> window and selects <strong>New</strong></p>
|
||||
<p>**<a href=4341.Picture4.png><img src=4341.Picture4.png alt=" "></a>**</p>
|
||||
<p>**<a href=4341.Picture4.png></a>**From this page, the user can view the template, edit it, or create a new one. Selecting a template will populate the customer card and open a new record. From the existing record, the user has options to save as a template or opening a list of templates to maintain available templates. Selecting a template will populate the customer card and open a new record. From the existing record, the user has options to save as a template or opening a list of templates to maintain available templates.</p>
|
||||
<p><a href=3482.Picture-5.png><img src=3482.Picture-5.png alt=" "></a></p>
|
||||
<p>From the **Customer Card Template **window, we can invoke the <strong>Dimensions</strong> action, through which we can define the dimensions that will be inserted together with the template:</p>
|
||||
<p><a href=2134.Picture6.png><img src=2134.Picture6.png alt=" "></a></p>
|
||||
<h2 id=nav-usages>NAV Usages</h2>
|
||||
<p>This pattern is used in Microsoft Dynamics C5 2014 in the following objects:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>Temporary template tables:</p>
|
||||
<ul>
|
||||
<li>**Mini Customer Template **table (1300)</li>
|
||||
<li>**Mini Item Template **table (1301)</li>
|
||||
<li><strong>Mini Dimensions Template</strong> table(1302)</li>
|
||||
<li><strong>Mini Vendor Template</strong> table (1303)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Pages to define templates:</p>
|
||||
<ul>
|
||||
<li><strong>Mini Customer Template Card</strong> page (1341)</li>
|
||||
<li>**Mini Item Template Card **page (,1342)</li>
|
||||
<li><strong>Mini Dimensions Template List</strong> page (1343)</li>
|
||||
<li><strong>Mini Vendor Template Card</strong> page (1344)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Pages that use the templates:</p>
|
||||
<ul>
|
||||
<li><strong>Mini Customer List</strong> page (1301)</li>
|
||||
<li><strong>Mini Item List</strong> page ( 1303)</li>
|
||||
<li><strong>Mini Vendor List</strong> page (1331)</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>In the standard version of Microsoft Dynamics NAV, we use the <strong>Apply Template</strong> action on the following pages:</p>
|
||||
<ul>
|
||||
<li><strong>Customer Card</strong> page (21)</li>
|
||||
<li><strong>Vendor Card</strong> page (26)</li>
|
||||
<li><strong>Item Card</strong> page (30)</li>
|
||||
<li><strong>Resource Card</strong> page (, 76)</li>
|
||||
<li>Other similar cards.</li>
|
||||
</ul>
|
||||
<h2 id=ideas-for-improvement>Ideas for improvement</h2>
|
||||
<p>Implement the solution in the standard version of Microsoft Dynamics NAV and extend the Apply Template functionality to insert dimensions.</p>
|
||||
<p>It is possible that users end up with a large number of templates if they need many different data combinations. An improvement could be to split templates into smaller groups, grouping only part of the fields that are related, and then apply only these.</p>
|
||||
<p><a href="https://www.youtube.com/watch?v=F0CTvoyKSmI&list=PLhZ3P-LY7CqmVszuvtJLujFyHpsVN0U_w&index=20">watch?v=F0CTvoyKSmI&list=PLhZ3P LY7CqmVszuvtJLujFyHpsVN0Uw&index=20</a></p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
navpatterns/1-patterns/create-urls-to-nav-clients/1778.url1.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
navpatterns/1-patterns/create-urls-to-nav-clients/7802.url2.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
390
navpatterns/1-patterns/create-urls-to-nav-clients/index.html
Normal file
|
|
@ -0,0 +1,390 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Create URLs to NAV Clients :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/create-urls-to-nav-clients/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ aria-disabled=true><span itemprop=name>Create URLs to NAV Clients</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#description>Description</a></li>
|
||||
<li><a href=#usage>Usage</a></li>
|
||||
<li><a href=#when-to-use>When to Use</a></li>
|
||||
<li><a href=#examples-of-usage>Examples of Usage</a></li>
|
||||
<li><a href=#nav-specific-example>NAV Specific Example</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Create URLs to NAV Clients</h1>
|
||||
<p><em>By Mike Borg Cardona and Bogdana Botez at Microsoft Development Center Copenhagen</em></p>
|
||||
<h2 id=abstract>Abstract</h2>
|
||||
<p>This article illustrates NAV platform functionality to be used by C/AL developers.</p>
|
||||
<p>The URL builder function, GETURL, is released in Microsoft Dynamics NAV 2013 R2 to reduce coding time for developers who need to create various URL strings to run application objects in either the win client, the web client, or on web services. In addition, the GETURL function makes multitenancy features more transparent to C/AL developers.</p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>Ever had to construct win client URLs like the one below?</p>
|
||||
<p>dynamicsnav://myserver:7046/myInstance/myCompany/runpage?page=26</p>
|
||||
<p>Today, Microsoft Dynamics NAV also provides a web client. This means that you must update your code to construct web client URLs too. What about multitenancy? The URL Builder should know if it is running in a multitenant setup and it should know how to choose the right tenant. What about maintaining this code?</p>
|
||||
<p>The good news is that GETURL has been introduced to handle all URL building for you.</p>
|
||||
<p>GETURL automatically handles:</p>
|
||||
<ul>
|
||||
<li>Multitenancy</li>
|
||||
<li>Correct URL format for each client</li>
|
||||
<li>Publicly accessible hostnames.</li>
|
||||
</ul>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p>The format is:</p>
|
||||
<p>[String :=] GETURL(ClientType[, Company][, Object Type][, Object Id][, Record])</p>
|
||||
<p>Where:</p>
|
||||
<ul>
|
||||
<li><strong>Client Type</strong> can be: Current, Default, Windows, Web, SOAP, or OData. This enables a range of scenarios for the C/AL developer, such as moving to the web client without changing code to decide where the URL should point to. This is done either by setting Client Type to Current, and just ensuring that web is used to invoke the link creation, or by setting Client Type to Default and changing its value to Web when it is ready to move to the web platform.</li>
|
||||
<li><strong>Object Type</strong> and <strong>Object ID</strong> define the type of the application object to run (Table, Page, Report, Codeunit, Query, or XMLport) and its ID.</li>
|
||||
<li><strong>Record</strong> specifies the actual data to run the URL on, such as:</li>
|
||||
</ul>
|
||||
<p>Vendor.GET(“Account No.");</p>
|
||||
<p>GETURL(CLIENTTYPE:WEB,COMPANYNAME, OBJECTTYPE::Page,27,Vendor)</p>
|
||||
<p><strong>Note</strong>: It is currently not possible to set filters on the record that you sent as a last parameter to the GETURL function. However, it is possible to write your own code to compute and append the filter string to the URL that is created by the GETURL function.</p>
|
||||
<p>The server name and instance are extracted automatically by GETURL and do not need to be specified by the C/AL developer. Furthermore, the multitenancy setup is transparent to the C/AL developer. No multitenancy parameters are specified when you call GETURL, because the function knows from the server setup if it is running in a multitenant environment and if so, it will add a string like “&tenant=MyTenant” to the URL.</p>
|
||||
<h2 id=when-to-use>When to Use</h2>
|
||||
<p>The GETURL function can generally be used every time a URL must be created. The following are some scenarios where the function is particularly useful.</p>
|
||||
<ul>
|
||||
<li>Document approvals. For more information, see the “NAV Usage Example” section.</li>
|
||||
<li>Reports containing drill-down links. (Beware of the resource cost of adding a new URL element to the Report dataset.)</li>
|
||||
<li>When planning to write code for, or migrate to, various display targets (Microsoft Dynamics NAV Windows client, Microsoft Dynamics NAV web client, Microsoft Dynamics NAV web services) without having to explicitly specify which client to use.</li>
|
||||
</ul>
|
||||
<h2 id=examples-of-usage>Examples of Usage</h2>
|
||||
<p>The following are examples of calls to GETURL and their corresponding return value:</p>
|
||||
<p><strong>Command</strong></p>
|
||||
<p><strong>URL</strong></p>
|
||||
<p>GETURL(CLIENTTYPE::Win)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71//</p>
|
||||
<p>GETURL(CLIENTTYPE::Web)</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient</p>
|
||||
<p>GETURL(CLIENTTYPE::OData)</p>
|
||||
<p>http://MyServer:7048/DynamicsNAV71/OData</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP)</p>
|
||||
<p>http://MyServer:7047/DynamicsNAV71/WS/Services</p>
|
||||
<p>GETURL(CLIENTTYPE::Current) ie. When running this code on a Win client session</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71//</p>
|
||||
<p>GETURL(CLIENTTYPE::Default) ie. When the Server config key DefaultClient is set to Windows</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71//</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,'')</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71//</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,‘NONEXISTING Corp’)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/NONEXISTING Corp/</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME)</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,'')</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,‘NONEXISTING Corp’)</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=NONEXISTING Corp</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME)</p>
|
||||
<p>http://MyServer:7048/DynamicsNAV71/OData/Company(‘CRONUS’)</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,'')</p>
|
||||
<p>http://MyServer:7048/DynamicsNAV71/OData</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,‘NONEXISTING Corp’)</p>
|
||||
<p>http://MyServer:7048/DynamicsNAV71/OData/Company(‘NONEXISTING Corp’)</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME)</p>
|
||||
<p>http://MyServer:7047/DynamicsNAV71/WS/CRONUS/Services</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,'')</p>
|
||||
<p>http://MyServer:7047/DynamicsNAV71/WS/Services</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,‘NONEXISTING Corp’)</p>
|
||||
<p>http://MyServer:7047/DynamicsNAV71/WS/NONEXISTING Corp/Services</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Table,27)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runtable?table=27</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,27)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runpage?page=27</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Report,6)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runreport?report=6</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Codeunit,5065)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runcodeunit?codeunit=5065</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Query,9150)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runquery?query=9150</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::XmlPort,5150)</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runxmlport?xmlport=5150</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Page,27) ie. When the Web Service is published</p>
|
||||
<p>http://MyServer:7048/DynamicsNAV71/OData/Company(‘CRONUS’)/PAG27Vendors</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Query,9150) ie. When the Web Service is published</p>
|
||||
<p>http://MyServer:7048/DynamicsNAV71/OData/Company(‘CRONUS’)/QUE9150MyCustomers</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Page,27)Â ie. When the Web Service is published</p>
|
||||
<p>http://MyServer:7047/DynamicsNAV71/WS/CRONUS/Page/PAG27Vendors</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Codeunit,5065) ie. When the Web Service is published</p>
|
||||
<p>http://MyServer:7047/DynamicsNAV71/WS/CRONUS/Codeunit/COD5065EmailLogging</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,27,record) List Page</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runpage?page=27&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw</p>
|
||||
<p>GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,26,record) Card Page</p>
|
||||
<p>dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runpage?page=26&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Page,27,record) List Page</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&page=27&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Page,26,record) Card Page</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&page=26&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Page,27,record)</p>
|
||||
<p>http://MyServer:7048/DynamicsNAV71/OData/Company(‘CRONUS’)/PAG27Vendors(‘IC1030’)</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Page,27)</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&page=27</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Report,6)</p>
|
||||
<p>https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&report=6</p>
|
||||
<p>If the GETURL function is called with invalid parameters, it will return an empty string. In that case, you can find the related error text by calling the GETLASTERRORTEXT function.</p>
|
||||
<p><strong>Function Call</strong></p>
|
||||
<p><strong>Error Message</strong></p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Table,27)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Codeunit,5065)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Query,9150)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::XmlPort,5150)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Table,27)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Page,27)</p>
|
||||
<p>The Page object, 27, that is specified for the GetUrl function has not been published in the Web Services table.</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Report,6)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Codeunit,5065)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Query,9150)</p>
|
||||
<p>The Query object, 9150, that is specified for the GetUrl function has not been published in the Web Services table.</p>
|
||||
<p>GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::XmlPort,5150)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Table,27)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Page,27)</p>
|
||||
<p>The Page object, 27, that is specified for the GetUrl function has not been published in the Web Services table.</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Report,6)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Codeunit,5065)</p>
|
||||
<p>The Codeunit object, 5065, that is specified for the GetUrl function has not been published in the Web Services table.</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Query,9150)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::XmlPort,5150)</p>
|
||||
<p>The specified object type parameter for the GetUrl function is not valid.</p>
|
||||
<p>GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Page,27,record)</p>
|
||||
<p>You cannot specify a record parameter for the GetUrl function when the object type is SOAP</p>
|
||||
<h2 id=nav-specific-example>NAV Specific Example</h2>
|
||||
<p>The following example shows how to use the GETURL function in codeunit 440 to ensure that the notification mail in Document Approvals can link to both the Microsoft Dynamics NAV Windows client and the Microsoft Dynamics NAV web client:</p>
|
||||
<p><a href=1778.url1.jpg><img src=1778.url1.jpg alt=" "></a></p>
|
||||
<p>This resulting UI looks as follows.</p>
|
||||
<p><a href=7802.url2.jpg><img src=7802.url2.jpg alt=" "></a></p>
|
||||
<p>The first link opens the approval document in the Microsoft Dynamics NAV Windows client. The second link (Web view) opens the same document in the Microsoft Dynamics NAV web client.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
navpatterns/1-patterns/creating-custom-charts/0246.Picture6.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/1411.Picture2.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/1541.Picture7.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/1781.Picture5.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/1803.Picture7.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/2553.Picture8.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/5153.Picture1.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/5545.Picture9.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
navpatterns/1-patterns/creating-custom-charts/5582.Picture10.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
366
navpatterns/1-patterns/creating-custom-charts/index.html
Normal file
|
|
@ -0,0 +1,366 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Creating Custom Charts :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/creating-custom-charts/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ aria-disabled=true><span itemprop=name>Creating Custom Charts</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#description>Description</a>
|
||||
<ul>
|
||||
<li><a href=#implementation-overview>Implementation Overview</a></li>
|
||||
<li><a href=#add-in-buffer-table>Add-in Buffer Table</a></li>
|
||||
<li><a href=#cardpart-page>CardPart page</a></li>
|
||||
<li><a href=#optional-preserving-user-personalization>Optional: Preserving User Personalization</a></li>
|
||||
<li><a href=#optional-show-multiple-charts-within-a-single-cardpart>Optional: Show Multiple Charts within a Single CardPart</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#usage>Usage</a>
|
||||
<ul>
|
||||
<li><a href=#nav-specific-example-1>NAV Specific Example 1</a></li>
|
||||
<li><a href=#nav-specific-example-2>NAV Specific Example 2</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#nav-usages>NAV Usages</a></li>
|
||||
<li><a href=#ideas-for-improvement>Ideas for improvement</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Creating Custom Charts</h1>
|
||||
<p><em>Originally by Nikola Kukrika at Microsoft Development Center Copenhagen</em></p>
|
||||
<h2 id=abstract>Abstract</h2>
|
||||
<p>The goal of this solution is to enable you to:</p>
|
||||
<ol>
|
||||
<li>Use charts in the web client.</li>
|
||||
<li>Create charts with custom functionality.</li>
|
||||
</ol>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>This pattern enables you to implement a business chart (Specific Chart type) in a way that is maintainable and reusable on other pages. This also enables you to provide specific functionality that is not possible with the Generic Chart type and it enables you to show charts in the web client.</p>
|
||||
<p>The Business Chart add-in is a special because it is a combination of .NET and Javascript add-ins depending on the display target. In the web client, it renders a JavaScript control, while in the win client, it renders a .Net control. Because of this behavior, you can expect minor differences in how the chart is presented in the win client versus in the web client. Note that this implementation is specific to NAV platform code, because it is not possible to create add-ins that combines .NET and JavaScript by using a framework API.</p>
|
||||
<p><a href=5153.Picture1.png><img src=5153.Picture1.png alt=" "></a></p>
|
||||
<p>Example of the same chart in the win client:</p>
|
||||
<p><a href=1411.Picture2.png><img src=1411.Picture2.png alt=" "></a></p>
|
||||
<p>The most obvious differences in chart rendering in the two clients are: Slightly different line heights, slightly different chart height, legends in web-client charts can be used as toggle filters to show/hide groups (this is not possible in the win client).</p>
|
||||
<h3 id=implementation-overview>Implementation Overview</h3>
|
||||
<p><a href=1781.Picture5.png><img src=1781.Picture5.png alt=" "></a></p>
|
||||
<h3 id=add-in-buffer-table>Add-in Buffer Table</h3>
|
||||
<p>This table is used to encapsulate the logic of the Business Chart Add-in. The table handles the following logic:</p>
|
||||
<ul>
|
||||
<li>Storing chart values and conversion from .NET to C/AL and vice versa</li>
|
||||
<li>Handling of captions: We must use C/AL to provide multilanguage text in add-ins. In addition, the multilanguage text must be encapsulated in a single place, because we pass/read the same dataset from/to the add-in.</li>
|
||||
<li>DrillDown logic</li>
|
||||
<li>Other helper data related functions, for displaying date, periods, etc.[Bogdana1] [NK2] [NK3]</li>
|
||||
</ul>
|
||||
<p><strong>Note:</strong> It is recommended that you reuse the <strong>Business Chart Buffer <strong>table</strong></strong>(485) as a buffer table or extend. It is a generic table which should cover most of the use cases. Implement a new buffer table only if this table does not meet your needs.</p>
|
||||
<h3 id=cardpart-page>CardPart page</h3>
|
||||
<p>The CardPart page hosts the Business Chart add-in and must use the add-in buffer table as a source table.</p>
|
||||
<p>On the page, you must implement the following triggers:</p>
|
||||
<ul>
|
||||
<li><strong>AddInReady</strong> – Executed when the page is done rendering. Used to initialize the add-in.</li>
|
||||
<li><strong>DataPointClicked</strong> – Single-click on an element on the chart.</li>
|
||||
<li><strong>DataPointDoubleClicked</strong> – Double-click on an element on the chart</li>
|
||||
</ul>
|
||||
<p>The CardPart usually contains a StatusText variable to provide more information about the chart or dataset and a set of actions to control the chart.</p>
|
||||
<p>The most commonly used actions are:</p>
|
||||
<ul>
|
||||
<li><strong>Select Chart</strong>, <strong>Previous Chart</strong>, <strong>Next Chart</strong></li>
|
||||
<li><strong>Set Period</strong>, <strong>Work Date</strong></li>
|
||||
<li>Actions to filter the data set</li>
|
||||
<li><strong>Refresh</strong></li>
|
||||
<li>**Chart Information **– a tooltip with a description of the chart and how data is calculated.</li>
|
||||
</ul>
|
||||
<h3 id=optional-preserving-user-personalization>Optional: Preserving User Personalization</h3>
|
||||
<p>One of the most common functionalities is personalization. If the chart can be customized by the user, you should store the settings that the user has entered and apply them the next time the chart is loaded.</p>
|
||||
<p>To do this, you need the following:</p>
|
||||
<ul>
|
||||
<li>A setup record to store the data. You can use the <strong>Business Chart User Setup</strong> table (487) or create a new setup table if you need to store more information.</li>
|
||||
<li>A management codeunit to write/apply the settings to the chart and to encapsulate other logic. Since we should not write code on pages, the code for the actions and other logic that does not apply to the setup record****should go in this codeunit.</li>
|
||||
<li>Setup pages where users can customize how the chart is shown and set different settings.</li>
|
||||
</ul>
|
||||
<p>The relation between the components is visualized in the following diagram[</p>
|
||||
<p><a href=0246.Picture6.png><img src=0246.Picture6.png alt=" "></a></p>
|
||||
<h3 id=optional-show-multiple-charts-within-a-single-cardpart>Optional: Show Multiple Charts within a Single CardPart</h3>
|
||||
<p>This option is useful on a Role Center where you want to show multiple charts using different datasets within a single part. In that case, you need a record to store the last chart selection, the setup records, and code units for separate charts.</p>
|
||||
<p>See, for example, the implementation of the <strong>Mini Generic Chart</strong> page (1390), which uses <strong>MiniChartManagment</strong> CodeUnit to manage separate management codeunits for charts and their setup records. The last selected chart is stored in a separate table, <strong>Mini Chart Definition</strong> (1310).</p>
|
||||
<p><a href=1803.Picture7.png><img src=1803.Picture7.png alt=" "></a></p>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p>To implement the pattern, create a new ChartPart and set the source table to <strong>Business Chart Buffer</strong>.</p>
|
||||
<p>Add a field named <strong>BusinessChart</strong> and set the ControlAddIn property to Microsoft.Dynamics.Nav.Client.BusinessChart.</p>
|
||||
<p>Then implement the AddInReady event. This event is executed when the page is done rendering. Code within this method must call the Update method from the <strong>Business Chart Buffer</strong> table, Update(CurrPage.BusinessChart) to initialize the chart and assign initial values.</p>
|
||||
<p>If you need a setup record and codeunit, then it is a good idea to encapsulate this logic within a method.</p>
|
||||
<h3 id=nav-specific-example-1>NAV Specific Example 1</h3>
|
||||
<p>Implementation of the <strong>Finance Performance Chart</strong> page (762)</p>
|
||||
<p><strong>BusinessChart::AddInReady()</strong></p>
|
||||
<p>UpdateChart(Period::" “);</p>
|
||||
<p><strong>LOCAL UpdateChart(Period : ‘,Next,Previous’)</strong></p>
|
||||
<p>MoveAndUpdateChart(Period,0);</p>
|
||||
<p><strong>LOCAL MoveAndUpdateChart(Period : ‘,Next,Previous’;Move : Integer)</strong></p>
|
||||
<p>AccSchedChartManagement.GetSetupRecordset(AccountSchedulesChartSetup,AccountSchedulesChartSetup.Name,Move);</p>
|
||||
<p>AccSchedChartManagement.UpdateData(Rec,Period,AccountSchedulesChartSetup);</p>
|
||||
<p>Update(CurrPage.BusinessChart);</p>
|
||||
<p>StatusText := GetCurrentSelectionText(“Period Filter Start Date”,“Period Filter End Date”);</p>
|
||||
<p>In the MoveAndUpdateChart method, the AccSchedChartManagement codeunit gets a setup record and updates it if necessary. Then, it initializes the chart with setup data and sets the StatusText to show the period for which data is displayed. The same method is used by the actions to move and update the chart so that there is no code duplication.</p>
|
||||
<p>The following code is used to implement <strong>DataPointClicked</strong></p>
|
||||
<p>****<strong>BusinessChart::DataPointClicked(point : DotNet “Microsoft.Dynamics.Nav.Client.BusinessChart.BusinessChartDataPoint”)</strong></p>
|
||||
<p>SetDrillDownIndexes(point);</p>
|
||||
<p>AccSchedChartManagement.DrillDown(Rec,AccountSchedulesChartSetup);</p>
|
||||
<p>SetDrillDownindexes is a method from the <strong>Business Chart Buffer</strong> 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.</p>
|
||||
<p>The **DataPointDoubleClicked **trigger has the same implementation logic as the DataPointClicked trigger.</p>
|
||||
<h3 id=nav-specific-example-2>NAV Specific Example 2</h3>
|
||||
<p>Implementation of chart part 1390 on the <strong>Small Business Role Center</strong> page (9022)</p>
|
||||
<p><a href=1541.Picture7.png><img src=1541.Picture7.png alt=" "></a></p>
|
||||
<p>This chart part contains data from multiple charts within a single part. The <strong>Status Text</strong> field shows the name of the chart and the current period. Users can browse through the charts with <strong>Next Chart <strong>and</strong>Previous Chart</strong> or use <strong>Select Chart</strong> to choose from a list of available charts.</p>
|
||||
<p><a href=2553.Picture8.png><img src=2553.Picture8.png alt=" "></a></p>
|
||||
<p>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 <strong>Next Chart</strong> 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.</p>
|
||||
<p>Users can also change the period length.</p>
|
||||
<p><a href=5545.Picture9.png><img src=5545.Picture9.png alt=" "></a></p>
|
||||
<p>Choosing the <strong>Chart Information</strong> button opens a short description of the chart.</p>
|
||||
<p><a href=5582.Picture10.png><img src=5582.Picture10.png alt=" "></a></p>
|
||||
<h2 id=nav-usages>NAV Usages</h2>
|
||||
<p>Implementation of multiple charts within a single part:</p>
|
||||
<ul>
|
||||
<li>Page 1390, <strong>Mini Generic Chart</strong></li>
|
||||
</ul>
|
||||
<p>Charts that use a setup record and select the chart with <strong>Customize Chart Setup</strong> pages:</p>
|
||||
<ul>
|
||||
<li>Page 772, <strong>Inventory Performance</strong></li>
|
||||
<li>Page 771, <strong>Purchase Performance</strong></li>
|
||||
<li>Page 770, <strong>Sales Performance</strong></li>
|
||||
<li>Page 762, <strong>Finance Performance</strong></li>
|
||||
</ul>
|
||||
<p>Chart that uses the <strong>Business Chart User Setup</strong> table:</p>
|
||||
<ul>
|
||||
<li>Page 768, <strong>Aged Acc. Receivable Chart</strong></li>
|
||||
</ul>
|
||||
<p>Other implementations:</p>
|
||||
<ul>
|
||||
<li>Page 972, <strong>Time Sheet Chart</strong></li>
|
||||
<li>Page 869, <strong>Cash Flow Chart</strong></li>
|
||||
<li>Page 760, <strong>Trailing Sales Orders Chart</strong></li>
|
||||
</ul>
|
||||
<h2 id=ideas-for-improvement>Ideas for improvement</h2>
|
||||
<p>We should consider making a generic table for the last chart that the user has used.</p>
|
||||
<p>We should investigate if we could make generic code for selecting periods and other common functionality by using RecordRefs.</p>
|
||||
<p>Add-In improvements – Different ways to visualize the data and to pick colors for categories.</p>
|
||||
<p>As a nice-to-have feature, we could implement functionality to cycle through the charts with a timer.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
navpatterns/1-patterns/cross-session-events/PubSub.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
358
navpatterns/1-patterns/cross-session-events/index.html
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Cross Session Events :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/cross-session-events/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/cross-session-events/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/cross-session-events/ aria-disabled=true><span itemprop=name>Cross Session Events</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li></li>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#problem>Problem</a></li>
|
||||
<li><a href=#solution>Solution</a></li>
|
||||
<li><a href=#example>Example</a></li>
|
||||
<li><a href=#consequences>Consequences</a></li>
|
||||
<li><a href=#related-topics>Related Topics</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Cross Session Events</h1>
|
||||
<h4 id=_by-nikolai-lestrange-from-tvision-technology-ltd-in-the-uk__><em>By Nikolai L’Estrange, from TVision Technology Ltd. in the UK</em>_</h4>
|
||||
<p>_</p>
|
||||
<h3 id=abstract>Abstract</h3>
|
||||
<p>Track things that happen in other NAV Sessions.</p>
|
||||
<p><a href=PubSub.png><img src=PubSub.png alt=" "></a></p>
|
||||
<h3 id=problem>Problem</h3>
|
||||
<p>In Microsoft Dynamics NAV you can fire a function whenever something changes within your session (and from NAV 2016 this is even easier with the new Event model), however there is not an easy way to know what is happening in other sessions. Sometimes you would like to know what has happened since your last read, without reading everything again, e.g. when you need to pass a large dataset to a Control Add-in.</p>
|
||||
<p>A common way of handling this with Ledger Tables is to make note of the last record you read, and continuously poll to see if there are any new records. However this is restricted to strictly sequentially entered tables.</p>
|
||||
<h3 id=solution>Solution</h3>
|
||||
<p>There is a common pattern in many other languages called <a href=https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern>Publish-Subscribe</a> (or PubSub) that solves the same issue. We can implement the same pattern in NAV using a Table as a message queue platform and polling this table. We have named this pattern “Cross Session Events” in order to avoid confusion with the standard NAV Events which use the terms Publisher and Subscriber, and to try and describe more accurately when you would need this pattern.</p>
|
||||
<p>The pattern has four components:</p>
|
||||
<ul>
|
||||
<li><strong>Publisher(s)</strong>: These push messages to the Message Broker.</li>
|
||||
<li><strong>Subscriber Records</strong>: Identifies the Subscriber and store filters to say what messages the Subscriber and interested in receiving.</li>
|
||||
<li><strong>Message Broker</strong>: This distributes all messages sent in to all Subscribers that have expressed an interest (i.e. the message is within their filters).</li>
|
||||
<li><strong>Message Queue</strong>: To hold the messages for each Subscriber. Generally once these messages are read, they are deleted.</li>
|
||||
</ul>
|
||||
<h3 id=example>Example</h3>
|
||||
<p>An example of this would be when we have multiple users looking at the same set of data and we want their screens to update in “real time” whenever one of them makes a change, without doing a full refresh. We will use the <a href=/nav/w/designpatterns/248.observer>Observer pattern</a> to capture the change (act as the Publisher) and then create a Table to hold Subscribers and Filters (Change Observer), a Table to be the Message Queue (Change Notification), and a Codeunit to be the Message Broker and help with the polling (ObserverMgt).</p>
|
||||
<p>Below are the table definitions:</p>
|
||||
<pre><code>**Change Observer:
|
||||
**"Table ID" Integer "Observable Table"
|
||||
"Server ID" Integer
|
||||
"Session ID" Integer
|
||||
|
||||
**Change Notification:
|
||||
**"Table ID" Integer "Observable Table"
|
||||
"Server ID" Integer
|
||||
"Session ID" Integer
|
||||
"Entry No." Integer AutoIncrement
|
||||
"Type of Change" Option Insert,Modify,Delete,Rename
|
||||
"Record ID" RecordID
|
||||
... (other fields to indicate what has changed)
|
||||
</code></pre>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>_<strong>Note:</strong> _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.</p>
|
||||
<p>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.</p>
|
||||
<pre><code>**Listen(TableID : Integer)**
|
||||
WITH Observer DO BEGIN
|
||||
"Table ID" := TableID;
|
||||
"Server ID" := SERVICEINSTANCEID;
|
||||
"Session ID" := SESSIONID;
|
||||
INSERT(TRUE);
|
||||
COMMIT;
|
||||
END;
|
||||
**StopListening(TableID : Integer)
|
||||
**WITH Observer DO BEGIN
|
||||
RESET;
|
||||
SETRANGE("Server ID",SERVICEINSTANCEID);
|
||||
SETRANGE("Session ID",SESSIONID);
|
||||
SETRANGE("Table ID",TableID);
|
||||
DELETEALL(TRUE);
|
||||
COMMIT;
|
||||
END;
|
||||
**NotifyAll(ChangeNotification : Record "Change Notification")**
|
||||
WITH Observer DO BEGIN
|
||||
RESET;
|
||||
SETRANGE("Table ID",ChangeNotification."Table ID");
|
||||
IF FINDSET THEN REPEAT
|
||||
Notify(Observer,ChangeNotification);
|
||||
UNTIL NEXT = 0;
|
||||
END;
|
||||
**Notify(Observer : Record "Change Observer";ChangeNotification : Record "Change Notification")**
|
||||
WITH ChangeNotification DO BEGIN
|
||||
"Server ID" := Observer."Server ID";
|
||||
"Session ID" := Observer."Session ID";
|
||||
"Entry No." := 0;
|
||||
INSERT;
|
||||
END;
|
||||
**Poll(TableID : Integer;VAR TempChangeNotification : TEMPORARY Record "Change Notification")**
|
||||
WITH ChangeNotification DO BEGIN
|
||||
TempChangeNotification.RESET;
|
||||
TempChangeNotification.DELETEALL;
|
||||
RESET;
|
||||
SETRANGE("Table ID",TableID);
|
||||
SETRANGE("Server ID",SERVICEINSTANCEID);
|
||||
SETRANGE("Session ID",SESSIONID);
|
||||
IF FINDSET THEN REPEAT
|
||||
TempChangeNotification := ChangeNotification;
|
||||
TempChangeNotification.INSERT;
|
||||
MARK(TRUE);
|
||||
UNTIL NEXT = 0;
|
||||
MARKEDONLY(TRUE);
|
||||
DELETEALL;
|
||||
END;
|
||||
</code></pre>
|
||||
<p>**__**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:</p>
|
||||
<pre><code>**OnQueryClosePage(CloseAction : Action None) : Boolean**
|
||||
ObserverMgt.StopListening(DATABASE::"NAV Whiteboard Booking");
|
||||
**Timer::AddInReady()**
|
||||
IF ObserverMgt.Listen(DATABASE::"NAV Whiteboard Booking") THEN
|
||||
CurrPage.Timer.Ping(1000);
|
||||
**Timer::Pong()**
|
||||
CallUpdate;
|
||||
CurrPage.Timer.Ping(1000);
|
||||
**LOCAL CallUpdate()**
|
||||
ObserverMgt.Poll(DATABASE::"NAV Whiteboard Booking",TempChangeNotification);
|
||||
WITH TempChangeNotification DO BEGIN
|
||||
IF FINDSET THEN REPEAT
|
||||
IF "Type of Change" = "Type of Change"::Delete THEN BEGIN
|
||||
...
|
||||
END ELSE IF RecRef.GET("Record ID") THEN BEGIN
|
||||
...
|
||||
END;
|
||||
UNTIL NEXT = 0;
|
||||
END;
|
||||
</code></pre>
|
||||
<h3 id=consequences>Consequences</h3>
|
||||
<p>The PingPong control is only available on the Windows Client, so if you want to use another client you will need to use another solution to Poll for Messages. Therefore this pattern is not always going to be “real time”.</p>
|
||||
<h3 id=related-topics>Related Topics</h3>
|
||||
<p>This pattern was originally described in the following blog:</p>
|
||||
<p><a href=https://geeknikolai.wordpress.com/2015/10/30/pubsub-pattern-in-dynamics-nav-2016/>https://geeknikolai.wordpress.com/2015/10/30/pubsub-pattern-in-dynamics-nav-2016/</a></p>
|
||||
<p>Below is the Wikipedia link to the PubSub pattern</p>
|
||||
<p><a href=https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern>https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern</a></p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
navpatterns/1-patterns/currently-active-record/6545.Table.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
344
navpatterns/1-patterns/currently-active-record/index.html
Normal file
|
|
@ -0,0 +1,344 @@
|
|||
<!doctype html><html lang=en class="js csstransforms3d">
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1">
|
||||
<meta name=generator content="Hugo 0.89.0">
|
||||
<meta name=description content>
|
||||
<title>Currently Active Record :: BC AL Help</title>
|
||||
<link href=/bcalhelp/css/nucleus.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/fontawesome-all.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/featherlight.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/perfect-scrollbar.min.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/auto-complete.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/theme-blue.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/variant.css?1636061748 rel=stylesheet>
|
||||
<link href=/bcalhelp/css/print.css?1636061748 rel=stylesheet media=print>
|
||||
<script src=/bcalhelp/js/jquery.min.js?1636061748></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/bcalhelp/navpatterns/1-patterns/currently-active-record/>
|
||||
<script>var index_url="/bcalhelp/index.json",root_url="/",baseUri=root_url.replace(/\/$/,'')</script>
|
||||
<nav id=sidebar>
|
||||
<div id=header-wrapper>
|
||||
<div id=header>
|
||||
<a id=logo href=/bcalhelp/ style="color:#f5f5f5;font-family:novacento sans wide,helvetica,tahoma,geneva,arial,sans-serif;font-size:30px;font-weight:700;margin-top:-2px">
|
||||
BC AL Help . dev
|
||||
</a>
|
||||
<i style=color:#f5f5f5>Code is Poetry</i>
|
||||
</div>
|
||||
<div class=searchbox>
|
||||
<label for=search-by><i class="fas fa-search"></i></label>
|
||||
<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=/bcalhelp/js/lunr.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/auto-complete.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/search.js?1636061748></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
<li data-nav-id=/bcalhelp/welcome/ title=Welcome class=dd-item><a href=/bcalhelp/welcome/><b><i class="fas fa-home"></i> </b>Welcome</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcpatterns/ title="BC Patterns" class=dd-item><a href=/bcalhelp/bcpatterns/><b><i class="fas fa-clone"></i> </b>BC Patterns</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/bcbestpractices/ title="BC Dev. Best Practices" class=dd-item><a href=/bcalhelp/bcbestpractices/><b><i class="fas fa-medal"></i> </b>BC Dev. Best Practices</a><ul></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/ title="NAV Patterns Archive" class="dd-item parent"><a href=/bcalhelp/navpatterns/><b><i class="fas fa-save"></i> </b>NAV Patterns Archive</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/ title="1. Patterns" class="dd-item parent"><a href=/bcalhelp/navpatterns/1-patterns/>1. Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/activity-log/ title="Activity Logs" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/activity-log/>Activity Logs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/argument-table/ title="Argument Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/argument-table/>Argument Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/ title="Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/>Blocked Entity</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ title="Data Driven Blocked Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/>Data Driven Blocked Entity</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/ title="Cached Web Server Calls" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cached-web-service-calls/>Cached Web Server Calls</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/ title="Conditional Cascading Update" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/conditional-cascading-update/>Conditional Cascading Update</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/copy-document/ title="Copy Document" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/copy-document/>Copy Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/ title="Create Data from Templates" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-data-from-templates/>Create Data from Templates</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/ title="Create URLs to NAV Clients" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/create-urls-to-nav-clients/>Create URLs to NAV Clients</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/ title="Creating Custom Charts" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/creating-custom-charts/>Creating Custom Charts</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/cross-session-events/>Cross Session Events</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/currently-active-record/ title="Currently Active Record" class="dd-item active"><a href=/bcalhelp/navpatterns/1-patterns/currently-active-record/>Currently Active Record</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/>Data Migration Facade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/discovery-event/ title="Discovery Event" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/discovery-event/>Discovery Event</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/document/ title=Document class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/document/>Document</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/ title="Easy Update Of Setup Or Supplementary Information" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/easy-update-of-setup-or-supplementary-information/>Easy Update Of Setup Or Supplementary Information</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/error-message-processing/ title="Error Message Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/error-message-processing/>Error Message Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/ title="Extending the Role Center Headlines" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/extending-the-role-center-headlines/>Extending the Role Center Headlines</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/ title="Feature Localization For Data Structures" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/feature-localization-for-data-structures/>Feature Localization For Data Structures</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/hooks/ title=Hooks class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/hooks/>Hooks</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/ title="Surrogate keys using Autoincrement Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/implementation-of-surrogate-keys-using-autoincrement-pattern/>Surrogate keys using Autoincrement Pattern</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/ title="Instructions in the UI" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/instructions-in-the-ui/>Instructions in the UI</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/ title="Integration of Addresses" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/integration-of-addresses/>Integration of Addresses</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-error-processing/ title="Journal Error Processing" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-error-processing/>Journal Error Processing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/ title="Journal Template Batch Line" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/journal-template-batch-line/>Journal Template Batch Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/master-data/ title="Master Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/master-data/>Master Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-file-download/ title="Multi-file Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-file-download/>Multi-file Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multi-page-list/ title="Multi-Page List" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multi-page-list/>Multi-Page List</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/ title="Multilanguage Application Data" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/multilanguage-application-data/>Multilanguage Application Data</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/ title="NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/>NET Exception Handling in CAL</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ title="TryFunction NET Exception Handling in CAL" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/>TryFunction NET Exception Handling in CAL</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/no-series/ title="No Series" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/no-series/>No Series</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/ title=Notifications class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/>Notifications</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/ title="In-context Notifications" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/in-context-notifications/>In-context Notifications</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/ title="Notification Lifecycle Management Pattern" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/notifications/notification-lifecycle-management-pattern/>Notification Lifecycle Management Pattern</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/observer/ title=Observer class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/observer/>Observer</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/ title="Posting Routine - Select Behavior" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/posting-routine-select-behavior/>Posting Routine - Select Behavior</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/product-name/ title="Product Name" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/product-name/>Product Name</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/ title=Queries class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/>Queries</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/ title="SELECT DISTINCT with Queries" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/select-distinct-with-queries/>SELECT DISTINCT with Queries</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/ title="use Queries to Detect Duplicate Records" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-detect-duplicate-records/>use Queries to Detect Duplicate Records</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/ title="Use Queries to Replace Nested Loops" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/queries/use-queries-to-replace-nested-loops/>Use Queries to Replace Nested Loops</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/ title="Read-once Initialization and Validation" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/read-once-initialization-and-validation/>Read-once Initialization and Validation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/released-entity/ title="Released Entity" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/released-entity/>Released Entity</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/report-selection/ title="Report Selection" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/report-selection/>Report Selection</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/security/ title=Security class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/security/>Security</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/ title="Setup Specificity Fallback" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/setup-specificity-fallback/>Setup Specificity Fallback</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/ title="Silent File Upload and Download" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/silent-file-upload-and-download/>Silent File Upload and Download</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/ title=Singleton class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/>Singleton</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/ title="Singleton Codeunit" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-codeunit/>Singleton Codeunit</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/ title="Singleton Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/>Singleton Table</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/ title="Cue Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/cue-table/>Cue Table</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/ title="Setup Table" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/singleton/singleton-table/setup-table/>Setup Table</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/standard-journal/ title="Standard Journal" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/standard-journal/>Standard Journal</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/ title="Temporary Dataset Report" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/temporary-dataset-report/>Temporary Dataset Report</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/ title="Totals and Discounts on Subpages Sales and Purchases" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/totals-and-discounts-on-subpages-sales-and-purchases/>Totals and Discounts on Subpages Sales and Purchases</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/ title="Transfer Custom Fields" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/transfer-custom-fields/>Transfer Custom Fields</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/1-patterns/variant-facade/ title="Variant Facade" class=dd-item><a href=/bcalhelp/navpatterns/1-patterns/variant-facade/>Variant Facade</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/ title="2. Anti-Patterns" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/>2. Anti-Patterns</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/ title="Nav Upgrade" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/nav-upgrade/>Nav Upgrade</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/ title="Reusable Bugs" class=dd-item><a href=/bcalhelp/navpatterns/2-anti-patterns/reusable-bugs/>Reusable Bugs</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ title="3. CAL Coding Guidelines" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/>3. CAL Coding Guidelines</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/ title=Design class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/design/>Design</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ title="Internally-used DotNet Types" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/>Internally-used DotNet Types</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/ title=Internationalization class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/>Internationalization</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ title="Using Calcdate" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/>Using Calcdate</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/ title=Localizability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/>Localizability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/ title="CaptionML on System Pages" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/>CaptionML on System Pages</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/ title="FIELDCAPTION and TABLECAPTION" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/>FIELDCAPTION and TABLECAPTION</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/ title="Global Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/>Global Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ title="Use Text Constants" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/>Use Text Constants</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ title="Using OptionCaptionML" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/>Using OptionCaptionML</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/ title=Readability class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/>Readability</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/ title="Begin as an 'After Word'" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-as-an-afterword/>Begin as an 'After Word'</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/ title="Begin-End - Compound Only" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/begin-end/>Begin-End - Compound Only</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/ title="Binary Operator to Start Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/binary-operator-line-start/>Binary Operator to Start Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/ title="Blank Lines.md" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/blank-lines/>Blank Lines.md</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/ title="CASE Action" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/case-actions/>CASE Action</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/ title="Colon usage in CASE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/colon-usage-in-case/>Colon usage in CASE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/ title="Comments inside Curly Brackets" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-curly-brackets/>Comments inside Curly Brackets</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/ title="Comment Spacing" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/comments-spacing/>Comment Spacing</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/ title="END ELSE Pair" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/end-else-pair/>END ELSE Pair</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/ title=Indentation class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/indentation/>Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/ title="Keyword Pairs - Indentation" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/keyword-pairs-indentation/>Keyword Pairs - Indentation</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/ title="Line Start Keywords" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/line-start-keywords/>Line Start Keywords</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/ title="Lonely Repeat" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/lonely-repeat/>Lonely Repeat</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/ title="Named Invocations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/named-invocations/>Named Invocations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/ title="Nested WITHs" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/nested-withs/>Nested WITHs</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/ title="One Statement Per Line" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/one-statement-per-line/>One Statement Per Line</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/ title="Separate IF and ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/separate-if-and-else/>Separate IF and ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/ title="Spacing Binary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-binary-operators/>Spacing Binary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/ title="Spacing Brackets and ::" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-brackets-and/>Spacing Brackets and ::</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/ title="Spacing Unary Operators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/spacing-unary-operators/>Spacing Unary Operators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/ title="Suggested Abbreviations" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/suggested-abbreviations/>Suggested Abbreviations</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/ title="Temporary Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/temporary-variable-naming/>Temporary Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/ title="TextConst Suffixes" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/textconst-suffixes/>TextConst Suffixes</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/ title="Unary Operator Line End" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unary-operator-line-end/>Unary Operator Line End</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/ title="Unnecessary Compound Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-compound-parenthesis/>Unnecessary Compound Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/ title="Unnecessary ELSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-else/>Unnecessary ELSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/ title="Unnecessary Function Parenthesis" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-function-parenthesis/>Unnecessary Function Parenthesis</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/ title="Unnecessary Separators" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-separators/>Unnecessary Separators</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/ title="Unnecessary TRUE/FALSE" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/unnecessary-truefalse/>Unnecessary TRUE/FALSE</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/ title="Variable Already Scoped" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-already-scoped/>Variable Already Scoped</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ title="Variable Naming" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variable-naming/>Variable Naming</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ title="Variables Declarations Order" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/>Variables Declarations Order</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/ title=UX class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/>UX</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/ title="Actions - Images" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/actions-images/>Actions - Images</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/ title=CONFIRM class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/confirm/>CONFIRM</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/ title=FIELDERROR class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/fielderror/>FIELDERROR</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ title="MESSAGE and ERROR" class=dd-item><a href=/bcalhelp/navpatterns/3-cal-coding-guidelines/ux/message-and-error/>MESSAGE and ERROR</a></li></ul></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/ title="(OLD) Get Involved" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/>(OLD) Get Involved</a><ul>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/ title="Code of Conduct" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/code-of-conduct/>Code of Conduct</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/patterns-authors/ title="Patterns Authors" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/patterns-authors/>Patterns Authors</a></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ title="Template for writing Nav Design Patterns" class=dd-item><a href=/bcalhelp/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/>Template for writing Nav Design Patterns</a></li></ul></li>
|
||||
<li data-nav-id=/bcalhelp/navpatterns/related-links/ title="Related Links" class=dd-item><a href=/bcalhelp/navpatterns/related-links/>Related Links</a></li></ul></li>
|
||||
</ul>
|
||||
<div id=shortcuts>
|
||||
<div class=nav-title>More</div>
|
||||
<ul>
|
||||
<li><a class=padding href=https://discord.gg/4wbfNv3><i class="fab fa-discord"></i> BC Discord</a></li>
|
||||
<li><a class=padding href=https://github.com/microsoft/bcalhelp><i class="fab fa-github"></i> GitHub repo</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id=footer>
|
||||
<p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div id=body>
|
||||
<div id=overlay></div>
|
||||
<div class="padding highlightable">
|
||||
<div id=top-bar>
|
||||
<div id=top-github-link>
|
||||
<a class=github-link title="Edit this page" href=https://github.com/microsoft/bcalhelp/edit/main/content/NAVPatterns/1-patterns/currently-active-record/index.md target=blank>
|
||||
<i class="fas fa-code-branch"></i>
|
||||
<span id=top-github-link-text>Edit this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id=breadcrumbs>
|
||||
<span id=sidebar-toggle-span>
|
||||
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
||||
<i class="fas fa-bars"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span id=toc-menu><i class="fas fa-list-alt"></i></span>
|
||||
<ol class=links itemscope itemtype=http://schema.org/BreadcrumbList>
|
||||
<meta itemprop=itemListOrder content="Descending">
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="4"><a itemprop=item href=/bcalhelp/><span itemprop=name>Home</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/bcalhelp/navpatterns/><span itemprop=name>NAV Patterns Archive</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/><span itemprop=name>1. Patterns</span></a> > </li>
|
||||
<li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/bcalhelp/navpatterns/1-patterns/currently-active-record/ aria-disabled=true><span itemprop=name>Currently Active Record</span></a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class=progress>
|
||||
<div class=wrapper>
|
||||
<nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#abstract>Abstract</a></li>
|
||||
<li><a href=#description>Description</a>
|
||||
<ul>
|
||||
<li><a href=#ending-date-problem>Ending Date Problem</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#usage>Usage</a>
|
||||
<ul>
|
||||
<li><a href=#1-create-the-view>1. Create the view</a></li>
|
||||
<li><a href=#2-create-the-table-object>2. Create the Table object</a></li>
|
||||
<li><a href=#3-implement-the-code>3. Implement the code</a></li>
|
||||
<li><a href=#4-create-a-deployment-codeunit>4. Create a deployment codeunit</a></li>
|
||||
<li><a href=#5-deployment>5. Deployment</a></li>
|
||||
<li><a href=#general-precaution>General precaution</a></li>
|
||||
<li><a href=#code-example-that-accomplish-the-same-but-without-using-the-pattern>Code example that accomplish the same but without using the pattern</a></li>
|
||||
<li><a href=#comparison>Comparison</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#nav-usages>NAV Usages</a></li>
|
||||
<li><a href=#ideas-for-improvement>Ideas for improvement</a></li>
|
||||
<li><a href=#related-topics>Related Topics</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id=head-tags>
|
||||
</div>
|
||||
<main id=body-inner>
|
||||
<h1>Currently Active Record</h1>
|
||||
<p>Authors: Henrik Langbak and Kim Ginnerup, Bording Data</p>
|
||||
<h2 id=abstract>Abstract</h2>
|
||||
<p>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.<br>
|
||||
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.</p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>There is no way in NAV to get a set of records from the database, which all have the newest starting date, that is less than or equal to today’s date. Having an ending date on the record will help, but it introduces some other problems. In Dynamics NAV this is normally done by reading too many records, either at the SQL Server level or in the middle tier and throw away the ones you do not need. That is a waste of resources:</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>The SQL Server is reading too many records</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>There would be too much data sent over the network.<br>
|
||||
(If the SQL Server and the NAV Service tier are on different machines.)</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>The NAV Service Tier receives and throws away data.</p>
|
||||
<h3 id=ending-date-problem>Ending Date Problem</h3>
|
||||
<p>Ending Date may introduce some problems of its own.</p>
|
||||
<p>If your design requires to have one and only one active record per key in a dataset, then Ending Date introduces the possibility for overlapping or holes in the timeline.<br>
|
||||
Ending Date creates a dependency between two records. Changing a Starting Date, requires you to update the previous record. Changing the Ending Date requires you to update the next record.<br>
|
||||
If you add a record in between you will have to update both the before and the after record.</p>
|
||||
<p>The pattern we describe here will work whether there is an Ending Date or Not.</p>
|
||||
<p>The pattern is also relevant for other types than date. The pattern is usable whenever you have dependencies between rows in a table.</p>
|
||||
<p>Use the pattern whenever you read a set of data containing a Starting Date and you need to implement a loop to throw away unwanted records. An example could be Codeunit 7000 “Sales Price Calc. Mgt.”. In this codeunit there are many loop constructs to find prices and discounts.</p>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p>In the following example, we have a fictive table containing: Code, Starting Date and Price. The Primary Key consist of Code, Starting Date. The Database is the Demo Database, and the Company is Cronus.</p>
|
||||
<p>< –[if supportLineBreakNewLine]–><a href=6545.Table.png><img src=6545.Table.png alt=" "></a><br>
|
||||
< –[endif]–></p>
|
||||
<h3 id=1-create-the-view>1. Create the view</h3>
|
||||
<p>You will need to create the view before you define the Table Object.<br>
|
||||
You will need to create a view for every company in the database.</p>
|
||||
<p>CREATE VIEW [dbo].[CRONUS$PriceView]<br>
|
||||
AS<br>
|
||||
SELECT [Code], [Starting Date], [Price]<br>
|
||||
FROM dbo.[CRONUS$Price] AS A<br>
|
||||
WHERE [Starting Date] =<br>
|
||||
(SELECT MAX([Starting Date])<br>
|
||||
FROM dbo.[CRONUS$Price] AS B<br>
|
||||
WHERE B.[Code] = A.[Code] AND<br>
|
||||
B.[Starting Date] <= GETDATE())</p>
|
||||
<p>Test the view to ensure that you get the correct result. It is much easier to test now than later.</p>
|
||||
<h3 id=2-create-the-table-object>2. Create the Table object</h3>
|
||||
<p>Remember to set the link table property before you save it.</p>
|
||||
<h3 id=3-implement-the-code>3. Implement the code</h3>
|
||||
<p>IF PriceView.FINDSET THEN // You have them</p>
|
||||
<h3 id=4-create-a-deployment-codeunit>4. Create a deployment codeunit</h3>
|
||||
<p>Create a SQL Deployment codeunit to manage your views.<br>
|
||||
The codeunit needs to Create or Alter the views for all companies.<br>
|
||||
To see an example of how to talk to SQL Server using .NET see Waldo’s blog here:<br>
|
||||
<a href=http://dynamicsuser.net/blogs/waldo/archive/2011/07/19/net-interop-calling-stored-procedures-on-sql-server-example-1.aspx>http://dynamicsuser.net/blogs/waldo/archive/2011/07/19/net-interop-calling-stored-procedures-on-sql-server-example-1.aspx</a><br>
|
||||
< –[if supportLineBreakNewLine]–><br>
|
||||
< –[endif]–></p>
|
||||
<h3 id=5-deployment>5. Deployment</h3>
|
||||
<p>You need to deploy in three steps:</p>
|
||||
<p>< –[if supportLists]–>1. < –[endif]–>Delete the table objects referencing the views</p>
|
||||
<p>< –[if supportLists]–>2. < –[endif]–>Deploy and run the deployment codeunit</p>
|
||||
<p>< –[if supportLists]–>3. < –[endif]–>Deploy the new table objects that reference the views</p>
|
||||
<h3 id=general-precaution>General precaution</h3>
|
||||
<p>If you later want to change the view, you need to follow these rules:</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>If you add columns, you need to add them to the view first and then add them to the Table Object.</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>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.</p>
|
||||
<h3 id=code-example-that-accomplish-the-same-but-without-using-the-pattern>Code example that accomplish the same but without using the pattern</h3>
|
||||
<p>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.</p>
|
||||
<p>Price.SETCURRENTKEY(Code,“Starting Date”);</p>
|
||||
<p>Price.SETFILTER(“Starting Date”,'..%1', TODAY</p>
|
||||
<p>IF Price.FINDSET THEN BEGIN<br>
|
||||
REPEAT</p>
|
||||
<p>Price.SETRANGE(Code, Price.Code);</p>
|
||||
<p>Price.FINDLAST;</p>
|
||||
<p>Price.SETRANGE(Code);</p>
|
||||
<p>PriceTemp := Price;</p>
|
||||
<p>PriceTemp.INSERT;</p>
|
||||
<p>UNTIL Price.NEXT = 0;</p>
|
||||
<p>END;<br>
|
||||
// PriceTemp will contain the Prices</p>
|
||||
<h3 id=comparison>Comparison</h3>
|
||||
<p>The above NAV example is for a very simple date controlled solution and is provided to give an idea of what the pattern changes seen from a NAV development point of view. But consider the following:</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>The table has a more complex key.<br>
|
||||
This will require setting and clearing more filters</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>You need to read from more than one table.<br>
|
||||
Say you need to apply discount from a separate table.<br>
|
||||
This may give several lines in PriceTemp.</p>
|
||||
<p>< –[if supportLists]–>* < –[endif]–>If the Code field is controlled by a Type field.<br>
|
||||
The Code field reference keys in different tables</p>
|
||||
<p>All three examples above can be implemented directly in the view. By using the pattern, it will still only require a single line of NAV code.</p>
|
||||
<p>Using the pattern will only issue one SQL call and thereby one trip to the server.<br>
|
||||
The NAV Example will require an unknown number of SQL calls and thereby an unknown number of trips to the server. The number of SQL calls is dependent on the number of distinct Code values.<br>
|
||||
The NAV example will require SQL Server to read all data older than or equal to TODAY, but only return one row per Code. Over time, as old data piles up in the system, the NAV code will perform slower because the SQL statements will be slower.<br>
|
||||
The Pattern makes a scalable solution with a predictable performance. The performance will not deteriorate at the same rate as the NAV code example.</p>
|
||||
<h2 id=nav-usages>NAV Usages</h2>
|
||||
<p>The pattern does not exist in NAV (yet J). We have used it several times in our code for an Add-On.</p>
|
||||
<h2 id=ideas-for-improvement>Ideas for improvement</h2>
|
||||
<p>Query Object should be able to handle sub-selects and Unions. A simple solution could be to allow the NAV developer to specify the actual Select statement inside the query Object in clear text. Opening up for writing your own queries and map the projection to the Query-defined fields will make the query Object very versatile and remove the pressure from Microsoft trying to create all the different permutations that a select statement can have. Microsoft and others have all tried to create wizards that can create SQL select statement. They all end up having a clear text option.</p>
|
||||
<p>An alternative would be better support for linked table objects, specifically views. The current implementation is very fragile.</p>
|
||||
<p>The pattern only supports fetching data for a given date (normally today). This is because you cannot control the where-clause of the sub-select.</p>
|
||||
<h2 id=related-topics>Related Topics</h2>
|
||||
<p>The idea of having a linked table object pointing to a view could be a pattern of its own.</p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
</div>
|
||||
<div id=navigation>
|
||||
<a class="nav nav-prev" href=/bcalhelp/navpatterns/1-patterns/cross-session-events/ title="Cross Session Events"><i class="fa fa-chevron-left"></i></a>
|
||||
<a class="nav nav-next" href=/bcalhelp/navpatterns/1-patterns/data-migration-facade/ title="Data Migration Facade"><i class="fa fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<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=/bcalhelp/js/clipboard.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/perfect-scrollbar.jquery.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/jquery.svg.pan.zoom.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/featherlight.min.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/modernizr.custom-3.6.0.js?1636061748></script>
|
||||
<script src=/bcalhelp/js/relearn.js?1636061748></script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
navpatterns/1-patterns/data-migration-facade/8308.logo.png
Normal file
|
After Width: | Height: | Size: 6 KiB |
|
After Width: | Height: | Size: 66 KiB |