Compare commits

...
Sign in to create a new pull request.

113 commits

Author SHA1 Message Date
JeremyVyska
94d33e1145 deploy: 00e696864b 2023-09-28 05:16:57 +00:00
JeremyVyska
4778523436 deploy: 9812eccaf2 2023-09-28 05:15:53 +00:00
TheDoubleH
be278fced3 deploy: 3d1770c57b 2023-09-22 14:37:02 +00:00
JeremyVyska
2914a84a66 deploy: 9a0922e35f 2023-02-22 13:45:30 +00:00
waldo1001
35e175dacf deploy: 78fa831aec 2023-02-22 12:17:42 +00:00
JesperSchulz
52fa2ea99a deploy: 36e4ad4245 2022-11-30 12:38:26 +00:00
JeremyVyska
9389386ec6 deploy: 254654c805 2022-09-25 18:56:58 +00:00
JesperSchulz
4e485be0cd deploy: 254d3a9228 2022-09-15 12:48:50 +00:00
waldo1001
a7a418f6e2 deploy: b1a5afb320 2022-07-11 08:49:54 +00:00
JeremyVyska
0fb8ca7a14 deploy: f752d97ccc 2022-07-11 07:31:54 +00:00
JeremyVyska
f65c30129b deploy: 8f52709dc8 2022-06-24 12:55:52 +00:00
waldo1001
76c6fda05c deploy: 3dd196bc22 2022-06-22 09:25:03 +00:00
TheDoubleH
f25c8d4845 deploy: 189ca1bb5f 2022-06-14 23:18:27 +00:00
TheDoubleH
2598db2520 deploy: f6a86eb60f 2022-05-16 18:40:26 +00:00
TheDoubleH
7f2b60c5ec deploy: 158ebff378 2022-05-06 20:32:11 +00:00
TheDoubleH
90010b11a8 deploy: 50dc4506bb 2022-05-06 20:30:57 +00:00
TheDoubleH
cec32cb293 deploy: 51ff02f7cd 2022-05-06 20:29:45 +00:00
TheDoubleH
6c1961d5d6 deploy: 8c9b20f95f 2022-05-06 20:28:37 +00:00
TheDoubleH
4a3d4d2111 deploy: 2bce340b7f 2022-05-06 20:27:14 +00:00
JesperSchulz
d9d8493aa3 deploy: 5652ea8c5d 2022-04-06 19:19:11 +00:00
JesperSchulz
9d94c5d6d3 deploy: 32ec19fcde 2022-04-06 19:17:38 +00:00
TheDoubleH
045558769d deploy: 155be51972 2022-04-05 16:35:23 +00:00
waldo1001
7bf102e041 deploy: 17f423f02c 2022-04-05 12:18:31 +00:00
waldo1001
fb9ca18a04 deploy: 3684393375 2022-03-30 09:29:14 +00:00
JeremyVyska
3680a904e2 deploy: 1653ec32cc 2022-03-25 15:10:30 +00:00
JeremyVyska
9f8ffa7eca deploy: 6dc0ae6f2d 2022-03-25 15:09:13 +00:00
TheDoubleH
9e1954b1b2 deploy: 4fbfc28c9e 2022-03-11 11:05:33 +00:00
JeremyVyska
34079491f7 deploy: ed09a81f6a 2022-03-08 08:09:58 +00:00
waldo1001
2f8078f0df deploy: b8b9b16998 2022-03-02 14:33:02 +00:00
waldo1001
6f08d67402 deploy: c2804fc330 2022-03-01 08:31:13 +00:00
waldo1001
7e9d4c18d3 deploy: d2725b5bf0 2022-02-28 21:41:22 +00:00
TheDoubleH
d5790b8abb deploy: 13beb2fee6 2022-02-27 19:23:53 +00:00
TheDoubleH
7006c9a415 deploy: 7f492b2c47 2022-02-27 19:16:07 +00:00
TheDoubleH
7686ef4d97 deploy: 615864e950 2022-02-27 19:14:03 +00:00
TheDoubleH
68deff1d24 deploy: 8424546db5 2022-02-27 19:11:16 +00:00
TheDoubleH
90867b3595 deploy: 58db3a3a3c 2022-02-27 19:00:11 +00:00
waldo1001
b943ef6fed deploy: c41d4e9e24 2022-02-27 14:09:14 +00:00
TheDoubleH
5af1e37539 deploy: 80b377d382 2022-02-25 16:47:14 +00:00
TheDoubleH
a527835756 deploy: 1e5fd62577 2022-02-25 16:46:16 +00:00
TheDoubleH
a35732a260 deploy: cd3497d542 2022-02-24 22:26:55 +00:00
ajkauffmann
bb8cd97537 deploy: d6a2ff9437 2022-02-24 21:03:41 +00:00
waldo1001
990b56fee9 deploy: 743886be65 2022-02-24 20:07:50 +00:00
waldo1001
72d0328fa0 deploy: 4515a721bd 2022-02-23 22:44:13 +00:00
JeremyVyska
77937b249a deploy: dc63c56067 2022-02-23 06:33:07 +00:00
JeremyVyska
6101d38b0d deploy: 322ce9cc55 2022-02-22 08:39:06 +00:00
TheDoubleH
573b8d1ca3 deploy: ea9d99f3bb 2022-02-22 08:03:05 +00:00
JeremyVyska
8653165eed deploy: 70ab70dffa 2022-02-21 14:51:44 +00:00
JeremyVyska
c0a0c2b0d1 deploy: 984652dc9d 2022-02-21 14:46:29 +00:00
JeremyVyska
fff62a9a12 deploy: 10d929b57b 2022-02-21 06:41:03 +00:00
JeremyVyska
2d866c6316 deploy: d7a7d2459a 2022-02-20 20:13:18 +00:00
JeremyVyska
34af3362da deploy: eee9b2b2c1 2022-02-15 21:05:36 +00:00
JeremyVyska
7274dae657 deploy: b8be6ed4b3 2022-02-15 21:05:07 +00:00
TheDoubleH
e4f08bf9a7 deploy: 9e06f72056 2022-02-11 17:30:04 +00:00
waldo1001
de09820554 deploy: b80bf681a4 2022-02-10 15:21:14 +00:00
waldo1001
07f7d3fad3 deploy: 74b163cc48 2022-02-10 15:19:04 +00:00
JesperSchulz
9c6169cd6c deploy: 38a19d75d8 2021-12-15 09:08:17 +00:00
JesperSchulz
d4c41c7a00 deploy: 0652b72824 2021-12-15 09:07:31 +00:00
waldo1001
cbb4b02680 deploy: 72134d6af8 2021-12-15 05:25:02 +00:00
TheDoubleH
723ebe0f8c deploy: 4e0008525e 2021-12-14 21:32:47 +00:00
TheDoubleH
a135d8b92c deploy: 56ac137f7c 2021-12-14 21:31:38 +00:00
TheDoubleH
359c95bfac deploy: 54c74dfd7e 2021-12-14 21:30:13 +00:00
TheDoubleH
a1725fca7b deploy: d0bbfcebed 2021-12-14 21:24:50 +00:00
TheDoubleH
51853c60ee deploy: 525a7cd398 2021-12-14 21:22:33 +00:00
TheDoubleH
6ca52ea91a deploy: da9359cdb0 2021-12-14 21:21:42 +00:00
TheDoubleH
c636361aaf deploy: 6181d444c2 2021-12-14 21:21:04 +00:00
TheDoubleH
ab0f87f1e5 deploy: 3e49426a15 2021-12-14 20:55:27 +00:00
TheDoubleH
816d38948d deploy: 9ee8dc872d 2021-12-14 20:54:33 +00:00
TheDoubleH
910c3b92b3 deploy: 7bf3b0fe6f 2021-12-14 20:53:30 +00:00
TheDoubleH
d9c8e0231b deploy: eab45dbd91 2021-12-14 20:50:50 +00:00
TheDoubleH
ca19ee8d56 deploy: 6a6e22433a 2021-12-14 20:47:23 +00:00
TheDoubleH
c354076240 deploy: bd32e3f1ac 2021-12-14 20:45:02 +00:00
TheDoubleH
ac41363f39 deploy: 99cbd91ba4 2021-12-14 20:43:18 +00:00
TheDoubleH
2c5e80a8bf deploy: dd680561a2 2021-12-14 20:39:29 +00:00
TheDoubleH
ce10cf9e96 deploy: 1a7defb1d3 2021-12-14 20:38:42 +00:00
waldo1001
099d17c0d2 deploy: 932a7adbd4 2021-12-11 12:27:09 +00:00
JeremyVyska
e9d640d50a deploy: 8f41c13f0f 2021-12-05 21:23:42 +00:00
TheDoubleH
b46ee5b225 deploy: ba12637e35 2021-12-05 00:05:31 +00:00
JeremyVyska
d60c48d8a0 deploy: 10a2d6899e 2021-12-02 15:41:13 +00:00
waldo1001
2834098a70 deploy: 9d49a2dc82 2021-12-01 14:50:51 +00:00
waldo1001
5a801fae69 deploy: eb22cb6cb7 2021-11-22 07:37:34 +00:00
TheDoubleH
3923b7fdf4 deploy: ed86080506 2021-11-20 19:43:07 +00:00
waldo1001
78925a791a deploy: cb9f3051eb 2021-11-19 17:26:26 +00:00
waldo1001
1e734f8858 deploy: 6c1f15c278 2021-11-19 16:09:22 +00:00
TheDoubleH
929cf13e1e deploy: d27e1d579b 2021-11-19 15:35:57 +00:00
JeremyVyska
6a0769ecdf deploy: 0243955ac5 2021-11-19 15:10:43 +00:00
TheDoubleH
04bf19baad deploy: 34e4cae27e 2021-11-19 09:15:45 +00:00
TheDoubleH
64810dd590 deploy: d4382c9e18 2021-11-19 09:00:38 +00:00
TheDoubleH
a01eae5835 deploy: 7437fbfc07 2021-11-16 22:22:55 +00:00
TheDoubleH
4c36721a0a deploy: 7da313b7c6 2021-11-16 17:44:37 +00:00
waldo1001
52ba0d2c26 deploy: c80095ea95 2021-11-15 22:22:44 +00:00
waldo1001
aca2511c9a deploy: 28eab4a5a0 2021-11-11 13:59:35 +00:00
waldo1001
fd4c4e6198 deploy: 2676b55e22 2021-11-11 13:52:55 +00:00
waldo1001
002f3c1d18 deploy: c19c60ae49 2021-11-11 13:50:18 +00:00
waldo1001
fc2093e43d deploy: 12fe4a3e1b 2021-11-11 13:46:09 +00:00
waldo1001
e0ebd5cb4a deploy: cf0ecbda4d 2021-11-11 13:35:42 +00:00
waldo1001
63ca70861e deploy: a84fbbda82 2021-11-11 08:04:45 +00:00
JeremyVyska
205450b587 deploy: 59b6931408 2021-11-11 07:53:20 +00:00
JeremyVyska
a3eb251835 deploy: 6c4cbf2f42 2021-11-11 07:52:56 +00:00
waldo1001
74b575a122 deploy: 6abfac51f7 2021-11-10 23:33:03 +00:00
JeremyVyska
62b3194f3b deploy: 6771da7dc8 2021-11-10 09:19:40 +00:00
JeremyVyska
740dbf4e5a deploy: 2d3e5d02a2 2021-11-10 09:17:12 +00:00
ajkauffmann
27483c8f45 deploy: 79e3d31b4d 2021-11-10 07:46:03 +00:00
Arend-Jan Kauffmann
b3164ca8f0 Update CNAME 2021-11-10 08:43:28 +01:00
JeremyVyska
4d6fcee21a deploy: db1da7795e 2021-11-09 13:19:59 +00:00
Jeremy Vyska
829e0acf57 Create CNAME 2021-11-09 13:52:40 +01:00
JesperSchulz
cb4e8e2194 deploy: 81ffc9da10 2021-11-08 15:53:12 +00:00
Jeremy Vyska
158b902b20 Create CNAME 2021-11-05 10:44:38 +01:00
waldo1001
de51cb0ad5 deploy: 7f33b0180f 2021-11-05 09:31:51 +00:00
Jeremy Vyska
90cf73d9e5 Create CNAME 2021-11-05 09:47:08 +01:00
JeremyVyska
4f1faf3e84 deploy: 6588f23109 2021-11-05 08:46:02 +00:00
Arend-Jan Kauffmann
d23ccf86e1 Create CNAME 2021-11-05 09:11:36 +01:00
JeremyVyska
bd0e425174 deploy: a951e3a9ef 2021-11-05 07:48:20 +00:00
JeremyVyska
3941105a09 deploy: 552e37fedc 2021-11-04 21:35:51 +00:00
541 changed files with 52050 additions and 129 deletions

0
.nojekyll Normal file
View file

8
404.html Normal file
View file

@ -0,0 +1,8 @@
<!doctype html><html lang=en class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.119.0"><meta name=robots content="index, follow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>404 Page not found | alguidelines.dev - Business Central Design Patterns</title><meta name=description content><meta property="og:title" content="404 Page not found"><meta property="og:description" content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta property="og:type" content="website"><meta property="og:url" content="https://alguidelines.dev/404.html"><meta property="og:image" content="https://alguidelines.dev/images/og-image-fission.png"><meta itemprop=name content="404 Page not found"><meta itemprop=description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://alguidelines.dev/images/og-image-fission.png"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><link rel=preload href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css as=style><link href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.6.0.min.js integrity=sha384-vtXRMe3mGCbOeY7l30aIg8H9p3GdeSe4IFlP6G8JMa7o7lXvnz3GFKzPxzJdPfGK crossorigin=anonymous></script>
<script src=https://unpkg.com/lunr@2.3.9/lunr.min.js integrity=sha384-203J0SNzyqHby3iU6hzvzltrWi/M41wOP5Gu+BiJMz5nwKykbkUx8Kp7iti0Lpli crossorigin=anonymous></script></head><body class=td-404><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand href=/><img src=/images/SiteLogo.png height=32px>
<span class="font-weight-bold show-desktop">alguidelines.dev - Business Central Design Patterns</span>
<span class="font-weight-bold show-mobile-inline">alguidelines.dev</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/docs/><i class='fas fa-book'></i><span>Docs</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines/discussions/ target=_blank><i class='fas fa-comments'></i><span>Discussions</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines target=_blank><i class='fab fa-github'></i><span>GitHub</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://discord.gg/4wbfNv3 target=_blank><i class='fab fa-discord'></i><span>Discord</span></a></li></ul></div><div class="navbar-nav d-none d-lg-block"><input type=search class="form-control td-search-input" placeholder="&#xf002; Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.f57facda2998f11fdc2549a36425d2f6.json data-offline-search-base-href=/ data-offline-search-max-results=10></div></nav></header><div class="container-fluid td-default td-outer"><main role=main class=td-main><main id=main><div><h1 id=title>Not found</h1><p>Oops! This page doesn't exist. Try going back to our <a href=/>home page</a>.</p></div></main></main><footer class="bg-dark py-5 row d-print-none"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel=noopener href=https://github.com/microsoft/alguidelines aria-label=GitHub><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Twitter aria-label=Twitter><a class=text-white target=_blank rel=noopener href="https://twitter.com/search?q=%23bcalhelp" aria-label=Twitter><i class="fab fa-twitter"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Discord aria-label=Discord><a class=text-white target=_blank rel=noopener href=https://discord.gg/4wbfNv3 aria-label=Discord><i class="fab fa-discord"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>&copy; 2023 alguidelines.dev Project All Rights Reserved</small></div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/mermaid@8.13.4/dist/mermaid.min.js integrity="sha512-JERecFUBbsm75UpkVheAuDOE8NdHjQBrPACfEQYPwvPG+fjgCpHAz1Jw2ci9EXmd3DdfiWth3O3CQvcfEg8gsA==" crossorigin=anonymous></script>
<script src=/js/tabpane-persist.js></script>
<script src=/js/main.min.9021b54d402798091af52a2fc8b747e6c5076e5f1323b276dc25e0774fb46c2d.js integrity="sha256-kCG1TUAnmAka9SovyLdH5sUHbl8TI7J23CXgd0+0bC0=" crossorigin=anonymous></script></body></html>

1
CNAME Normal file
View file

@ -0,0 +1 @@
alguidelines.dev

View file

@ -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
View file

@ -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

View file

@ -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.

View file

@ -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 -->

View file

@ -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.

8
author/index.html Normal file
View file

@ -0,0 +1,8 @@
<!doctype html><html lang=en class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.119.0"><link rel=alternate type=application/rss+xml href=https://alguidelines.dev/author/index.xml><meta name=robots content="index, follow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>Author | alguidelines.dev - Business Central Design Patterns</title><meta name=description content><meta property="og:title" content="Author"><meta property="og:description" content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta property="og:type" content="website"><meta property="og:url" content="https://alguidelines.dev/author/"><meta property="og:image" content="https://alguidelines.dev/images/og-image-fission.png"><meta itemprop=name content="Author"><meta itemprop=description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://alguidelines.dev/images/og-image-fission.png"><meta name=twitter:title content="Author"><meta name=twitter:description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><link rel=preload href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css as=style><link href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.6.0.min.js integrity=sha384-vtXRMe3mGCbOeY7l30aIg8H9p3GdeSe4IFlP6G8JMa7o7lXvnz3GFKzPxzJdPfGK crossorigin=anonymous></script>
<script src=https://unpkg.com/lunr@2.3.9/lunr.min.js integrity=sha384-203J0SNzyqHby3iU6hzvzltrWi/M41wOP5Gu+BiJMz5nwKykbkUx8Kp7iti0Lpli crossorigin=anonymous></script></head><body class=td-taxonomy><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand href=/><img src=/images/SiteLogo.png height=32px>
<span class="font-weight-bold show-desktop">alguidelines.dev - Business Central Design Patterns</span>
<span class="font-weight-bold show-mobile-inline">alguidelines.dev</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/docs/><i class='fas fa-book'></i><span>Docs</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines/discussions/ target=_blank><i class='fas fa-comments'></i><span>Discussions</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines target=_blank><i class='fab fa-github'></i><span>GitHub</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://discord.gg/4wbfNv3 target=_blank><i class='fab fa-discord'></i><span>Discord</span></a></li></ul></div><div class="navbar-nav d-none d-lg-block"><input type=search class="form-control td-search-input" placeholder="&#xf002; Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.f57facda2998f11fdc2549a36425d2f6.json data-offline-search-base-href=/ data-offline-search-max-results=10></div></nav></header><div class="container-fluid td-default td-outer"><main role=main class=td-main><div class=td-content><main class=taxonomy-terms-page><h1>Author</h1></main></div></main><footer class="bg-dark py-5 row d-print-none"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel=noopener href=https://github.com/microsoft/alguidelines aria-label=GitHub><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Twitter aria-label=Twitter><a class=text-white target=_blank rel=noopener href="https://twitter.com/search?q=%23bcalhelp" aria-label=Twitter><i class="fab fa-twitter"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Discord aria-label=Discord><a class=text-white target=_blank rel=noopener href=https://discord.gg/4wbfNv3 aria-label=Discord><i class="fab fa-discord"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>&copy; 2023 alguidelines.dev Project All Rights Reserved</small></div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/mermaid@8.13.4/dist/mermaid.min.js integrity="sha512-JERecFUBbsm75UpkVheAuDOE8NdHjQBrPACfEQYPwvPG+fjgCpHAz1Jw2ci9EXmd3DdfiWth3O3CQvcfEg8gsA==" crossorigin=anonymous></script>
<script src=/js/tabpane-persist.js></script>
<script src=/js/main.min.9021b54d402798091af52a2fc8b747e6c5076e5f1323b276dc25e0774fb46c2d.js integrity="sha256-kCG1TUAnmAka9SovyLdH5sUHbl8TI7J23CXgd0+0bC0=" crossorigin=anonymous></script></body></html>

1
author/index.xml Normal file
View file

@ -0,0 +1 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns Author</title><link>https://alguidelines.dev/author/</link><description>Recent content in Author on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/author/index.xml" rel="self" type="application/rss+xml"/></channel></rss>

14
blog/index.html Normal file
View file

@ -0,0 +1,14 @@
<!doctype html><html lang=en class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.119.0"><link rel=alternate type=application/rss+xml href=https://alguidelines.dev/blog/index.xml><meta name=robots content="index, follow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>AL Guidelines Blog | alguidelines.dev - Business Central Design Patterns</title><meta name=description content><meta property="og:title" content="AL Guidelines Blog"><meta property="og:description" content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta property="og:type" content="website"><meta property="og:url" content="https://alguidelines.dev/blog/"><meta property="og:image" content="https://alguidelines.dev/images/og-image-fission.png"><meta itemprop=name content="AL Guidelines Blog"><meta itemprop=description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://alguidelines.dev/images/og-image-fission.png"><meta name=twitter:title content="AL Guidelines Blog"><meta name=twitter:description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><link rel=preload href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css as=style><link href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.6.0.min.js integrity=sha384-vtXRMe3mGCbOeY7l30aIg8H9p3GdeSe4IFlP6G8JMa7o7lXvnz3GFKzPxzJdPfGK crossorigin=anonymous></script>
<script src=https://unpkg.com/lunr@2.3.9/lunr.min.js integrity=sha384-203J0SNzyqHby3iU6hzvzltrWi/M41wOP5Gu+BiJMz5nwKykbkUx8Kp7iti0Lpli crossorigin=anonymous></script></head><body class="td-section td-blog"><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand href=/><img src=/images/SiteLogo.png height=32px>
<span class="font-weight-bold show-desktop">alguidelines.dev - Business Central Design Patterns</span>
<span class="font-weight-bold show-mobile-inline">alguidelines.dev</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/docs/><i class='fas fa-book'></i><span>Docs</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines/discussions/ target=_blank><i class='fas fa-comments'></i><span>Discussions</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines target=_blank><i class='fab fa-github'></i><span>GitHub</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://discord.gg/4wbfNv3 target=_blank><i class='fab fa-discord'></i><span>Discord</span></a></li></ul></div><div class="navbar-nav d-none d-lg-block"><input type=search class="form-control td-search-input" placeholder="&#xf002; Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.f57facda2998f11fdc2549a36425d2f6.json data-offline-search-base-href=/ data-offline-search-max-results=10></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><aside class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"><div id=td-sidebar-menu class=td-sidebar__inner><div id=content-mobile><form class="td-sidebar__search d-flex align-items-center"><input type=search class="form-control td-search-input" placeholder="&#xf002; Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.f57facda2998f11fdc2549a36425d2f6.json data-offline-search-base-href=/ data-offline-search-max-results=10>
<button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type=button data-toggle=collapse data-target=#td-section-nav aria-controls=td-docs-nav aria-expanded=false aria-label="Toggle section navigation"></button></form></div><div id=content-desktop></div><nav class="collapse td-sidebar-nav" id=td-section-nav><ul class="td-sidebar-nav__section pr-md-3 ul-0"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-blog-li><a href=/blog/ title="AL Guidelines Blog" class="align-left pl-0 active td-sidebar-link td-sidebar-link__section tree-root" id=m-blog><span class=td-sidebar-nav-active-item>Blog</span></a></li></ul></nav></div></aside><aside class="d-none d-xl-block col-xl-2 td-sidebar-toc d-print-none"><div class="td-page-meta ml-2 pb-1 pt-2 mb-0"><a href=https://github.com/microsoft/alguidelines/tree/main/content/blog/_index.md class=td-page-meta--view target=_blank rel=noopener><i class="fa fa-file-alt fa-fw"></i> View page source</a>
<a href=https://github.com/microsoft/alguidelines/edit/main/content/blog/_index.md class=td-page-meta--edit target=_blank rel=noopener><i class="fa fa-edit fa-fw"></i> Edit this page</a>
<a href="https://github.com/microsoft/alguidelines/new/main/content/blog/_index.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" class=td-page-meta--child target=_blank rel=noopener><i class="fa fa-edit fa-fw"></i> Create child page</a>
<a href="https://github.com/microsoft/alguidelines/issues/new?title=AL%20Guidelines%20Blog" class=td-page-meta--issue target=_blank rel=noopener><i class="fab fa-github fa-fw"></i> Create Issue</a>
<a href="https://github.com/microsoft/alguidelines/discussions?discussions_q=AL%20Guidelines%20Blog" class=td-page-meta--issue target=_blank rel=noopener><i class="fab fa-github fa-fw"></i> Discussions</a>
<a href=https://github.com/microsoft/alguidelines/issues/new class=td-page-meta--project-issue target=_blank rel=noopener><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tag Cloud</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://alguidelines.dev/tags/al/ data-taxonomy-term=al><span class=taxonomy-label>AL</span><span class=taxonomy-count>37</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/api/ data-taxonomy-term=api><span class=taxonomy-label>API</span><span class=taxonomy-count>3</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/c/al/ data-taxonomy-term=c/al><span class=taxonomy-label>C/AL</span><span class=taxonomy-count>136</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/decoupling/ data-taxonomy-term=decoupling><span class=taxonomy-label>Decoupling</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/extendability/ data-taxonomy-term=extendability><span class=taxonomy-label>Extendability</span><span class=taxonomy-count>3</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/interface/ data-taxonomy-term=interface><span class=taxonomy-label>Interface</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/performance/ data-taxonomy-term=performance><span class=taxonomy-label>Performance</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/productivity/ data-taxonomy-term=productivity><span class=taxonomy-label>Productivity</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/readability/ data-taxonomy-term=readability><span class=taxonomy-label>Readability</span><span class=taxonomy-count>56</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/telemetry/ data-taxonomy-term=telemetry><span class=taxonomy-label>Telemetry</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/testability/ data-taxonomy-term=testability><span class=taxonomy-label>Testability</span><span class=taxonomy-count>2</span></a></li></ul></div><div class="taxonomy taxonomy-terms-cloud taxo-categories"><h5 class=taxonomy-title>Categories</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://alguidelines.dev/categories/best-practice/ data-taxonomy-term=best-practice><span class=taxonomy-label>Best Practice</span><span class=taxonomy-count>91</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/categories/pattern/ data-taxonomy-term=pattern><span class=taxonomy-label>Pattern</span><span class=taxonomy-count>73</span></a></li></ul></div></aside><main class="col-12 col-md-9 col-xl-8 pl-md-5 pr-md-4" role=main><a class="btn btn-lg -bg-orange td-rss-button d-none d-lg-block" href=https://alguidelines.dev/blog/index.xml target=_blank>RSS <i class="fa fa-rss ml-2"></i></a><div class=row><div class=col-12></div></div><div class="row pl-2 pt-2"><div class=col></div></div></main></div></div><footer class="bg-dark py-5 row d-print-none"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel=noopener href=https://github.com/microsoft/alguidelines aria-label=GitHub><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Twitter aria-label=Twitter><a class=text-white target=_blank rel=noopener href="https://twitter.com/search?q=%23bcalhelp" aria-label=Twitter><i class="fab fa-twitter"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Discord aria-label=Discord><a class=text-white target=_blank rel=noopener href=https://discord.gg/4wbfNv3 aria-label=Discord><i class="fab fa-discord"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>&copy; 2023 alguidelines.dev Project All Rights Reserved</small></div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/mermaid@8.13.4/dist/mermaid.min.js integrity="sha512-JERecFUBbsm75UpkVheAuDOE8NdHjQBrPACfEQYPwvPG+fjgCpHAz1Jw2ci9EXmd3DdfiWth3O3CQvcfEg8gsA==" crossorigin=anonymous></script>
<script src=/js/tabpane-persist.js></script>
<script src=/js/main.min.9021b54d402798091af52a2fc8b747e6c5076e5f1323b276dc25e0774fb46c2d.js integrity="sha256-kCG1TUAnmAka9SovyLdH5sUHbl8TI7J23CXgd0+0bC0=" crossorigin=anonymous></script></body></html>

1
blog/index.xml Normal file
View file

@ -0,0 +1 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns AL Guidelines Blog</title><link>https://alguidelines.dev/blog/</link><description>Recent content in AL Guidelines Blog on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/blog/index.xml" rel="self" type="application/rss+xml"/></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

8
categories/index.html Normal file
View file

@ -0,0 +1,8 @@
<!doctype html><html lang=en class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.119.0"><link rel=alternate type=application/rss+xml href=https://alguidelines.dev/categories/index.xml><meta name=robots content="index, follow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>Categories | alguidelines.dev - Business Central Design Patterns</title><meta name=description content><meta property="og:title" content="Categories"><meta property="og:description" content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta property="og:type" content="website"><meta property="og:url" content="https://alguidelines.dev/categories/"><meta property="og:image" content="https://alguidelines.dev/images/og-image-fission.png"><meta itemprop=name content="Categories"><meta itemprop=description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://alguidelines.dev/images/og-image-fission.png"><meta name=twitter:title content="Categories"><meta name=twitter:description content="Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central"><link rel=preload href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css as=style><link href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.6.0.min.js integrity=sha384-vtXRMe3mGCbOeY7l30aIg8H9p3GdeSe4IFlP6G8JMa7o7lXvnz3GFKzPxzJdPfGK crossorigin=anonymous></script>
<script src=https://unpkg.com/lunr@2.3.9/lunr.min.js integrity=sha384-203J0SNzyqHby3iU6hzvzltrWi/M41wOP5Gu+BiJMz5nwKykbkUx8Kp7iti0Lpli crossorigin=anonymous></script></head><body class=td-taxonomy><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand href=/><img src=/images/SiteLogo.png height=32px>
<span class="font-weight-bold show-desktop">alguidelines.dev - Business Central Design Patterns</span>
<span class="font-weight-bold show-mobile-inline">alguidelines.dev</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/docs/><i class='fas fa-book'></i><span>Docs</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines/discussions/ target=_blank><i class='fas fa-comments'></i><span>Discussions</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/microsoft/alguidelines target=_blank><i class='fab fa-github'></i><span>GitHub</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://discord.gg/4wbfNv3 target=_blank><i class='fab fa-discord'></i><span>Discord</span></a></li></ul></div><div class="navbar-nav d-none d-lg-block"><input type=search class="form-control td-search-input" placeholder="&#xf002; Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.f57facda2998f11fdc2549a36425d2f6.json data-offline-search-base-href=/ data-offline-search-max-results=10></div></nav></header><div class="container-fluid td-default td-outer"><main role=main class=td-main><div class=td-content><main class=taxonomy-terms-page><h1>Categories</h1><div class="taxonomy taxonomy-terms-cloud taxo-categories"><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://alguidelines.dev/categories/best-practice/ data-taxonomy-term=best-practice><span class=taxonomy-label>Best Practice</span><span class=taxonomy-count>91</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/categories/pattern/ data-taxonomy-term=pattern><span class=taxonomy-label>Pattern</span><span class=taxonomy-count>73</span></a></li></ul></div></main></div></main><footer class="bg-dark py-5 row d-print-none"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel=noopener href=https://github.com/microsoft/alguidelines aria-label=GitHub><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Twitter aria-label=Twitter><a class=text-white target=_blank rel=noopener href="https://twitter.com/search?q=%23bcalhelp" aria-label=Twitter><i class="fab fa-twitter"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Discord aria-label=Discord><a class=text-white target=_blank rel=noopener href=https://discord.gg/4wbfNv3 aria-label=Discord><i class="fab fa-discord"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>&copy; 2023 alguidelines.dev Project All Rights Reserved</small></div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/mermaid@8.13.4/dist/mermaid.min.js integrity="sha512-JERecFUBbsm75UpkVheAuDOE8NdHjQBrPACfEQYPwvPG+fjgCpHAz1Jw2ci9EXmd3DdfiWth3O3CQvcfEg8gsA==" crossorigin=anonymous></script>
<script src=/js/tabpane-persist.js></script>
<script src=/js/main.min.9021b54d402798091af52a2fc8b747e6c5076e5f1323b276dc25e0774fb46c2d.js integrity="sha256-kCG1TUAnmAka9SovyLdH5sUHbl8TI7J23CXgd0+0bC0=" crossorigin=anonymous></script></body></html>

1
categories/index.xml Normal file
View file

@ -0,0 +1 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns Categories</title><link>https://alguidelines.dev/categories/</link><description>Recent content in Categories on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/categories/index.xml" rel="self" type="application/rss+xml"/></channel></rss>

File diff suppressed because one or more lines are too long

4481
categories/pattern/index.xml Normal file

File diff suppressed because one or more lines are too long

208
css/prism.css Normal file
View file

@ -0,0 +1,208 @@
/* PrismJS 1.21.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+c+csharp+cpp+go+java+markdown+python+scss+sql+toml+yaml&plugins=toolbar+copy-to-clipboard */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.token.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
/* This background color was intended by the author of this theme. */
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
div.code-toolbar {
position: relative;
}
div.code-toolbar > .toolbar {
position: absolute;
top: .3em;
right: .2em;
transition: opacity 0.3s ease-in-out;
opacity: 0;
}
div.code-toolbar:hover > .toolbar {
opacity: 1;
}
/* Separate line b/c rules are thrown out if selector is invalid.
IE11 and old Edge versions don't support :focus-within. */
div.code-toolbar:focus-within > .toolbar {
opacity: 1;
}
div.code-toolbar > .toolbar .toolbar-item {
display: inline-block;
}
div.code-toolbar > .toolbar a {
cursor: pointer;
}
div.code-toolbar > .toolbar button {
background: none;
border: 0;
color: inherit;
font: inherit;
line-height: normal;
overflow: visible;
padding: 0;
-webkit-user-select: none; /* for button */
-moz-user-select: none;
-ms-user-select: none;
}
div.code-toolbar > .toolbar a,
div.code-toolbar > .toolbar button,
div.code-toolbar > .toolbar span {
color: #bbb;
font-size: .8em;
padding: 0 .5em;
background: #f5f2f0;
background: rgba(224, 224, 224, 0.2);
box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
border-radius: .5em;
}
div.code-toolbar > .toolbar a:hover,
div.code-toolbar > .toolbar a:focus,
div.code-toolbar > .toolbar button:hover,
div.code-toolbar > .toolbar button:focus,
div.code-toolbar > .toolbar span:hover,
div.code-toolbar > .toolbar span:focus {
color: inherit;
text-decoration: none;
}

2
css/shortcodes.css Normal file
View file

@ -0,0 +1,2 @@
@import "shortcodes/tabbed-pane.css";
@import "shortcodes/cards-pane.css";

View file

@ -0,0 +1,21 @@
.card-deck {
max-width: 83%;
}
.card {
max-width: 80%;
}
.card-body.code {
background-color: #f8f9fa;
padding: 0 0 0 1ex;
}
.card-body pre {
margin: 0;
padding: 0 1rem 1rem 1rem;
}
.card .highlight {
border: none;
}

View file

@ -0,0 +1,18 @@
.td-content .highlight {
margin: 0rem 0 2rem 0;
}
.tab-content .highlight {
border: none;
}
.tab-content {
margin: 0rem;
max-width: 80%;
}
.tab-content pre {
border-left: 1px solid rgba(0, 0, 0, 0.125);
border-right: 1px solid rgba(0, 0, 0, 0.125);
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}

4
css/swagger-ui.css Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2375
docs/bestpractices/index.xml Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

152
docs/contributing/index.xml Normal file
View file

@ -0,0 +1,152 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns Contributing</title><link>https://alguidelines.dev/docs/contributing/</link><description>Recent content in Contributing on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/docs/contributing/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Formatting tips</title><link>https://alguidelines.dev/docs/contributing/formattingtips/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/formattingtips/</guid><description>
&lt;h1 id="tips-and-tricks-in-terms-of-working-with-markdown-and-hugo">Tips and tricks in terms of working with MarkDown and Hugo&lt;/h1>
&lt;h2 id="markdown-cheat-sheet">Markdown Cheat Sheet&lt;/h2>
&lt;p>Here you can find a rather interesting Cheat Sheet regarding markdown: &lt;a href="https://www.markdownguide.org/cheat-sheet">https://www.markdownguide.org/cheat-sheet&lt;/a>&lt;/p>
&lt;h2 id="code-fences--syntax-highlighting">Code Fences / Syntax highlighting&lt;/h2>
&lt;p>The syntax to use codefences is with backticks. If you provide the language after the first block of backticks, github will automatically put that in decent syntax highlighting. So, A simple code fence with AL code, can simply be done by:&lt;/p>
&lt;pre tabindex="0">&lt;code>```AL
procedure ALGuidelinesRock()
var
Customer: Record Customer;
begin
Customer.Get(&amp;#39;10000&amp;#39;);
Customer.Name := &amp;#39;waldo&amp;#39;;
Customer.Modify(true);
end;
```
&lt;/code>&lt;/pre>&lt;p>Results in:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-AL" data-lang="AL">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">procedure&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>ALGuidelinesRock&lt;span style="color:#ce5c00;font-weight:bold">()
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">var&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>Customer&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">Record&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>Customer&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">begin&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>Customer&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>Get&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;10000&amp;#39;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>Customer&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>Name&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">:=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;waldo&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>Customer&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#204a87;font-weight:bold">Modify&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>true&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">end&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="diagrams-with-mermaid">Diagrams with Mermaid&lt;/h2>
&lt;p>When providing a documentation, diagrams come in handy. &lt;a href="https://mermaid-js.github.io/mermaid/#/">Mermaid&lt;/a> lets you create diagrams and visualizations using text and code.&lt;/p>
&lt;p>For example the following markdown section:&lt;/p>
&lt;pre tabindex="0">&lt;code>```mermaid
classDiagram
Animal &amp;lt;|-- Duck
Animal &amp;lt;|-- Fish
Animal &amp;lt;|-- Zebra
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}
```
&lt;/code>&lt;/pre>&lt;p>Results in:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-mermaid" data-lang="mermaid">classDiagram
Animal &amp;lt;|-- Duck
Animal &amp;lt;|-- Fish
Animal &amp;lt;|-- Zebra
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}
&lt;/code>&lt;/pre>&lt;p>Can&amp;rsquo;t wait to get started? Use the Mermaid &lt;a href="https://mermaid.live/edit">Live Editor&lt;/a>.&lt;/p>
&lt;h2 id="hugo-shortcodes">Hugo Shortcodes&lt;/h2>
&lt;p>Since we&amp;rsquo;re using &amp;ldquo;Hugo&amp;rdquo;, we can use it&amp;rsquo;s shortcode. Here is a reference: &lt;a href="https://gohugo.io/content-management/shortcodes/">https://gohugo.io/content-management/shortcodes/&lt;/a>&lt;/p>
&lt;p>It basically means we are able to use easy notations to do cool things. Let&amp;rsquo;s point out some useful shortcodes:&lt;/p>
&lt;h3 id="twitter">Twitter&lt;/h3>
&lt;pre tabindex="0">&lt;code>{{&amp;lt; tweet user=&amp;#34;waldo1001&amp;#34; id=&amp;#34;1458787011024805892&amp;#34; &amp;gt;}}
&lt;/code>&lt;/pre>&lt;p>makes:
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">&amp;quot;Code is Poetry!&amp;quot;&lt;a href="https://twitter.com/hashtag/msdyn365bc?src=hash&amp;amp;ref_src=twsrc%5Etfw">#msdyn365bc&lt;/a>&lt;/p>&amp;mdash; waldo (@waldo1001) &lt;a href="https://twitter.com/waldo1001/status/1458787011024805892?ref_src=twsrc%5Etfw">November 11, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;/p>
&lt;h3 id="youtube">YouTube&lt;/h3>
&lt;pre tabindex="0">&lt;code>{{&amp;lt; youtube QVOMCYitLEc &amp;gt;}}
&lt;/code>&lt;/pre>&lt;p>makes:
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/QVOMCYitLEc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;h3 id="figure">Figure&lt;/h3>
&lt;pre tabindex="0">&lt;code>{{&amp;lt; figure src=&amp;#34;http://www.waldo.be/wp-content/uploads/2021/11/business-central-logo.png&amp;#34; title=&amp;#34;Business Central&amp;#34; &amp;gt;}}
&lt;/code>&lt;/pre>&lt;p>makes:
&lt;figure>
&lt;img src="http://www.waldo.be/wp-content/uploads/2021/11/business-central-logo.png"/> &lt;figcaption>
&lt;h4>Business Central&lt;/h4>
&lt;/figcaption>
&lt;/figure>
&lt;/p></description></item><item><title>Docs: Guide to Fork &amp; PR</title><link>https://alguidelines.dev/docs/contributing/forkandpr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/forkandpr/</guid><description>
&lt;h2 id="abstract">Abstract&lt;/h2>
&lt;p>AL Guidelines is a community project, and as such YOU are encouraged to submit corrections and new ideas. In order to get your content included, you must submit a pull request to the GitHub Repository (Located here: &lt;a href="https://github.com/microsoft/alguidelines">https://github.com/microsoft/alguidelines&lt;/a>). All Pull Requests are subject to approval by a minimum of three admins.&lt;/p>
&lt;p>If You are toying with an idea, but You aren&amp;rsquo;t ready to create a document just yet, you are encouraged to create a project discussion thread here: &lt;a href="https://github.com/microsoft/alguidelines/discussions">https://github.com/microsoft/alguidelines/discussions&lt;/a>&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
&lt;p>This is a warning.
If You haven&amp;rsquo;t worked in collaboration with &amp;ldquo;external&amp;rdquo; GitHub repositories before, please familiarize yourself with that process by visiting:&lt;/p>
&lt;p>&lt;a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests">https://docs.github.com/en/pull-requests/collaborating-with-pull-requests&lt;/a>&lt;/p>
&lt;/div>
&lt;h2 id="steps">Steps&lt;/h2>
&lt;p>Now that You have decided that You are ready to contribute, these are the steps to take.
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
&lt;p>You can read more about this process here:&lt;/p>
&lt;p>&lt;a href="https://docs.github.com/en/get-started/quickstart/contributing-to-projects">https://docs.github.com/en/get-started/quickstart/contributing-to-projects&lt;/a>&lt;/p>
&lt;/div>
&lt;/p>
&lt;h3 id="step-1-fork">Step 1: Fork&lt;/h3>
&lt;p>In order to work on the repository, You must &lt;a href="https://docs.github.com/en/get-started/quickstart/fork-a-repo">Fork&lt;/a> the repository.&lt;/p>
&lt;p>By forking the repository, You essentially create a copy into Your own account.&lt;/p>
&lt;p>Start by going to the GitHub Repository (&lt;a href="https://github.com/microsoft/alguidelines">https://github.com/microsoft/alguidelines&lt;/a>), and press the Fork &lt;img src="./fork_button.jpg" alt="Fork Button" title="Fork">&lt;/p>
&lt;p>Once You have successfully forked the repository, go to your own GitHub repository : &lt;img src="./ForkedRepro.png" alt="Forked Repository Representation" title="Forked repository">&lt;/p>
&lt;p>You are now able to clone your own repository to your local pc and start editing using your favorite editor. &lt;a href="https://code.visualstudio.com/">Visual Studio Code&lt;/a> is perfectly fine for this task.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
&lt;p>You can read more about forking here:&lt;/p>
&lt;p>&lt;a href="https://docs.github.com/en/get-started/quickstart/fork-a-repo">https://docs.github.com/en/get-started/quickstart/fork-a-repo&lt;/a>&lt;/p>
&lt;/div>
&lt;h3 id="step-2-branch">Step 2: Branch&lt;/h3>
&lt;p>While not necessarily a must, it is always good practice to create a branch off of your forked repository. That will allow you to work on multiple contributions at the same time and won&amp;rsquo;t have to wait for pull requests to be approved before you can continue on your next contribution.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
&lt;p>You can read more about Branches here:&lt;/p>
&lt;p>&lt;a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches">https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches&lt;/a>&lt;/p>
&lt;/div>
&lt;h3 id="step-3-pull-request">Step 3: Pull Request&lt;/h3>
&lt;p>Once you are happy with your contribution, it&amp;rsquo;s time to create a pull request to propose changes into the main project! This is the final step in producing a fork of someone else&amp;rsquo;s project, and arguably the most important. If you&amp;rsquo;ve made a change that you feel would benefit the community as a whole, you should definitely consider contributing back.&lt;/p>
&lt;p>To do so, head on over to the repository on GitHub where your project lives. For this example, it would be at &lt;code>https://www.github.com/&amp;lt;your_username&amp;gt;/alguidelines&lt;/code>. You&amp;rsquo;ll see a banner indicating that your branch is one commit ahead of microsoft:main. Click &lt;strong>Contribute&lt;/strong> and then &lt;strong>Open a pull request.&lt;/strong>&lt;/p>
&lt;p>GitHub will bring you to a page that shows the differences between your fork and the microsoft/alguidelines repository. Click &lt;strong>Create pull request.&lt;/strong>&lt;/p>
&lt;p>GitHub will bring you to a page where you can enter a title and a description of your changes. &lt;em>It&amp;rsquo;s important to provide as much useful information and a rationale for why you&amp;rsquo;re making this pull request in the first place.&lt;/em> The project owners needs to be able to determine whether your change is as useful to everyone as you think it is. Finally, click &lt;strong>Create pull request.&lt;/strong>&lt;/p></description></item><item><title>Docs: Understanding the Approval Process</title><link>https://alguidelines.dev/docs/contributing/theapprovalprocess/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/theapprovalprocess/</guid><description>
&lt;p>(coming soon)&lt;/p></description></item><item><title>Docs: Install Hugo</title><link>https://alguidelines.dev/docs/contributing/installhugo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/installhugo/</guid><description>
&lt;p>There are multiple ways to install Hugo for you to properly preview your contributions. Please select the scenario that matches your setup.&lt;/p>
&lt;p>For the official install guide, you can visit &lt;a href="https://gohugo.io/getting-started/installing/">https://gohugo.io/getting-started/installing/&lt;/a>&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/G7umPCU-8xc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div></description></item><item><title>Docs: Templates</title><link>https://alguidelines.dev/docs/contributing/templates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/templates/</guid><description>
&lt;p>We have created some template-files that you can simply copy and use. Look at them as &amp;ldquo;Patterns for describing patterns&amp;rdquo;&lt;/p>
&lt;p>We currently offer the following templates:&lt;/p>
&lt;ul>
&lt;li>for &lt;a href="https://alguidelines.dev/contributing/templates/patterns/">Patterns&lt;/a> (&lt;a href="https://raw.githubusercontent.com/microsoft/alguidelines/main/content/docs/Contributing/Templates/Patterns/index.md">raw&lt;/a>)&lt;/li>
&lt;li>for &lt;a href="https://alguidelines.dev/contributing/templates/bestpractice/">Best Practice&lt;/a> (&lt;a href="https://raw.githubusercontent.com/microsoft/alguidelines/main/content/docs/Contributing/Templates/BestPractice/index.md">raw&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>opening the &amp;ldquo;raw&amp;rdquo; link, will allow for the best copy/paste result.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,69 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns Install Hugo</title><link>https://alguidelines.dev/docs/contributing/installhugo/</link><description>Recent content in Install Hugo on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/docs/contributing/installhugo/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Devcontainer with VS Code</title><link>https://alguidelines.dev/docs/contributing/installhugo/theshortcut/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/installhugo/theshortcut/</guid><description>
&lt;h2 id="use-a-local-devcontainer">Use a local devcontainer&lt;/h2>
&lt;p>If you don&amp;rsquo;t want any local setup (apart from Docker Desktop), but still run your own Hugo instance, you can make use of the preconfigured devcontainer. If you want to learn more about the concept, visit &lt;a href="https://code.visualstudio.com/docs/remote/containers">https://code.visualstudio.com/docs/remote/containers&lt;/a>. To use it, you need to take the following steps:&lt;/p>
&lt;ol>
&lt;li>Start &lt;a href="https://www.docker.com/products/docker-desktop">Docker Desktop&lt;/a> and &lt;a href="https://docs.docker.com/desktop/windows/#switch-between-windows-and-linux-containers">switch to Linux containers&lt;/a> by right-clicking on the Docker logo in the system tray and selecting &amp;ldquo;Switch to Linux containers&amp;hellip;&amp;rdquo;. If you only see &amp;ldquo;Switch to Windows containers&amp;hellip;&amp;rdquo;, then you are already switched to Linux containers. If anything goes wrong, check if you are on the latest version of Docker Desktop and have &lt;a href="https://docs.docker.com/desktop/windows/wsl/#install">the WSL2 integration enabled&lt;/a>. If you have all that in place and it still doesn&amp;rsquo;t work, check the extended installation documentation &lt;a href="https://code.visualstudio.com/docs/remote/containers#_installation">here&lt;/a>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Consequences of switching&lt;/h4>
When switching to Linux, you will probably see a warning that tells you that you &amp;ldquo;will not be able to manage the Windows containers until you switch back to Windows containers&amp;rdquo;. That means that the Docker Desktop management GUI can only show either the Windows containers or the Linux containers and if you switch to Linux, you consequently won&amp;rsquo;t see the Windows containers until you switch back. But the Windows containers will continue to run, you won&amp;rsquo;t loose data and you can keep using them e.g. for Business Central development, you just can&amp;rsquo;t manage them through the Docker Desktop GUI
&lt;/div>
&lt;/li>
&lt;li>Install the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack">Remote development extension pack&lt;/a> in Visual Studio Code&lt;/li>
&lt;li>Run the action &amp;ldquo;Remote containers: Clone Repository in Container Volume&amp;rdquo; and select the fork you created. If you haven&amp;rsquo;t done that before, go through the &lt;a href="https://alguidelines.dev/docs/contributing/forkandpr/#step-1-fork">docs&lt;/a>.&lt;/li>
&lt;li>Wait for a bit. When you do this for the first time, it can take a couple of minutes. Next time it will be faster&amp;hellip;&lt;/li>
&lt;li>After a while, you will have VS Code with the cloned repository and the terminal should show something like &amp;ldquo;Done. Press any key to close the terminal.&amp;rdquo;&lt;/li>
&lt;li>Run the action &amp;ldquo;Tasks: Run task&amp;rdquo; and select &amp;ldquo;Start local Hugo Server&amp;rdquo; from the list. If you don&amp;rsquo;t see that entry, you might have to reload your VS Code window and try again&lt;/li>
&lt;li>After Hugo has generated the site, you will get a notification that offers you to &amp;ldquo;Open a browser&amp;rdquo;. Click on that and you will see your local instance of the AL guidelines! Again, on the first try it will be a bit slow and sluggish, but the second one should be fast.&lt;/li>
&lt;li>Now you can make changes and just save them. If you open the terminal, you will see a message that tells you that a change was detected and the site was rebuilt. After that, the change should automatically appear in your browser&lt;/li>
&lt;/ol>
&lt;p>Here is a walkthrough of the full process:&lt;/p>
&lt;video width=100% controls>
&lt;source src="alguidelines walkthrough.mp4" type="video/mp4">
Your browser does not support the video tag.
&lt;/video>
&lt;h2 id="use-github-codespaces">Use GitHub Codespaces&lt;/h2>
&lt;p>What is also great about this, is that you can also use &lt;a href="https://github.com/features/codespaces">GitHub Codespaces&lt;/a> with that setup. In that case, steps 1-5 become two clicks&amp;hellip; Here is another full walkthrough:&lt;/p>
&lt;video width=100% controls>
&lt;source src="alguidelines codespace.mp4" type="video/mp4">
Your browser does not support the video tag.
&lt;/video></description></item><item><title>Docs: Manually on Windows 11</title><link>https://alguidelines.dev/docs/contributing/installhugo/manuallyonwindows11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/installhugo/manuallyonwindows11/</guid><description>
&lt;p>This guide will walk You thrugh installing Hugo on a Windows 11 PC. For the official install guide, You can wisit &lt;a href="https://gohugo.io/getting-started/installing/">https://gohugo.io/getting-started/installing/&lt;/a>.&lt;/p>
&lt;h2 id="download-binaries">Download Binaries&lt;/h2>
&lt;p>The path of least resistance is to just download the .zip file from the official Hugo GitHub Repository &lt;a href="https://github.com/gohugoio/hugo/releases">here&lt;/a>.&lt;/p>
&lt;p>The theme that are used, needs the extended version of Hugo, so make sure to download the &lt;strong>extended&lt;/strong> version by ensuring the file name starts with &lt;code>hugo_extended...&lt;/code>&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">info&lt;/h4>
&lt;p>For the purpose of this install guide, we are assuming You will want to follow the &amp;ldquo;standard&amp;rdquo; used by Hugo for installing. We will be creating a &lt;code>Hugo&lt;/code> folder in the root of &lt;code>C:\&lt;/code>. That folder will have a &lt;code>Bin&lt;/code> folder for the binaries, and a &lt;code>Sites&lt;/code> folder for each website You are building.&lt;/p>
&lt;p>Once You are done, You should have a folder structure that looks like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>C:\Hugo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── Bin # Binaries
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└┬─ Sites # Hugo Site Repositories
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> └── alguidelines # Hugo Source for alguidelines.dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;p>&lt;img src="SelectExtended.png" alt="image">&lt;/p>
&lt;p>After downloading the .zip file, extract the zip-file to &lt;code>c:\Hugo\Bin&lt;/code>&lt;/p>
&lt;p>&lt;img src="Extract.png" alt="image">&lt;/p>
&lt;p>&lt;img src="ExtractToBin.png" alt="image">&lt;/p>
&lt;h2 id="add-hugo-to-path">Add Hugo to Path&lt;/h2>
&lt;p>After copying the binaries to Your PC, You will need to add Hugo binaries to the &lt;code>%PATH%&lt;/code> system environment variables.&lt;/p>
&lt;p>To do that, search for &lt;code>environment&lt;/code>&lt;/p>
&lt;p>&lt;img src="SearchForEnv.png" alt="image">&lt;/p>
&lt;p>once you see the &lt;code>Edit the system environment variables&lt;/code>, open it and select &lt;code>Environment Variables&lt;/code>&lt;/p>
&lt;p>&lt;img src="SystemProperties.png" alt="image">&lt;/p>
&lt;p>Once the Environment Variables screen is open, highlight the &lt;code>Path&lt;/code> lines and press the &lt;code>Edit...&lt;/code> button&lt;/p>
&lt;p>&lt;img src="EnvironmentVariables.png" alt="image">&lt;/p>
&lt;p>Now press &lt;code>New&lt;/code> and add the &lt;code>C:\Hugo\Bin&lt;/code> to the path. Press &lt;code>OK&lt;/code> and &lt;code>OK&lt;/code> to save the new &lt;code>Path&lt;/code>&lt;/p>
&lt;p>&lt;img src="EnvironmentVariablesPath.png" alt="image">&lt;/p>
&lt;p>Once complete. You should now be able to preview the Hugo site on &lt;a href="http://localhost:1313">http://localhost:1313&lt;/a> by opening a command promt, and open the &lt;code>C:\Hugo\Sites\alguidelines&lt;/code> folder and execute &lt;code>Hugo Serve&lt;/code>&lt;/p>
&lt;p>&lt;img src="HugoServe.png" alt="image">&lt;/p></description></item><item><title>Docs: Powershell on Windows 11</title><link>https://alguidelines.dev/docs/contributing/installhugo/usingpowershellonwindows11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/installhugo/usingpowershellonwindows11/</guid><description>
&lt;p>It is possible to use a powershell script and Chocolatey to install and other dependencies. Execute the following script:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-powershell" data-lang="powershell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">Set-ExecutionPolicy&lt;/span> &lt;span style="color:#000">Bypass&lt;/span> &lt;span style="color:#000">-Scope&lt;/span> &lt;span style="color:#204a87;font-weight:bold">Process&lt;/span> &lt;span style="color:#000">-Force&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#000">System.Net.ServicePointManager&lt;/span>&lt;span style="color:#000;font-weight:bold">]::&lt;/span>&lt;span style="color:#000">SecurityProtocol&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#000">System.Net.ServicePointManager&lt;/span>&lt;span style="color:#000;font-weight:bold">]::&lt;/span>&lt;span style="color:#000">SecurityProtocol&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">-bor&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">3072&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">Invoke-Expression&lt;/span> &lt;span style="color:#000;font-weight:bold">((&lt;/span>&lt;span style="color:#204a87">New-Object&lt;/span> &lt;span style="color:#000">System&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Net&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">WebClient&lt;/span>&lt;span style="color:#000;font-weight:bold">).&lt;/span>&lt;span style="color:#000">DownloadString&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;https://community.chocolatey.org/install.ps1&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">))&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">choco&lt;/span> &lt;span style="color:#000">install&lt;/span> &lt;span style="color:#000">-y&lt;/span> &lt;span style="color:#000">nodejs&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">choco&lt;/span> &lt;span style="color:#000">install&lt;/span> &lt;span style="color:#000">-y&lt;/span> &lt;span style="color:#204a87">hugo-extended&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Once complete, in root of of the repository execute the following commands&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-powershell" data-lang="powershell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">git&lt;/span> &lt;span style="color:#000">submodule&lt;/span> &lt;span style="color:#000">update&lt;/span> &lt;span style="color:#000;font-weight:bold">-&lt;/span>&lt;span style="color:#000">-init&lt;/span> &lt;span style="color:#000;font-weight:bold">-&lt;/span>&lt;span style="color:#000">-recursive&lt;/span> &lt;span style="color:#000;font-weight:bold">-&lt;/span>&lt;span style="color:#000">-depth&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">npm&lt;/span> &lt;span style="color:#000">install&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,41 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns Templates</title><link>https://alguidelines.dev/docs/contributing/templates/</link><description>Recent content in Templates on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/docs/contributing/templates/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Title Here</title><link>https://alguidelines.dev/docs/contributing/templates/bestpractice/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/templates/bestpractice/</guid><description>
&lt;!-- This is a guideline, some parts are optional (if there's no content, remove the whole paragraph). -->
&lt;!-- The "Readability" and "Performance" tags are often used. You can, however, add multiple tags, but please do not change the Category -->
&lt;p>&lt;em>Created by &lt;!-- John Smith -->&lt;!--, Cronus International.--> Described by &lt;!-- Jane Doe-->&lt;!--, Contoso, LLC-->&lt;/em>&lt;/p>
&lt;h2 id="description">Description&lt;/h2>
&lt;p>In depth description on what this Pattern is all about&lt;/p>
&lt;ul>
&lt;li>basic components&lt;/li>
&lt;li>how the interact&lt;/li>
&lt;li>steps to implement&lt;/li>
&lt;li>considerations to take&lt;/li>
&lt;/ul>
&lt;h2 id="bad-code">Bad code&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-al" data-lang="al">&lt;span style="display:flex;">&lt;span>PutCodeblocksHere&lt;span style="color:#ce5c00;font-weight:bold">()
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="good-code">Good code&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-al" data-lang="al">&lt;span style="display:flex;">&lt;span>PutCodeblocksHere&lt;span style="color:#ce5c00;font-weight:bold">()
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Title Here</title><link>https://alguidelines.dev/docs/contributing/templates/patterns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/contributing/templates/patterns/</guid><description>
&lt;!-- This is a guideline, some parts are optional (if there's no content, remove the whole paragraph). -->
&lt;p>&lt;em>Created by &lt;!-- John Smith -->&lt;!--, Cronus International.--> Described by &lt;!-- Jane Doe-->&lt;!--, Contoso, LLC-->&lt;/em>&lt;/p>
&lt;h2 id="abstract">Abstract&lt;/h2>
&lt;p>Short, descriptive and easy to remember description of this pattern.&lt;/p>
&lt;h2 id="context">Context&lt;/h2>
&lt;p>Sets the stage where the pattern takes place. 1-2 sentences.&lt;/p>
&lt;h2 id="problem">Problem&lt;/h2>
&lt;p>What happens before this pattern is used? How can it go wrong? 1-5 lines.&lt;/p>
&lt;h2 id="description">Description&lt;/h2>
&lt;p>In depth description on what this Pattern is all about&lt;/p>
&lt;ul>
&lt;li>basic components&lt;/li>
&lt;li>how the interact&lt;/li>
&lt;li>steps to implement&lt;/li>
&lt;li>considerations to take&lt;/li>
&lt;/ul>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>If applicable: where is it used in an app. You can refer to any app, BaseApp, or a (public) ISV app.&lt;/p>
&lt;h2 id="benefits">Benefits&lt;/h2>
&lt;p>1-2 sentences: what did you just solve&lt;/p>
&lt;h2 id="when-not-to-use">When not to use&lt;/h2>
&lt;p>Usually, there are occasions where NOT to implement the pattern. List the disadvantages of this pattern here.&lt;/p>
&lt;h2 id="list-of-references">List of references&lt;/h2>
&lt;p>Youtube-link? BaseApp? Tweet? &amp;hellip;&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

20
docs/index.html Normal file

File diff suppressed because one or more lines are too long

3072
docs/index.xml Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,83 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns 2. Anti-Patterns</title><link>https://alguidelines.dev/docs/navpatterns/2-anti-patterns/</link><description>Recent content in 2. Anti-Patterns on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/docs/navpatterns/2-anti-patterns/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Nav Upgrade</title><link>https://alguidelines.dev/docs/navpatterns/2-anti-patterns/nav-upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/2-anti-patterns/nav-upgrade/</guid><description>
&lt;h2 id="anti-patterns-in-nav-upgrade">Anti-Patterns in NAV Upgrade&lt;/h2>
&lt;p>&lt;em>By Carlos Raul Garcia and Bogdana Botez at Microsoft Development Center Copenhagen&lt;/em>&lt;/p>
&lt;p>&lt;a href="upgrade.png">&lt;img src="upgrade.png" alt=" ">&lt;/a>&lt;/p>
&lt;p>&lt;strong>Context&lt;/strong>: when NAV is upgraded, whether on-premises or in the cloud, developers have the chance to write upgrade code to move data across changing data structures. Writing good quality code will help successful upgrades.&lt;/p>
&lt;h3 id="general-on-upgrade">General on upgrade&lt;/h3>
&lt;p>&lt;strong>Problem:&lt;/strong> assuming that the upgrade table contains data.&lt;/p>
&lt;p>If the table is empty, it means that either the upgrade has run, or there was no data in the original tenant; in both cases, the upgrade code should exit immediately.&lt;/p>
&lt;p>&lt;strong>Solution:&lt;/strong> if using an upgrade table, always validate that the table contains data before doing anything.&lt;/p>
&lt;h3 id="upgrade-code-can-it-be-rerun-safely">Upgrade code, can it be rerun safely?&lt;/h3>
&lt;p>&lt;strong>Problem&lt;/strong>: if the upgrade code is not written in a way that makes it runnable twice (&lt;a href="http://stackoverflow.com/questions/1077412/what-is-an-idempotent-operation#1077421">idempotent&lt;/a>), then several failures can happen, including something as critical as data corruption.&lt;/p>
&lt;p>In on premise NAV installations, if something fails at upgrade, there is no way to run only the &amp;ldquo;remaining&amp;rdquo; tasks. You will need to run the whole upgrade again, and might end-up with data that you cannot trust.&lt;/p>
&lt;p>What about the cloud? In Platform As A Service (PaaS), in some situations, the upgrade code needs to be run twice (for example, when moving tenants from a broken/frozen VM to a healthy one).&lt;/p>
&lt;p>&lt;strong>Solution:&lt;/strong> Make sure each of your upgrade procedures only kicks in if it didn&amp;rsquo;t run before.&lt;/p>
&lt;p>&lt;strong>Examples&lt;/strong>&lt;/p>
&lt;p>The examples below have happened in real live NAV PaaS upgrade:&lt;/p>
&lt;p>&lt;strong>Table data overwrite&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Problem&lt;/strong>: at upgrade, a new column has bee­n added to a table and initialized with default values. In the meanwhile, during production, some of the default values are changed to production real life values. The second time the upgrade runs, those values will be overwritten with defaults, any personalization lost.&lt;/li>
&lt;li>&lt;strong>Solution:&lt;/strong> before initializing with default values, check if non-default values exist.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Crash on math operations&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Problem:&lt;/strong> one tenant upgrade managed to divide by zero, by assuming a non-zero value.&lt;/li>
&lt;li>&lt;strong>Solution:&lt;/strong> don&amp;rsquo;t assume values can never be zero, always check before using them in divisions.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Use of external components&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Problem:&lt;/strong> a one-time registration through web services to an external service failed when attempting to register a second time.&lt;/li>
&lt;li>&lt;strong>Solution:&lt;/strong> check if already registered, before attempting again.&lt;/li>
&lt;/ul>
&lt;h3 id="parallelism">Parallelism&lt;/h3>
&lt;p>&lt;strong>Problem&lt;/strong>: Upgrade procedures can be run in parallel, causing issues when different procedures attempt to modify the same table at the same time.&lt;/p>
&lt;p>When modifications to the same table are being made from two or more different procedures, there is no guarantee on sequential run, or on a certain order they will be run in.&lt;/p>
&lt;p>&lt;strong>Solution&lt;/strong>: if sequential or ordered execution is needed, make the affected upgrade procedures local and call them all, in the desired sequence, from a public upgrade procedure.&lt;/p>
&lt;h3 id="access-to-cloud-machines">Access to cloud machines&lt;/h3>
&lt;p>&lt;strong>Problem:&lt;/strong> dependencies on manual installation steps do not fit in the cloud.&lt;/p>
&lt;p>If Dynamics NAV is installed on-premises, then any additional setup (like dependencies of external dlls, manual configuration steps etc.) can be done manually or semi-manually by the IT admin, at first setup and upgrade.&lt;/p>
&lt;p>In the cloud, NAV partners don&amp;rsquo;t have access to the machines &amp;ndash; hence they cannot deploy and configure those external dependencies as they did in the old on-premises installations.&lt;/p>
&lt;p>&lt;strong>Solution:&lt;/strong> Don&amp;rsquo;t assume you will have access to PaaS or SaaS machines. Build your solution in such a way that it doesn&amp;rsquo;t depend on executing manual configurations on the host machine.&lt;/p></description></item><item><title>Docs: Reusable Bugs</title><link>https://alguidelines.dev/docs/navpatterns/2-anti-patterns/reusable-bugs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/2-anti-patterns/reusable-bugs/</guid><description>
&lt;p>&lt;em>By Bogdana Botez, Andreas Moth, Eric Wauters (waldo), Elly Nkya, Nikola Kukrika&lt;/em>&lt;/p>
&lt;p>&lt;em>April 1st, 2015&lt;/em>&lt;/p>
&lt;h2 id="abstract">Abstract&lt;/h2>
&lt;p>It is difficult to come up with new and different bugs in each release, and it is a waste of resources to not use the ones which already had proven successful in the past. To avoid reinventing the wheel, we propose to come up with new innovative ways to create bugs that are reusable and generic enough to be used in various places of the application.&lt;/p>
&lt;h2 id="examples">Examples&lt;/h2>
&lt;p>&lt;strong>Option Strings&lt;/strong>&lt;/p>
&lt;p>One example of a reusable bug is to find a heavily used table, like table 36 Sales Header, and observe one of the more important fields of type Option, for example Document Type. The OptionString property has the following value: Quote,Order,Invoice,Credit Memo,Blanket Order,Return Order, which you should update to add one option, for example Transport Order in the beginning.&lt;/p>
&lt;p>The main benefit of this reusable bug is that code changed in one place, has impact in multiple sides on the application: document creation and handling, posting etc.&lt;/p>
&lt;p>&lt;strong>Application Management&lt;/strong>&lt;/p>
&lt;p>Codeunit 1, ApplicationManagement is a good place for creating reusable bugs. A simple INSERT on the RecRef on the first line of OnDatabaseInsert will create a sure and versatile bug that is reusable all over the application. Redundancy on database insertion ensures that data is surely conveyed to the data storage layer, twice.&lt;/p>
&lt;p>&lt;strong>God objects&lt;/strong>&lt;/p>
&lt;p>We are considering to no longer make localization builds for countries. It consumes lab resources to keep running multiple country builds. Instead, we will merge everything into one single build. This is a bigger scale implementation of the &lt;a href="http://en.wikipedia.org/wiki/God_object">&amp;ldquo;God object&amp;rdquo;&lt;/a>. Inside this unique build, we will use IF statements and sporadically CASE statements to select each country&amp;rsquo;s behavior. For more help on how to use IFs, see also the IF .. THEN|ELSE C/AL Coding Guideline.&lt;/p>
&lt;p>&lt;strong>Field length economy&lt;/strong>&lt;/p>
&lt;p>When you post a document, make sure to transfer data to a field that is smaller than the field you are assigning from. This will not immediately be caught and will only hurt a subset of the customers who uses Microsoft Dynamics NAV to its fullest.&lt;/p>
&lt;h2 id="guidelines">Guidelines&lt;/h2>
&lt;p>When bug addition is not entirely obvious, there is a second way to approach the problem. By following some general coding best practices like the ones described below, reliable bug innovation is facilitated and can come naturally as a collateral effect.&lt;/p>
&lt;p>&lt;strong>Code structure&lt;/strong>&lt;/p>
&lt;p>Put everything in one function and only use comments to explain the structure of your code. And don&amp;rsquo;t use functions - because this only complicates things&amp;hellip; having to navigate from function to function, and completely lose track of where you are in the business logic.&lt;/p>
&lt;p>On top of that .. put everything in one codeunit. Because also that will simplify and make your structure more readable.&lt;/p>
&lt;p>Use Hungarian Notation on your variables, because at any time, you need to know what type, and what context your variable is on.&lt;/p>
&lt;p>Declare all your functions and variables global, so they are available at any time.&lt;/p>
&lt;p>&lt;strong>Don&amp;rsquo;t do Unit Testing&lt;/strong>&lt;/p>
&lt;p>Unit testing adds complexity and extra time to the stuff you&amp;rsquo;re doing. Also, it eats up extra codeunits which means: it costs money. You will never be able to foresee all scenarios possible, so you&amp;rsquo;re destined to forget and not test everything. So you will save time in not doing unit testing.&lt;/p>
&lt;p>&lt;strong>Never add images to actions&lt;/strong>&lt;/p>
&lt;p>Because there is an image by default. When you don&amp;rsquo;t provide an image on an action on a page, the application will foresee a ball&amp;hellip; and when you never do it, your application will have a very consistent way of showing your actions, by providing that picture of that ball. On top of that, you&amp;rsquo;ll save time.&lt;/p>
&lt;p>&lt;strong>Do not care about ControlIDs&lt;/strong>&lt;/p>
&lt;p>When you&amp;rsquo;re doing development of your product, do not care about ControlIDs, and just leave the Offset ID to the default value of 0. This way, when merging, you will receive nice notifications, saying both you and Microsoft have added functions in that objects. You can use this feature to document all these places.&lt;/p>
&lt;p>&lt;strong>Hooks&lt;/strong>&lt;/p>
&lt;p>Never apply the hook pattern. Hooks will only reduce upgrade time. This means, you will only shortly enjoy using the AMU (Application Merge Utilities). The more you change in default application, the longer it takes to upgrade, the longer you will enjoy the toolkit&lt;/p>
&lt;p>This can be taken one level higher. Simply you are not hardcore if you do not use notepad to resolve all of the merge issues.&lt;/p>
&lt;p>&lt;strong>How to use RecRef&lt;/strong>&lt;/p>
&lt;p>Why fuss around declaring specific table variables, just generalize, all you need is one, two, or perhaps three RecRef variables, with a few IFs and CASEs here and there for reflection, to carry you all the way.&lt;/p>
&lt;p>&lt;strong>Arguments&lt;/strong>&lt;/p>
&lt;p>Using only a few arguments on the functions is a sign of a weak developer. Stick in as many arguments as possible on the function, even if you are not using them, they could be useful in the future.&lt;/p>
&lt;p>&lt;strong>Just another field / action&lt;/strong>&lt;/p>
&lt;p>Thinking of the design is overrated, each problem can be solved by adding an additional field or the table/page or with adding another action. We all know this has worked well in the past.&lt;/p>
&lt;p>&lt;strong>Reusability&lt;/strong>&lt;/p>
&lt;p>We have decided that each time we fix a bug, we now also explain how it can be applied as a pattern. We then use anti-virus software to search for these patterns, to make sure we do not re-introduce these bugs anywhere else in NAV.&lt;/p>
&lt;p>&lt;strong>Business logic placement&lt;/strong>&lt;/p>
&lt;p>As a best practice, we have also decided to move code into pages. Business logic should no longer be in tables and codeunits, but instead pages should know and be aware of the context and update it accordingly. As opposite to tables and codeunits, pages are aware of the context.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Happy April Fools&amp;rsquo; Day.&lt;/p>
&lt;p>Disclaimer: this is inspired from IETF documentation published on April 1st, like for example the revolutionizing &lt;a href="http://en.wikipedia.org/wiki/IP_over_Avian_Carriers">IP over Avian Carriers&lt;/a> standard.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,316 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>alguidelines.dev - Business Central Design Patterns Design</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/</link><description>Recent content in Design on alguidelines.dev - Business Central Design Patterns</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: By Reference Parameters</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/by-reference-parameters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/by-reference-parameters/</guid><description>
&lt;p>Do not declare parameters by reference if their values are not intended to be changed.&lt;/p>
&lt;p>Unintentional value changes might propagate. Also, it might lead people to believe that value changes are intended.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>LOCAL PROCEDURE ShowMessage@15(VAR Text@1000 : Text[250]);
BEGIN
Text := GetMessageText;
IF (Text &amp;lt;&amp;gt; '') AND GenJnlLineInserted THEN
MESSAGE(Text);
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>LOCAL PROCEDURE ShowMessage@15(Text@1000 : Text[250]);
BEGIN
Text := GetMessageText;
IF (Text &amp;lt;&amp;gt; '') AND GenJnlLineInserted THEN
MESSAGE(Text);
END;
&lt;/code>&lt;/pre></description></item><item><title>Docs: Class Coupling</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/class-coupling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/class-coupling/</guid><description>
&lt;p>Do not write functions that have high class coupling. This makes the code hard to maintain.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that has class coupling of &amp;gt; 30
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that has class coupling of &amp;lt;= 30\.
Class coupling is computed by summing the unique instances of the following in a code block:
- every unique usage of a complex C/AL data type (table, codeunit, etc) as 1\.
- every unique usage of a DotNet type as 1\.
&lt;/code>&lt;/pre></description></item><item><title>Docs: Cyclomatic Complexity</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/cyclomatic-complexity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/cyclomatic-complexity/</guid><description>
&lt;p>Do not write functions that have high cyclomatic complexity. This makes the code hard to maintain.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that has a cyclomatic complexity &amp;gt; 25, using the CC3 version mentioned in [this article][anchor0].
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that has a cyclomatic complexity &amp;lt;= 25, using the CC3 version.
The CC3 version is computed by summing the following in a code block:
- each IF statement as 1\.
- each entire CASE as 1\.
&lt;/code>&lt;/pre></description></item><item><title>Docs: Encapsulate Local Functionality</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/encapsulate-local-functionality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/encapsulate-local-functionality/</guid><description>
&lt;p>Any function used local must be defined as local.&lt;/p></description></item><item><title>Docs: FINDSET FINDFIRST FINDLAST</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/findset-findfirst-findlast/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/findset-findfirst-findlast/</guid><description>
&lt;p>FINDSET, FIND(&amp;rsquo;+&amp;rsquo;) or FIND(&amp;rsquo;-&amp;rsquo;) should only be used when NEXT is used and vice versa.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>IF Cust.FIND('-') THEN
ERROR(CustIsBlockErr)
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>IF Cust.FINDFIRST THEN
ERROR(CustIsBlockErr)
&lt;/code>&lt;/pre>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>IF Cust.FINDFIRST THEN
REPEAT
...
UNTIL Cust.NEXT = 0;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>IF Cust.FINDSET THEN
REPEAT
...
UNTIL Cust.NEXT = 0;
&lt;/code>&lt;/pre></description></item><item><title>Docs: Initialized Variables</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/initialized-variables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/initialized-variables/</guid><description>
&lt;p>Variables should always be set to a specific value, before they are used.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>PROCEDURE SetPurchLine@22(VAR CurrentPurchLine@1000 : Record 39);
VAR
Pegging@1001 : Boolean;
BEGIN
IF Pegging THEN
CurrQuantity := CurrentPurchLine.&amp;quot;Quantity (Base)&amp;quot;
ELSE
CurrQuantity := CurrentPurchLine.&amp;quot;Outstanding Qty. (Base)&amp;quot;;
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>PROCEDURE SetPurchLine@22(VAR CurrentPurchLine@1000 : Record 39);
VAR
Pegging@1001 : Boolean;
BEGIN
Pegging := IsPegging(CurrentPurchLine);
IF Pegging THEN
CurrQuantity := CurrentPurchLine.&amp;quot;Quantity (Base)&amp;quot;
ELSE
CurrQuantity := CurrentPurchLine.&amp;quot;Outstanding Qty. (Base)&amp;quot;;
END;
&lt;/code>&lt;/pre>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>// In the example below, the function will always return FALSE.
PROCEDURE GetItemsToPlan@22() : Boolean;
BEGIN
SETRANGE(&amp;quot;Document Type&amp;quot;,&amp;quot;Document Type&amp;quot;::Order);
...
FINDSET
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>PROCEDURE GetItemsToPlan@22() : Boolean;
BEGIN
SETRANGE(&amp;quot;Document Type&amp;quot;,&amp;quot;Document Type&amp;quot;::Order);
...
EXIT(FINDSET)
END;
&lt;/code>&lt;/pre></description></item><item><title>Docs: Maintainability Index</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/maintainability-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/maintainability-index/</guid><description>
&lt;p>&lt;a href="http://blogs.msdn.com/b/codeanalysis/archive/2007/11/20/maintainability-index-range-and-meaning.aspx">Maintainability Index&lt;/a>: Do not write functions that have a very low maintainability index. This makes the code hard to maintain.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that has a maintainability index &amp;lt; 20
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that has a maintainability index &amp;gt;= 20\.
The Maintainability Index is computed as a function:
- Lines Of Code (inverse proportional)
- the Halstead Volume
- Cyclomatic Complexity (inverse proportional).
&lt;/code>&lt;/pre>
&lt;p>More info&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://en.wikipedia.org/wiki/Halstead_complexity_measures">Halstead Volume&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.aivosto.com/project/help/pm-complexity.html">Cyclomatic Complexity&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that is &amp;gt; 100 lines of code
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>Any procedure / trigger that is &amp;lt;= 100 lines of code.
A full C/AL Statement counts as 1 line of code
&lt;/code>&lt;/pre></description></item><item><title>Docs: Parameter Placeholders</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/parameter-placeholders/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/parameter-placeholders/</guid><description>
&lt;p>The number of parameters passed to a string must match the placeholders.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>CannotDeleteLineErr@1005 : TextConst 'ENU=You cannot delete this line because one or more rating values exists.';
...
ERROR(CannotDeleteLineErr,TABLECAPTION);
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>CannotDeleteLineErr@1005 : TextConst 'ENU=You cannot delete this line because one or more rating values exists.';
...
ERROR(CannotDeleteLineErr);
&lt;/code>&lt;/pre>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>CannotUseThisFieldErr@1020 : TextConst 'ENU=You cannot use this field for %2 fields.';
...
ERROR(CannotUseThisFieldErr,0,Field.Class);
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>CannotUseThisFieldErr@1020 : TextConst 'ENU=You cannot use this field for %1 fields.';
...
ERROR(CannotUseThisFieldErr,Field.Class);
&lt;/code>&lt;/pre>
&lt;h3 id="heading">&lt;/h3></description></item><item><title>Docs: Static Object Invocation</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/static-object-invocation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/static-object-invocation/</guid><description>
&lt;p>Call objects statically whenever possible. It reduces extra noise and removes extra variables. Downside: changing the name of the object which is called statically will need a code update.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>LOCAL PROCEDURE Code@1();
VAR
CAJnlPostBatch@1001 : Codeunit 1103;
BEGIN
CAJnlPostBatch.Run(CostJnlLine);
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>LOCAL PROCEDURE Code@1();
BEGIN
CODEUNIT.RUN(CODEUNIT::&amp;quot;CA Jnl.-Post Batch&amp;quot;,CostJnlLine);
END;
&lt;/code>&lt;/pre></description></item><item><title>Docs: Unreachable Code</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/unreachable-code/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/unreachable-code/</guid><description>
&lt;p>Do not write code that will never be hit.&lt;/p>
&lt;p>It affects code readability and can lead to wrong assumptions.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>IF Type &amp;lt;&amp;gt; Type::FIELD THEN BEGIN
...
ERROR(...);
RecRef.CLOSE;
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>IF Type &amp;lt;&amp;gt; Type::FIELD THEN BEGIN
...
RecRef.CLOSE;
ERROR(...);
END;
&lt;/code>&lt;/pre></description></item><item><title>Docs: Unused Initialized Variables</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/unused-initialized-variables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/unused-initialized-variables/</guid><description>
&lt;p>The value assigned to a variable must be used. Else the variable is not necessary.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>PROCEDURE AddEntities@1(FilterStr@1000 : Text[250]);
VAR
Vendor@1001 : Record 23;
Count@1002 : Integer;
BEGIN
Count := 0;
Vendor.SETFILTER(&amp;quot;No.&amp;quot;,FilterStr);
IF Vendor.FINDSET THEN
REPEAT
&amp;quot;User ID&amp;quot; := USERID;
&amp;quot;Vendor No.&amp;quot; := Vendor.&amp;quot;No.&amp;quot;;
IF INSERT THEN
Count += 1;
UNTIL Vendor.NEXT = 0;
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>PROCEDURE AddEntities@1(FilterStr@1000 : Text[250]);
VAR
Vendor@1001 : Record 23;
BEGIN
Vendor.SETFILTER(&amp;quot;No.&amp;quot;,FilterStr);
IF Vendor.FINDSET THEN
REPEAT
&amp;quot;User ID&amp;quot; := USERID;
&amp;quot;Vendor No.&amp;quot; := Vendor.&amp;quot;No.&amp;quot;;
IF INSERT THEN;
UNTIL Vendor.NEXT = 0;
END;
&lt;/code>&lt;/pre></description></item><item><title>Docs: Unused Variables</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/unused-variables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/unused-variables/</guid><description>
&lt;p>Do not declare variables that are unused.&lt;/p>
&lt;p>Unused variables affect readability.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>PROCEDURE CheckPostingDate@23(CaptionEntryNo@1005 : Text[50]);
BEGIN
IF GenJnlCheckLine.DateNotAllowed(PostingDate) THEN
ERROR(DateNotAllowedErr,Caption,EntryNo)
IF PostingDate &amp;gt; MaxPostingDate THEN
MaxPostingDate := PostingDate;
END
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>PROCEDURE CheckPostingDate@23();
BEGIN
IF GenJnlCheckLine.DateNotAllowed(PostingDate) THEN
ERROR(DateNotAllowedErr,Caption,EntryNo);
IF PostingDate &amp;gt; MaxPostingDate THEN
MaxPostingDate := PostingDate;
END;
&lt;/code>&lt;/pre>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>PROCEDURE IsReturned@14(EntryNo@1002 : Integer) : Decimal;
VAR
ItemEntry@1000 : Record 32;
Quantity@1003 : Integer;
BEGIN
EXIT(-OutboundApplied(EntryNo,TRUE) - InboundApplied(EntryNo,TRUE));
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>PROCEDURE IsReturned@14(EntryNo@1002 : Integer) : Decimal;
BEGIN
EXIT(-OutboundApplied(EntryNo,TRUE) - InboundApplied(EntryNo,TRUE));
END;
&lt;/code>&lt;/pre></description></item><item><title>Docs: Variable Capacity Mismatch</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/variable-capacity-mismatch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/variable-capacity-mismatch/</guid><description>
&lt;p>Do not assign a value to a variable whose capacity is smaller.&lt;/p>
&lt;p>It will throw an error at runtime.&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>FileName@1010 : Text[250];
...
UploadedFileName@1016 : Text[1024];
...
FileName := UploadedFileName;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>FileName@1010 : Text[1024];
...
UploadedFileName@1016 : Text[1024];
...
FileName := UploadedFileName;
&lt;/code>&lt;/pre>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>FileName@1010 : Text[250];
...
UploadedFileName@1016 : Text[1024];
...
FileName := UploadedFileName;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>FileName@1010 : Text[250];
...
UploadedFileName@1016 : Text[1024];
...
FileName := COPYSTR(UploadedFileName,1,250); // In case only the first 250 chars are needed. Similar for fields
&lt;/code>&lt;/pre>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>VAR
ExceededNumberTxt@001 : 'ENU=Warning: Exceeded number of unsent documents/requests'
Subject@1002 : Text[50];
...
BEGIN
...
Subject := ExceededNumberTxt;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>VAR
ExceededNumberTxt@001 : 'ENU=Warning: Exceeded number of unsent documents/requests'
Subject@1002 : Text[100];
...
BEGIN
...
Subject := ExceededNumberTxt';
&lt;/code>&lt;/pre></description></item><item><title>Docs: WITH Scope Name Collision</title><link>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/with-scope-name-collision/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alguidelines.dev/docs/navpatterns/3-cal-coding-guidelines/design/with-scope-name-collision/</guid><description>
&lt;p>Do not use the WITH scope when it has a variable whose name is the same as a local variable. This can lead to wrong code assumptions.&lt;/p>
&lt;p>&lt;strong>Given that&lt;/strong> &lt;br>
&amp;ldquo;Contract Type&amp;rdquo; is a field on table ServiceContractHeader, then in the following example there is a parameter name clash with the field name. Which one will be used?&lt;/p>
&lt;p>Bad code&lt;/p>
&lt;pre>&lt;code>PROCEDURE InsertData@1(&amp;quot;Contract Type&amp;quot;@1000 : Option...);
...
BEGIN
...
WITH ServiceContractHeader DO BEGIN
...
DimMgt.InsertServContractDim(...,&amp;quot;Contract Type&amp;quot;,&amp;quot;Contract No.&amp;quot;,0,...);
END;
&lt;/code>&lt;/pre>
&lt;p>Good code&lt;/p>
&lt;pre>&lt;code>PROCEDURE InsertData@1(ContractType@1000 : Option...);
...
BEGIN
...
WITH ServiceContractHeader DO BEGIN
...
DimMgt.InsertServContractDim(...,ContractType,&amp;quot;Contract No.&amp;quot;,0,...);
END;
&lt;/code>&lt;/pre></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more