bc-code-intelligence-mcp 1.3.3 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/test-enhanced-layer-service.js +10 -10
- package/dist/config/test-enhanced-layer-service.js.map +1 -1
- package/dist/dev/hot-reload.d.ts +2 -2
- package/dist/dev/hot-reload.d.ts.map +1 -1
- package/dist/dev/hot-reload.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -38
- package/dist/index.js.map +1 -1
- package/dist/layers/index.d.ts +1 -1
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/layers/index.js +1 -1
- package/dist/layers/index.js.map +1 -1
- package/dist/services/code-analysis-service.d.ts.map +1 -1
- package/dist/services/code-analysis-service.js +4 -0
- package/dist/services/code-analysis-service.js.map +1 -1
- package/dist/services/knowledge-service.d.ts +21 -10
- package/dist/services/knowledge-service.d.ts.map +1 -1
- package/dist/services/knowledge-service.js +71 -54
- package/dist/services/knowledge-service.js.map +1 -1
- package/dist/services/multi-content-layer-service.d.ts +90 -0
- package/dist/services/multi-content-layer-service.d.ts.map +1 -1
- package/dist/services/multi-content-layer-service.js +380 -0
- package/dist/services/multi-content-layer-service.js.map +1 -1
- package/dist/services/workflow-service.d.ts +11 -3
- package/dist/services/workflow-service.d.ts.map +1 -1
- package/dist/services/workflow-service.js +119 -78
- package/dist/services/workflow-service.js.map +1 -1
- package/dist/streamlined-handlers.d.ts +31 -2
- package/dist/streamlined-handlers.d.ts.map +1 -1
- package/dist/streamlined-handlers.js +151 -109
- package/dist/streamlined-handlers.js.map +1 -1
- package/dist/streamlined-tools.d.ts +12 -0
- package/dist/streamlined-tools.d.ts.map +1 -1
- package/dist/streamlined-tools.js +11 -6
- package/dist/streamlined-tools.js.map +1 -1
- package/package.json +13 -4
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
- package/embedded-knowledge/AGENTS.md +0 -178
- package/embedded-knowledge/CONTRIBUTING.md +0 -58
- package/embedded-knowledge/LICENSE +0 -21
- package/embedded-knowledge/README.md +0 -32
- package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
- package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
- package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
- package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
- package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
- package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
- package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
- package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
- package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
- package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
- package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
- package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
- package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
- package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
- package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
- package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
- package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -360
- package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
- package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
- package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
- package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
- package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
- package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
- package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
- package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
- package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
- package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
- package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
- package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
- package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
- package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
- package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
- package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
- package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
- package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
- package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
- package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
- package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
- package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
- package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
- package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
- package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
- package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
- package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
- package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
- package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
- package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
- package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
- package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
- package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
- package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
- package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
- package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
- package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
- package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
- package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
- package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
- package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
- package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
- package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
- package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
- package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
- package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
- package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
- package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
- package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
- package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
- package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
- package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
- package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
- package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
- package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
- package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
- package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
- package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
- package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
- package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
- package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
- package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
- package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
- package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
- package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
- package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
- package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
- package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
- package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
- package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
- package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
- package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
- package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
- package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
- package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
- package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
- package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
- package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
- package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
- package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
- package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
- package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
- package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
- package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
- package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
- package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
- package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
- package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
- package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
- package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
- package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
- package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
- package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
- package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
- package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
- package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
- package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
- package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
- package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
- package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
- package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
- package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
- package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
- package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
- package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
- package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
- package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
- package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
- package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
- package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
- package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
- package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
- package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
- package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
- package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
- package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
- package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
- package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
- package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
- package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
- package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
- package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
- package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
- package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
- package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
- package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
- package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
- package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
- package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
- package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
- package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
- package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
- package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
- package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
- package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
- package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
- package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
- package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
- package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
- package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
- package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
- package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
- package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
- package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
- package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
- package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
- package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
- package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
- package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +0 -146
- package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
- package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
- package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
- package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
- package/embedded-knowledge/indexes/domain-catalog.json +0 -106
- package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
- package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
- package/embedded-knowledge/indexes/tags/access-control.json +0 -1
- package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
- package/embedded-knowledge/indexes/tags/actions.json +0 -1
- package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/advanced.json +0 -1
- package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
- package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
- package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
- package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
- package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
- package/embedded-knowledge/indexes/tags/analytics.json +0 -1
- package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
- package/embedded-knowledge/indexes/tags/api-design.json +0 -1
- package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
- package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
- package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
- package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
- package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
- package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
- package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
- package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
- package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
- package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
- package/embedded-knowledge/indexes/tags/api.json +0 -1
- package/embedded-knowledge/indexes/tags/architecture.json +0 -1
- package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
- package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
- package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
- package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
- package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
- package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
- package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
- package/embedded-knowledge/indexes/tags/binding.json +0 -1
- package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/blocks.json +0 -1
- package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
- package/embedded-knowledge/indexes/tags/branching.json +0 -1
- package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
- package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
- package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
- package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
- package/embedded-knowledge/indexes/tags/business-process.json +0 -1
- package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
- package/embedded-knowledge/indexes/tags/caching.json +0 -1
- package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/case.json +0 -1
- package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
- package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
- package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
- package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
- package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
- package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
- package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
- package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
- package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
- package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
- package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/code-style.json +0 -1
- package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
- package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
- package/embedded-knowledge/indexes/tags/comments.json +0 -1
- package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
- package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
- package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
- package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
- package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
- package/embedded-knowledge/indexes/tags/conditional.json +0 -1
- package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
- package/embedded-knowledge/indexes/tags/consistency.json +0 -1
- package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
- package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
- package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
- package/embedded-knowledge/indexes/tags/correlation.json +0 -1
- package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
- package/embedded-knowledge/indexes/tags/data-access.json +0 -1
- package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
- package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
- package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
- package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
- package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
- package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
- package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/database.json +0 -1
- package/embedded-knowledge/indexes/tags/debugging.json +0 -1
- package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
- package/embedded-knowledge/indexes/tags/declaration.json +0 -1
- package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
- package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
- package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
- package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
- package/embedded-knowledge/indexes/tags/deployment.json +0 -1
- package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
- package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
- package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
- package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
- package/embedded-knowledge/indexes/tags/documentation.json +0 -1
- package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
- package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
- package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
- package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
- package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
- package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
- package/embedded-knowledge/indexes/tags/error-text.json +0 -1
- package/embedded-knowledge/indexes/tags/etag.json +0 -1
- package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
- package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
- package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
- package/embedded-knowledge/indexes/tags/events.json +0 -1
- package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
- package/embedded-knowledge/indexes/tags/expressions.json +0 -1
- package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
- package/embedded-knowledge/indexes/tags/extensions.json +0 -1
- package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
- package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
- package/embedded-knowledge/indexes/tags/field-control.json +0 -1
- package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
- package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
- package/embedded-knowledge/indexes/tags/field-state.json +0 -1
- package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
- package/embedded-knowledge/indexes/tags/fields.json +0 -1
- package/embedded-knowledge/indexes/tags/filtering.json +0 -1
- package/embedded-knowledge/indexes/tags/filters.json +0 -1
- package/embedded-knowledge/indexes/tags/formatting.json +0 -1
- package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
- package/embedded-knowledge/indexes/tags/http-status.json +0 -1
- package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/implementation.json +0 -1
- package/embedded-knowledge/indexes/tags/indentation.json +0 -1
- package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
- package/embedded-knowledge/indexes/tags/indexing.json +0 -1
- package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
- package/embedded-knowledge/indexes/tags/integration.json +0 -1
- package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
- package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
- package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
- package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
- package/embedded-knowledge/indexes/tags/isolation.json +0 -1
- package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
- package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
- package/embedded-knowledge/indexes/tags/keywords.json +0 -1
- package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
- package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
- package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
- package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
- package/embedded-knowledge/indexes/tags/localization.json +0 -1
- package/embedded-knowledge/indexes/tags/logging.json +0 -1
- package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
- package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
- package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
- package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/memory.json +0 -1
- package/embedded-knowledge/indexes/tags/message-design.json +0 -1
- package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
- package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
- package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
- package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
- package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
- package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
- package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
- package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
- package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
- package/embedded-knowledge/indexes/tags/naming.json +0 -1
- package/embedded-knowledge/indexes/tags/navigation.json +0 -1
- package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
- package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
- package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
- package/embedded-knowledge/indexes/tags/no-series.json +0 -1
- package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
- package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
- package/embedded-knowledge/indexes/tags/odata.json +0 -1
- package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
- package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
- package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
- package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
- package/embedded-knowledge/indexes/tags/operators.json +0 -1
- package/embedded-knowledge/indexes/tags/optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/order.json +0 -1
- package/embedded-knowledge/indexes/tags/organization.json +0 -1
- package/embedded-knowledge/indexes/tags/pages.json +0 -1
- package/embedded-knowledge/indexes/tags/parameters.json +0 -1
- package/embedded-knowledge/indexes/tags/patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/performance.json +0 -1
- package/embedded-knowledge/indexes/tags/placement.json +0 -1
- package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
- package/embedded-knowledge/indexes/tags/posting.json +0 -1
- package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
- package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
- package/embedded-knowledge/indexes/tags/privacy.json +0 -1
- package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
- package/embedded-knowledge/indexes/tags/production.json +0 -1
- package/embedded-knowledge/indexes/tags/productivity.json +0 -1
- package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
- package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
- package/embedded-knowledge/indexes/tags/ranges.json +0 -1
- package/embedded-knowledge/indexes/tags/readability.json +0 -1
- package/embedded-knowledge/indexes/tags/record-access.json +0 -1
- package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
- package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
- package/embedded-knowledge/indexes/tags/reference.json +0 -1
- package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
- package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
- package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
- package/embedded-knowledge/indexes/tags/runtime.json +0 -1
- package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
- package/embedded-knowledge/indexes/tags/security.json +0 -1
- package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
- package/embedded-knowledge/indexes/tags/serialization.json +0 -1
- package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
- package/embedded-knowledge/indexes/tags/session.json +0 -1
- package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
- package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
- package/embedded-knowledge/indexes/tags/sift.json +0 -1
- package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
- package/embedded-knowledge/indexes/tags/spacing.json +0 -1
- package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
- package/embedded-knowledge/indexes/tags/standards.json +0 -1
- package/embedded-knowledge/indexes/tags/statements.json +0 -1
- package/embedded-knowledge/indexes/tags/streaming.json +0 -1
- package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
- package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
- package/embedded-knowledge/indexes/tags/structure.json +0 -1
- package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
- package/embedded-knowledge/indexes/tags/switch.json +0 -1
- package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
- package/embedded-knowledge/indexes/tags/syntax.json +0 -1
- package/embedded-knowledge/indexes/tags/systemid.json +0 -1
- package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
- package/embedded-knowledge/indexes/tags/table-events.json +0 -1
- package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
- package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
- package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
- package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
- package/embedded-knowledge/indexes/tags/template-method.json +0 -1
- package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
- package/embedded-knowledge/indexes/tags/testfield.json +0 -1
- package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
- package/embedded-knowledge/indexes/tags/triggers.json +0 -1
- package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
- package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
- package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
- package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
- package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
- package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
- package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
- package/embedded-knowledge/indexes/tags/validation.json +0 -1
- package/embedded-knowledge/indexes/tags/variables.json +0 -1
- package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
- package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
- package/embedded-knowledge/indexes/tags/web-services.json +0 -1
- package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
- package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
- package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
- package/embedded-knowledge/indexes/tags/workspace.json +0 -1
- package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
- package/embedded-knowledge/indexes/topic-relationships.json +0 -128
- package/embedded-knowledge/methodologies/index.json +0 -81
- package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
- package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
- package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
- package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
- package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
- package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
- package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
- package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
- package/embedded-knowledge/methodologies/phases/performance.md +0 -211
- package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
- package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
- package/embedded-knowledge/methodologies/phases/verification.md +0 -146
- package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
- package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
- package/embedded-knowledge/specialists/alex-architect.md +0 -216
- package/embedded-knowledge/specialists/casey-copilot.md +0 -226
- package/embedded-knowledge/specialists/chris-config.md +0 -267
- package/embedded-knowledge/specialists/dean-debug.md +0 -222
- package/embedded-knowledge/specialists/eva-errors.md +0 -235
- package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
- package/embedded-knowledge/specialists/logan-legacy.md +0 -209
- package/embedded-knowledge/specialists/maya-mentor.md +0 -211
- package/embedded-knowledge/specialists/morgan-market.md +0 -226
- package/embedded-knowledge/specialists/quinn-tester.md +0 -235
- package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
- package/embedded-knowledge/specialists/sam-coder.md +0 -359
- package/embedded-knowledge/specialists/seth-security.md +0 -235
- package/embedded-knowledge/specialists/taylor-docs.md +0 -257
- package/embedded-knowledge/specialists/uma-ux.md +0 -235
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
# Variable Declaration Order - AL Code Examples
|
|
2
|
-
|
|
3
|
-
## Good Examples
|
|
4
|
-
|
|
5
|
-
### Logical Variable Declaration Order
|
|
6
|
-
```al
|
|
7
|
-
procedure ProcessSalesOrder(DocumentNo: Code[20]): Boolean
|
|
8
|
-
var
|
|
9
|
-
// 1. Input validation and lookup records (in order of dependency)
|
|
10
|
-
SalesHeader: Record "Sales Header";
|
|
11
|
-
Customer: Record Customer;
|
|
12
|
-
|
|
13
|
-
// 2. Processing records (in order of usage)
|
|
14
|
-
SalesLine: Record "Sales Line";
|
|
15
|
-
Item: Record Item;
|
|
16
|
-
|
|
17
|
-
// 3. Temporary and working records
|
|
18
|
-
TempBuffer: Record "Integer" temporary;
|
|
19
|
-
|
|
20
|
-
// 4. Processing variables (grouped by type and purpose)
|
|
21
|
-
ProcessingDate: Date;
|
|
22
|
-
TotalAmount: Decimal;
|
|
23
|
-
LineCount: Integer;
|
|
24
|
-
i: Integer;
|
|
25
|
-
|
|
26
|
-
// 5. Status and result variables
|
|
27
|
-
IsProcessed: Boolean;
|
|
28
|
-
HasErrors: Boolean;
|
|
29
|
-
|
|
30
|
-
// 6. Error handling and messages (last)
|
|
31
|
-
ErrorMessage: Text;
|
|
32
|
-
begin
|
|
33
|
-
// Clear variable relationships and data flow
|
|
34
|
-
// Easy to understand processing sequence
|
|
35
|
-
end;
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Complex Business Logic Organization
|
|
39
|
-
```al
|
|
40
|
-
procedure CalculateCustomerProfitability(CustomerNo: Code[20]; DateFilter: Text): Decimal
|
|
41
|
-
var
|
|
42
|
-
// === PRIMARY ENTITY RECORDS ===
|
|
43
|
-
Customer: Record Customer;
|
|
44
|
-
|
|
45
|
-
// === FINANCIAL TRANSACTION RECORDS (in chronological dependency order) ===
|
|
46
|
-
CustLedgerEntry: Record "Cust. Ledger Entry";
|
|
47
|
-
DetailedCustLedgEntry: Record "Detailed Cust. Ledg. Entry";
|
|
48
|
-
|
|
49
|
-
// === RELATED BUSINESS RECORDS ===
|
|
50
|
-
SalesInvoiceHeader: Record "Sales Invoice Header";
|
|
51
|
-
SalesInvoiceLine: Record "Sales Invoice Line";
|
|
52
|
-
|
|
53
|
-
// === TEMPORARY CALCULATION RECORDS ===
|
|
54
|
-
TempProfitabilityBuffer: Record "Integer" temporary;
|
|
55
|
-
|
|
56
|
-
// === DATE AND PERIOD VARIABLES ===
|
|
57
|
-
StartDate: Date;
|
|
58
|
-
EndDate: Date;
|
|
59
|
-
|
|
60
|
-
// === FINANCIAL CALCULATION VARIABLES (grouped by calculation type) ===
|
|
61
|
-
// Revenue calculations
|
|
62
|
-
TotalRevenue: Decimal;
|
|
63
|
-
GrossRevenue: Decimal;
|
|
64
|
-
NetRevenue: Decimal;
|
|
65
|
-
|
|
66
|
-
// Cost calculations
|
|
67
|
-
TotalCost: Decimal;
|
|
68
|
-
DirectCost: Decimal;
|
|
69
|
-
|
|
70
|
-
// Profit calculations
|
|
71
|
-
GrossProfit: Decimal;
|
|
72
|
-
NetProfit: Decimal;
|
|
73
|
-
|
|
74
|
-
// === PROCESSING COUNTERS ===
|
|
75
|
-
InvoiceCount: Integer;
|
|
76
|
-
LineCount: Integer;
|
|
77
|
-
|
|
78
|
-
// === CONTROL AND STATUS FLAGS ===
|
|
79
|
-
HasData: Boolean;
|
|
80
|
-
CalculationComplete: Boolean;
|
|
81
|
-
|
|
82
|
-
// === ERROR HANDLING AND VALIDATION ===
|
|
83
|
-
ValidationMessage: Text;
|
|
84
|
-
begin
|
|
85
|
-
// Variable order reflects natural processing flow
|
|
86
|
-
end;
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Record Variables by Dependency Order
|
|
90
|
-
```al
|
|
91
|
-
procedure ProcessPurchaseOrder(): Boolean
|
|
92
|
-
var
|
|
93
|
-
// Master data first (independent records)
|
|
94
|
-
Vendor: Record Vendor;
|
|
95
|
-
Item: Record Item;
|
|
96
|
-
Location: Record Location;
|
|
97
|
-
|
|
98
|
-
// Dependent records second
|
|
99
|
-
PurchaseHeader: Record "Purchase Header"; // Depends on Vendor
|
|
100
|
-
PurchaseLine: Record "Purchase Line"; // Depends on Header, Item, Location
|
|
101
|
-
|
|
102
|
-
// Transaction records last
|
|
103
|
-
PurchRcptHeader: Record "Purch. Rcpt. Header";
|
|
104
|
-
PurchRcptLine: Record "Purch. Rcpt. Line";
|
|
105
|
-
begin
|
|
106
|
-
// Process in dependency order
|
|
107
|
-
end;
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Bad Examples
|
|
111
|
-
|
|
112
|
-
### Random Variable Declaration Order
|
|
113
|
-
```al
|
|
114
|
-
procedure ProcessSalesOrder(DocumentNo: Code[20]): Boolean
|
|
115
|
-
var
|
|
116
|
-
TotalAmount: Decimal;
|
|
117
|
-
SalesLine: Record "Sales Line";
|
|
118
|
-
i: Integer;
|
|
119
|
-
Customer: Record Customer;
|
|
120
|
-
IsProcessed: Boolean;
|
|
121
|
-
SalesHeader: Record "Sales Header";
|
|
122
|
-
TempBuffer: Record "Integer" temporary;
|
|
123
|
-
ErrorMessage: Text;
|
|
124
|
-
LineCount: Integer;
|
|
125
|
-
HasErrors: Boolean;
|
|
126
|
-
ProcessingDate: Date;
|
|
127
|
-
Item: Record Item;
|
|
128
|
-
begin
|
|
129
|
-
// Confusing variable order makes relationships unclear
|
|
130
|
-
// Hard to understand data flow and dependencies
|
|
131
|
-
end;
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### Mixed Types Without Grouping
|
|
135
|
-
```al
|
|
136
|
-
procedure BadOrganization(): Boolean
|
|
137
|
-
var
|
|
138
|
-
Customer: Record Customer;
|
|
139
|
-
TotalAmount: Decimal;
|
|
140
|
-
SalesLine: Record "Sales Line";
|
|
141
|
-
IsComplete: Boolean;
|
|
142
|
-
Item: Record Item;
|
|
143
|
-
Counter: Integer;
|
|
144
|
-
TempRecord: Record "Integer" temporary;
|
|
145
|
-
ErrorText: Text;
|
|
146
|
-
ProcessingDate: Date;
|
|
147
|
-
HasErrors: Boolean;
|
|
148
|
-
begin
|
|
149
|
-
// No logical grouping or organization
|
|
150
|
-
// Variables scattered without purpose
|
|
151
|
-
end;
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## Best Practices
|
|
155
|
-
|
|
156
|
-
### Grouping by Purpose and Type
|
|
157
|
-
```al
|
|
158
|
-
procedure CalculateInventoryValue(): Decimal
|
|
159
|
-
var
|
|
160
|
-
// Records first
|
|
161
|
-
Item: Record Item;
|
|
162
|
-
ItemLedgerEntry: Record "Item Ledger Entry";
|
|
163
|
-
|
|
164
|
-
// Dates and options
|
|
165
|
-
CalculationDate: Date;
|
|
166
|
-
ValueMethod: Option FIFO,LIFO,Average;
|
|
167
|
-
|
|
168
|
-
// Numeric calculations (from simple to complex)
|
|
169
|
-
Quantity: Decimal;
|
|
170
|
-
UnitCost: Decimal;
|
|
171
|
-
TotalCost: Decimal;
|
|
172
|
-
AverageUnitCost: Decimal;
|
|
173
|
-
|
|
174
|
-
// Counters
|
|
175
|
-
EntryCount: Integer;
|
|
176
|
-
ProcessedCount: Integer;
|
|
177
|
-
|
|
178
|
-
// Flags and status
|
|
179
|
-
HasEntries: Boolean;
|
|
180
|
-
CalculationSuccessful: Boolean;
|
|
181
|
-
|
|
182
|
-
// Text and messages
|
|
183
|
-
StatusMessage: Text;
|
|
184
|
-
begin
|
|
185
|
-
// Clear progression from setup to results
|
|
186
|
-
end;
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### Memory Access Optimization
|
|
190
|
-
```al
|
|
191
|
-
procedure ProcessLargeDataSet(): Boolean
|
|
192
|
-
var
|
|
193
|
-
// Related counters grouped together
|
|
194
|
-
TotalRecords: Integer;
|
|
195
|
-
ProcessedRecords: Integer;
|
|
196
|
-
ErrorRecords: Integer;
|
|
197
|
-
SkippedRecords: Integer;
|
|
198
|
-
|
|
199
|
-
// Related amounts grouped together
|
|
200
|
-
TotalAmount: Decimal;
|
|
201
|
-
ProcessedAmount: Decimal;
|
|
202
|
-
RemainingAmount: Decimal;
|
|
203
|
-
|
|
204
|
-
// Status flags grouped together
|
|
205
|
-
HasErrors: Boolean;
|
|
206
|
-
IsComplete: Boolean;
|
|
207
|
-
ShouldContinue: Boolean;
|
|
208
|
-
begin
|
|
209
|
-
// Better cache performance with grouped variables
|
|
210
|
-
end;
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### Temporary Records Organization
|
|
214
|
-
```al
|
|
215
|
-
procedure BatchProcessItems(): Boolean
|
|
216
|
-
var
|
|
217
|
-
// Source records
|
|
218
|
-
Item: Record Item;
|
|
219
|
-
|
|
220
|
-
// Temporary processing records (grouped by purpose)
|
|
221
|
-
TempItemBuffer: Record "Item" temporary;
|
|
222
|
-
TempProcessingLog: Record "Integer" temporary;
|
|
223
|
-
TempErrorBuffer: Record "Error Message" temporary;
|
|
224
|
-
|
|
225
|
-
// Processing variables
|
|
226
|
-
BatchSize: Integer;
|
|
227
|
-
ProcessedCount: Integer;
|
|
228
|
-
|
|
229
|
-
// Results
|
|
230
|
-
SuccessCount: Integer;
|
|
231
|
-
ErrorCount: Integer;
|
|
232
|
-
begin
|
|
233
|
-
// Logical flow from source through temporary processing to results
|
|
234
|
-
end;
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
## Implementation Guidelines
|
|
238
|
-
|
|
239
|
-
1. **Group by dependency** - Master records before dependent records
|
|
240
|
-
2. **Group by type** - Records, then simple types, then status variables
|
|
241
|
-
3. **Group by usage** - Variables used together should be declared together
|
|
242
|
-
4. **Use consistent patterns** - Apply same organization across all procedures
|
|
243
|
-
5. **Add section comments** - Use comments to separate logical groups
|
|
244
|
-
6. **Order by processing flow** - Declaration order should match usage order
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
# Begin/End Positioning - AL Code Examples
|
|
2
|
-
|
|
3
|
-
## Begin as Afterword Pattern
|
|
4
|
-
|
|
5
|
-
```al
|
|
6
|
-
// Recommended: Begin as afterword pattern
|
|
7
|
-
procedure ProcessCustomerData(CustomerNo: Code[20]) begin
|
|
8
|
-
if Customer.Get(CustomerNo) then begin
|
|
9
|
-
ValidateCustomerData();
|
|
10
|
-
UpdateCustomerStatus();
|
|
11
|
-
LogCustomerAccess();
|
|
12
|
-
end;
|
|
13
|
-
end;
|
|
14
|
-
|
|
15
|
-
// Alternative: Begin on separate line
|
|
16
|
-
procedure ProcessCustomerDataAlternative(CustomerNo: Code[20])
|
|
17
|
-
begin
|
|
18
|
-
if Customer.Get(CustomerNo) then
|
|
19
|
-
begin
|
|
20
|
-
ValidateCustomerData();
|
|
21
|
-
UpdateCustomerStatus();
|
|
22
|
-
LogCustomerAccess();
|
|
23
|
-
end;
|
|
24
|
-
end;
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Consistent Indentation Patterns
|
|
28
|
-
|
|
29
|
-
```al
|
|
30
|
-
// Good: Consistent 4-space indentation
|
|
31
|
-
procedure ProcessSalesOrder(OrderNo: Code[20]) begin
|
|
32
|
-
if SalesHeader.Get(SalesHeader."Document Type"::Order, OrderNo) then begin
|
|
33
|
-
if ValidateOrderData() then begin
|
|
34
|
-
if ProcessOrderLines() then begin
|
|
35
|
-
UpdateOrderStatus();
|
|
36
|
-
SendConfirmationEmail();
|
|
37
|
-
end else begin
|
|
38
|
-
LogProcessingError();
|
|
39
|
-
RollbackChanges();
|
|
40
|
-
end;
|
|
41
|
-
end;
|
|
42
|
-
end;
|
|
43
|
-
end;
|
|
44
|
-
|
|
45
|
-
// Poor: Inconsistent indentation
|
|
46
|
-
procedure ProcessSalesOrderBad(OrderNo: Code[20]) begin
|
|
47
|
-
if SalesHeader.Get(SalesHeader."Document Type"::Order, OrderNo) then begin
|
|
48
|
-
if ValidateOrderData() then begin
|
|
49
|
-
if ProcessOrderLines() then begin
|
|
50
|
-
UpdateOrderStatus();
|
|
51
|
-
SendConfirmationEmail();
|
|
52
|
-
end else begin
|
|
53
|
-
LogProcessingError();
|
|
54
|
-
RollbackChanges();
|
|
55
|
-
end;
|
|
56
|
-
end;
|
|
57
|
-
end;
|
|
58
|
-
end;
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Trigger Formatting Examples
|
|
62
|
-
|
|
63
|
-
```al
|
|
64
|
-
// Table trigger with begin as afterword
|
|
65
|
-
table 50100 "Customer Extended"
|
|
66
|
-
{
|
|
67
|
-
fields
|
|
68
|
-
{
|
|
69
|
-
field(1; "No."; Code[20]) begin
|
|
70
|
-
end;
|
|
71
|
-
|
|
72
|
-
field(2; Name; Text[100]) begin
|
|
73
|
-
trigger OnValidate() begin
|
|
74
|
-
if Name <> '' then begin
|
|
75
|
-
UpdateSearchName();
|
|
76
|
-
LogNameChange();
|
|
77
|
-
end;
|
|
78
|
-
end;
|
|
79
|
-
end;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
trigger OnInsert() begin
|
|
83
|
-
TestField("No.");
|
|
84
|
-
if "No." = '' then begin
|
|
85
|
-
GetNextNumber();
|
|
86
|
-
end;
|
|
87
|
-
InitializeDefaults();
|
|
88
|
-
end;
|
|
89
|
-
|
|
90
|
-
trigger OnModify() begin
|
|
91
|
-
if xRec.Name <> Name then begin
|
|
92
|
-
ValidateNameChange();
|
|
93
|
-
UpdateRelatedRecords();
|
|
94
|
-
end;
|
|
95
|
-
end;
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Control Structure Positioning
|
|
100
|
-
|
|
101
|
-
```al
|
|
102
|
-
// Consistent if-then-else formatting
|
|
103
|
-
procedure DetermineShippingMethod(Amount: Decimal; Country: Code[10]): Code[10] begin
|
|
104
|
-
if Country = 'US' then begin
|
|
105
|
-
if Amount > 1000 then begin
|
|
106
|
-
exit('PREMIUM-DOMESTIC');
|
|
107
|
-
end else begin
|
|
108
|
-
exit('STANDARD-DOMESTIC');
|
|
109
|
-
end;
|
|
110
|
-
end else begin
|
|
111
|
-
if Amount > 2000 then begin
|
|
112
|
-
exit('PREMIUM-INTERNATIONAL');
|
|
113
|
-
end else begin
|
|
114
|
-
exit('STANDARD-INTERNATIONAL');
|
|
115
|
-
end;
|
|
116
|
-
end;
|
|
117
|
-
end;
|
|
118
|
-
|
|
119
|
-
// Case statement formatting
|
|
120
|
-
procedure ProcessOrderByType(OrderType: Option Standard,DropShip,Transfer) begin
|
|
121
|
-
case OrderType of
|
|
122
|
-
OrderType::Standard: begin
|
|
123
|
-
ProcessStandardOrder();
|
|
124
|
-
UpdateInventory();
|
|
125
|
-
end;
|
|
126
|
-
OrderType::DropShip: begin
|
|
127
|
-
CreatePurchaseOrder();
|
|
128
|
-
NotifyVendor();
|
|
129
|
-
end;
|
|
130
|
-
OrderType::Transfer: begin
|
|
131
|
-
ValidateLocations();
|
|
132
|
-
CreateTransferOrder();
|
|
133
|
-
end;
|
|
134
|
-
else begin
|
|
135
|
-
Error('Unknown order type');
|
|
136
|
-
end;
|
|
137
|
-
end;
|
|
138
|
-
end;
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Professional Formatting Standards
|
|
142
|
-
|
|
143
|
-
```al
|
|
144
|
-
// Professional procedure organization
|
|
145
|
-
codeunit 50100 "Order Processing Manager"
|
|
146
|
-
{
|
|
147
|
-
var
|
|
148
|
-
Customer: Record Customer;
|
|
149
|
-
SalesHeader: Record "Sales Header";
|
|
150
|
-
|
|
151
|
-
procedure CreateSalesOrder(CustomerNo: Code[20]; OrderDate: Date): Code[20] begin
|
|
152
|
-
ValidateCustomer(CustomerNo);
|
|
153
|
-
InitializeOrder(CustomerNo, OrderDate);
|
|
154
|
-
exit(SalesHeader."No.");
|
|
155
|
-
end;
|
|
156
|
-
|
|
157
|
-
local procedure ValidateCustomer(CustomerNo: Code[20]) begin
|
|
158
|
-
if not Customer.Get(CustomerNo) then begin
|
|
159
|
-
Error('Customer %1 does not exist', CustomerNo);
|
|
160
|
-
end;
|
|
161
|
-
|
|
162
|
-
if Customer.Blocked <> Customer.Blocked::" " then begin
|
|
163
|
-
Error('Customer %1 is blocked', CustomerNo);
|
|
164
|
-
end;
|
|
165
|
-
|
|
166
|
-
Customer.CheckCreditLimit(0, true);
|
|
167
|
-
end;
|
|
168
|
-
|
|
169
|
-
local procedure InitializeOrder(CustomerNo: Code[20]; OrderDate: Date) begin
|
|
170
|
-
SalesHeader.Init();
|
|
171
|
-
SalesHeader."Document Type" := SalesHeader."Document Type"::Order;
|
|
172
|
-
SalesHeader."No." := GetNextOrderNumber();
|
|
173
|
-
SalesHeader."Sell-to Customer No." := CustomerNo;
|
|
174
|
-
SalesHeader."Order Date" := OrderDate;
|
|
175
|
-
SalesHeader.Insert(true);
|
|
176
|
-
|
|
177
|
-
if SalesHeader."Bill-to Customer No." = '' then begin
|
|
178
|
-
SalesHeader."Bill-to Customer No." := CustomerNo;
|
|
179
|
-
SalesHeader.Modify(true);
|
|
180
|
-
end;
|
|
181
|
-
end;
|
|
182
|
-
}
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
## Anti-Pattern Examples
|
|
186
|
-
|
|
187
|
-
```al
|
|
188
|
-
// Anti-pattern: Inconsistent begin positioning
|
|
189
|
-
procedure BadFormattingExample() begin
|
|
190
|
-
if Customer.FindFirst() then
|
|
191
|
-
begin // Inconsistent - should match procedure style
|
|
192
|
-
repeat
|
|
193
|
-
if Customer.Blocked = Customer.Blocked::" "
|
|
194
|
-
then begin // Awkward line break
|
|
195
|
-
ProcessCustomer();
|
|
196
|
-
end
|
|
197
|
-
else
|
|
198
|
-
begin // Inconsistent with above
|
|
199
|
-
SkipCustomer();
|
|
200
|
-
end;
|
|
201
|
-
until Customer.Next() = 0;
|
|
202
|
-
end;
|
|
203
|
-
end;
|
|
204
|
-
|
|
205
|
-
// Anti-pattern: Mixed indentation styles
|
|
206
|
-
procedure MixedIndentationBad() begin
|
|
207
|
-
if SomeCondition then begin
|
|
208
|
-
DoSomething(); // 2 spaces
|
|
209
|
-
DoSomethingElse(); // 4 spaces
|
|
210
|
-
DoAnother(); // Tab character
|
|
211
|
-
end;
|
|
212
|
-
end;
|
|
213
|
-
|
|
214
|
-
// Better: Consistent formatting
|
|
215
|
-
procedure ConsistentFormattingGood() begin
|
|
216
|
-
if SomeCondition then begin
|
|
217
|
-
DoSomething();
|
|
218
|
-
DoSomethingElse();
|
|
219
|
-
DoAnother();
|
|
220
|
-
end;
|
|
221
|
-
end;
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## Team Standards Implementation
|
|
225
|
-
|
|
226
|
-
```al
|
|
227
|
-
// Example team standard: Begin as afterword with 4-space indentation
|
|
228
|
-
codeunit 50200 "Team Standard Example"
|
|
229
|
-
{
|
|
230
|
-
procedure TeamStandardProcedure(Parameter: Text) begin
|
|
231
|
-
if Parameter <> '' then begin
|
|
232
|
-
ProcessParameter(Parameter);
|
|
233
|
-
LogProcessing();
|
|
234
|
-
end else begin
|
|
235
|
-
HandleEmptyParameter();
|
|
236
|
-
end;
|
|
237
|
-
end;
|
|
238
|
-
|
|
239
|
-
local procedure ProcessParameter(Param: Text) begin
|
|
240
|
-
// Consistent formatting throughout codebase
|
|
241
|
-
ValidateParameter(Param);
|
|
242
|
-
TransformParameter(Param);
|
|
243
|
-
SaveParameter(Param);
|
|
244
|
-
end;
|
|
245
|
-
|
|
246
|
-
local procedure HandleEmptyParameter() begin
|
|
247
|
-
Message('Parameter cannot be empty');
|
|
248
|
-
end;
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
## Best Practices Summary
|
|
253
|
-
|
|
254
|
-
### Formatting Guidelines
|
|
255
|
-
1. **Choose one style** and apply consistently across entire codebase
|
|
256
|
-
2. **Use 4-space indentation** for each nesting level
|
|
257
|
-
3. **Align begin/end keywords** at same indentation level
|
|
258
|
-
4. **Configure development tools** for automatic formatting
|
|
259
|
-
5. **Document team standards** for new team members
|
|
260
|
-
|
|
261
|
-
### Readability Optimization
|
|
262
|
-
1. **Maintain visual hierarchy** through consistent indentation
|
|
263
|
-
2. **Group related code** within logical begin/end blocks
|
|
264
|
-
3. **Use whitespace effectively** to separate logical sections
|
|
265
|
-
4. **Keep nesting reasonable** - avoid excessive depth
|
|
266
|
-
5. **Consider screen space** when choosing vertical vs horizontal formatting
|
|
267
|
-
|
|
268
|
-
### Team Collaboration
|
|
269
|
-
1. **Establish formatting standards** before starting projects
|
|
270
|
-
2. **Use code formatting tools** to enforce consistency
|
|
271
|
-
3. **Review formatting** as part of code review process
|
|
272
|
-
4. **Train team members** on adopted standards
|
|
273
|
-
5. **Update standards document** when making changes
|
|
274
|
-
|
|
275
|
-
Related Resources:
|
|
276
|
-
- AL code formatting guide: al-formatting-standards.md
|
|
277
|
-
- Team development standards: team-coding-guidelines.md
|
|
278
|
-
- Code review checklist: code-review-formatting.md
|