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.
Files changed (548) hide show
  1. package/dist/config/test-enhanced-layer-service.js +10 -10
  2. package/dist/config/test-enhanced-layer-service.js.map +1 -1
  3. package/dist/dev/hot-reload.d.ts +2 -2
  4. package/dist/dev/hot-reload.d.ts.map +1 -1
  5. package/dist/dev/hot-reload.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +34 -38
  9. package/dist/index.js.map +1 -1
  10. package/dist/layers/index.d.ts +1 -1
  11. package/dist/layers/index.d.ts.map +1 -1
  12. package/dist/layers/index.js +1 -1
  13. package/dist/layers/index.js.map +1 -1
  14. package/dist/services/code-analysis-service.d.ts.map +1 -1
  15. package/dist/services/code-analysis-service.js +4 -0
  16. package/dist/services/code-analysis-service.js.map +1 -1
  17. package/dist/services/knowledge-service.d.ts +21 -10
  18. package/dist/services/knowledge-service.d.ts.map +1 -1
  19. package/dist/services/knowledge-service.js +71 -54
  20. package/dist/services/knowledge-service.js.map +1 -1
  21. package/dist/services/multi-content-layer-service.d.ts +90 -0
  22. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  23. package/dist/services/multi-content-layer-service.js +380 -0
  24. package/dist/services/multi-content-layer-service.js.map +1 -1
  25. package/dist/services/workflow-service.d.ts +11 -3
  26. package/dist/services/workflow-service.d.ts.map +1 -1
  27. package/dist/services/workflow-service.js +119 -78
  28. package/dist/services/workflow-service.js.map +1 -1
  29. package/dist/streamlined-handlers.d.ts +31 -2
  30. package/dist/streamlined-handlers.d.ts.map +1 -1
  31. package/dist/streamlined-handlers.js +151 -109
  32. package/dist/streamlined-handlers.js.map +1 -1
  33. package/dist/streamlined-tools.d.ts +12 -0
  34. package/dist/streamlined-tools.d.ts.map +1 -1
  35. package/dist/streamlined-tools.js +11 -6
  36. package/dist/streamlined-tools.js.map +1 -1
  37. package/package.json +13 -4
  38. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
  39. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
  40. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
  41. package/embedded-knowledge/AGENTS.md +0 -178
  42. package/embedded-knowledge/CONTRIBUTING.md +0 -58
  43. package/embedded-knowledge/LICENSE +0 -21
  44. package/embedded-knowledge/README.md +0 -32
  45. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
  46. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
  47. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
  48. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
  49. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
  50. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
  51. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
  52. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
  53. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
  54. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
  55. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
  56. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
  57. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
  58. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
  59. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
  60. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
  61. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
  62. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
  63. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -360
  64. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
  65. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
  66. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
  67. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
  68. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
  69. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
  70. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
  71. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
  72. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
  73. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
  74. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
  75. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
  76. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
  77. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
  78. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
  79. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
  80. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
  81. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
  82. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
  83. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
  84. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
  85. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
  86. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
  87. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
  88. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
  89. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
  90. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
  91. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
  92. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
  93. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
  94. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
  95. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
  96. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
  97. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
  98. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
  99. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
  100. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
  101. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
  102. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
  103. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
  104. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
  105. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
  106. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
  107. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
  108. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
  109. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
  110. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
  111. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
  112. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
  113. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
  114. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
  115. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
  116. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
  117. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
  118. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
  119. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
  120. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
  121. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
  122. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
  123. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
  124. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
  125. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
  126. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
  127. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
  128. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
  129. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
  130. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
  131. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
  132. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
  133. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
  134. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
  135. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
  136. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
  137. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
  138. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
  139. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
  140. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
  141. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
  142. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
  143. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
  144. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
  145. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
  146. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
  147. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
  148. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
  149. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
  150. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
  151. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
  152. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
  153. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
  154. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
  155. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
  156. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
  157. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
  158. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
  159. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
  160. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
  161. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
  162. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
  163. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
  164. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
  165. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
  166. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
  167. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
  168. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
  169. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
  170. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
  171. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
  172. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
  173. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
  174. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
  175. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
  176. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
  177. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
  178. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
  179. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
  180. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
  181. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
  182. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
  183. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
  184. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
  185. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
  186. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
  187. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
  188. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
  189. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
  190. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
  191. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
  192. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
  193. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
  194. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
  195. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
  196. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
  197. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
  198. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
  199. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
  200. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
  201. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
  202. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
  203. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
  204. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
  205. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
  206. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
  207. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
  208. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
  209. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
  210. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
  211. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
  212. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
  213. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
  214. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
  215. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
  216. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
  217. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
  218. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
  219. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
  220. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
  221. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
  222. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
  223. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
  224. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
  225. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
  226. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
  227. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
  228. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
  229. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
  230. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
  231. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
  232. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
  233. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
  234. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
  235. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
  236. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
  237. package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
  238. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
  239. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
  240. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
  241. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +0 -146
  242. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
  243. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
  244. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
  245. package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
  246. package/embedded-knowledge/indexes/domain-catalog.json +0 -106
  247. package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
  248. package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
  249. package/embedded-knowledge/indexes/tags/access-control.json +0 -1
  250. package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
  251. package/embedded-knowledge/indexes/tags/actions.json +0 -1
  252. package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
  253. package/embedded-knowledge/indexes/tags/advanced.json +0 -1
  254. package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
  255. package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
  256. package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
  257. package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
  258. package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
  259. package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
  260. package/embedded-knowledge/indexes/tags/analytics.json +0 -1
  261. package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
  262. package/embedded-knowledge/indexes/tags/api-design.json +0 -1
  263. package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
  264. package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
  265. package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
  266. package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
  267. package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
  268. package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
  269. package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
  270. package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
  271. package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
  272. package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
  273. package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
  274. package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
  275. package/embedded-knowledge/indexes/tags/api.json +0 -1
  276. package/embedded-knowledge/indexes/tags/architecture.json +0 -1
  277. package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
  278. package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
  279. package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
  280. package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
  281. package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
  282. package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
  283. package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
  284. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
  285. package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
  286. package/embedded-knowledge/indexes/tags/binding.json +0 -1
  287. package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
  288. package/embedded-knowledge/indexes/tags/blocks.json +0 -1
  289. package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
  290. package/embedded-knowledge/indexes/tags/branching.json +0 -1
  291. package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
  292. package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
  293. package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
  294. package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
  295. package/embedded-knowledge/indexes/tags/business-process.json +0 -1
  296. package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
  297. package/embedded-knowledge/indexes/tags/caching.json +0 -1
  298. package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
  299. package/embedded-knowledge/indexes/tags/case.json +0 -1
  300. package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
  301. package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
  302. package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
  303. package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
  304. package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
  305. package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
  306. package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
  307. package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
  308. package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
  309. package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
  310. package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
  311. package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
  312. package/embedded-knowledge/indexes/tags/code-style.json +0 -1
  313. package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
  314. package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
  315. package/embedded-knowledge/indexes/tags/comments.json +0 -1
  316. package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
  317. package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
  318. package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
  319. package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
  320. package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
  321. package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
  322. package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
  323. package/embedded-knowledge/indexes/tags/conditional.json +0 -1
  324. package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
  325. package/embedded-knowledge/indexes/tags/consistency.json +0 -1
  326. package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
  327. package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
  328. package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
  329. package/embedded-knowledge/indexes/tags/correlation.json +0 -1
  330. package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
  331. package/embedded-knowledge/indexes/tags/data-access.json +0 -1
  332. package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
  333. package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
  334. package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
  335. package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
  336. package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
  337. package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
  338. package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
  339. package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
  340. package/embedded-knowledge/indexes/tags/database.json +0 -1
  341. package/embedded-knowledge/indexes/tags/debugging.json +0 -1
  342. package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
  343. package/embedded-knowledge/indexes/tags/declaration.json +0 -1
  344. package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
  345. package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
  346. package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
  347. package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
  348. package/embedded-knowledge/indexes/tags/deployment.json +0 -1
  349. package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
  350. package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
  351. package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
  352. package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
  353. package/embedded-knowledge/indexes/tags/documentation.json +0 -1
  354. package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
  355. package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
  356. package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
  357. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
  358. package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
  359. package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
  360. package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
  361. package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
  362. package/embedded-knowledge/indexes/tags/error-text.json +0 -1
  363. package/embedded-knowledge/indexes/tags/etag.json +0 -1
  364. package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
  365. package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
  366. package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
  367. package/embedded-knowledge/indexes/tags/events.json +0 -1
  368. package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
  369. package/embedded-knowledge/indexes/tags/expressions.json +0 -1
  370. package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
  371. package/embedded-knowledge/indexes/tags/extensions.json +0 -1
  372. package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
  373. package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
  374. package/embedded-knowledge/indexes/tags/field-control.json +0 -1
  375. package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
  376. package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
  377. package/embedded-knowledge/indexes/tags/field-state.json +0 -1
  378. package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
  379. package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
  380. package/embedded-knowledge/indexes/tags/fields.json +0 -1
  381. package/embedded-knowledge/indexes/tags/filtering.json +0 -1
  382. package/embedded-knowledge/indexes/tags/filters.json +0 -1
  383. package/embedded-knowledge/indexes/tags/formatting.json +0 -1
  384. package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
  385. package/embedded-knowledge/indexes/tags/http-status.json +0 -1
  386. package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
  387. package/embedded-knowledge/indexes/tags/implementation.json +0 -1
  388. package/embedded-knowledge/indexes/tags/indentation.json +0 -1
  389. package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
  390. package/embedded-knowledge/indexes/tags/indexing.json +0 -1
  391. package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
  392. package/embedded-knowledge/indexes/tags/integration.json +0 -1
  393. package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
  394. package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
  395. package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
  396. package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
  397. package/embedded-knowledge/indexes/tags/isolation.json +0 -1
  398. package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
  399. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
  400. package/embedded-knowledge/indexes/tags/keywords.json +0 -1
  401. package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
  402. package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
  403. package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
  404. package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
  405. package/embedded-knowledge/indexes/tags/localization.json +0 -1
  406. package/embedded-knowledge/indexes/tags/logging.json +0 -1
  407. package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
  408. package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
  409. package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
  410. package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
  411. package/embedded-knowledge/indexes/tags/memory.json +0 -1
  412. package/embedded-knowledge/indexes/tags/message-design.json +0 -1
  413. package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
  414. package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
  415. package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
  416. package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
  417. package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
  418. package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
  419. package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
  420. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
  421. package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
  422. package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
  423. package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
  424. package/embedded-knowledge/indexes/tags/naming.json +0 -1
  425. package/embedded-knowledge/indexes/tags/navigation.json +0 -1
  426. package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
  427. package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
  428. package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
  429. package/embedded-knowledge/indexes/tags/no-series.json +0 -1
  430. package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
  431. package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
  432. package/embedded-knowledge/indexes/tags/odata.json +0 -1
  433. package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
  434. package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
  435. package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
  436. package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
  437. package/embedded-knowledge/indexes/tags/operators.json +0 -1
  438. package/embedded-knowledge/indexes/tags/optimization.json +0 -1
  439. package/embedded-knowledge/indexes/tags/order.json +0 -1
  440. package/embedded-knowledge/indexes/tags/organization.json +0 -1
  441. package/embedded-knowledge/indexes/tags/pages.json +0 -1
  442. package/embedded-knowledge/indexes/tags/parameters.json +0 -1
  443. package/embedded-knowledge/indexes/tags/patterns.json +0 -1
  444. package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
  445. package/embedded-knowledge/indexes/tags/performance.json +0 -1
  446. package/embedded-knowledge/indexes/tags/placement.json +0 -1
  447. package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
  448. package/embedded-knowledge/indexes/tags/posting.json +0 -1
  449. package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
  450. package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
  451. package/embedded-knowledge/indexes/tags/privacy.json +0 -1
  452. package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
  453. package/embedded-knowledge/indexes/tags/production.json +0 -1
  454. package/embedded-knowledge/indexes/tags/productivity.json +0 -1
  455. package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
  456. package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
  457. package/embedded-knowledge/indexes/tags/ranges.json +0 -1
  458. package/embedded-knowledge/indexes/tags/readability.json +0 -1
  459. package/embedded-knowledge/indexes/tags/record-access.json +0 -1
  460. package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
  461. package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
  462. package/embedded-knowledge/indexes/tags/reference.json +0 -1
  463. package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
  464. package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
  465. package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
  466. package/embedded-knowledge/indexes/tags/runtime.json +0 -1
  467. package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
  468. package/embedded-knowledge/indexes/tags/security.json +0 -1
  469. package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
  470. package/embedded-knowledge/indexes/tags/serialization.json +0 -1
  471. package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
  472. package/embedded-knowledge/indexes/tags/session.json +0 -1
  473. package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
  474. package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
  475. package/embedded-knowledge/indexes/tags/sift.json +0 -1
  476. package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
  477. package/embedded-knowledge/indexes/tags/spacing.json +0 -1
  478. package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
  479. package/embedded-knowledge/indexes/tags/standards.json +0 -1
  480. package/embedded-knowledge/indexes/tags/statements.json +0 -1
  481. package/embedded-knowledge/indexes/tags/streaming.json +0 -1
  482. package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
  483. package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
  484. package/embedded-knowledge/indexes/tags/structure.json +0 -1
  485. package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
  486. package/embedded-knowledge/indexes/tags/switch.json +0 -1
  487. package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
  488. package/embedded-knowledge/indexes/tags/syntax.json +0 -1
  489. package/embedded-knowledge/indexes/tags/systemid.json +0 -1
  490. package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
  491. package/embedded-knowledge/indexes/tags/table-events.json +0 -1
  492. package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
  493. package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
  494. package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
  495. package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
  496. package/embedded-knowledge/indexes/tags/template-method.json +0 -1
  497. package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
  498. package/embedded-knowledge/indexes/tags/testfield.json +0 -1
  499. package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
  500. package/embedded-knowledge/indexes/tags/triggers.json +0 -1
  501. package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
  502. package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
  503. package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
  504. package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
  505. package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
  506. package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
  507. package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
  508. package/embedded-knowledge/indexes/tags/validation.json +0 -1
  509. package/embedded-knowledge/indexes/tags/variables.json +0 -1
  510. package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
  511. package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
  512. package/embedded-knowledge/indexes/tags/web-services.json +0 -1
  513. package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
  514. package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
  515. package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
  516. package/embedded-knowledge/indexes/tags/workspace.json +0 -1
  517. package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
  518. package/embedded-knowledge/indexes/topic-relationships.json +0 -128
  519. package/embedded-knowledge/methodologies/index.json +0 -81
  520. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  521. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  522. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  523. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  524. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  525. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  526. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  527. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  528. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  529. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  530. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  531. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  532. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  533. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  534. package/embedded-knowledge/specialists/alex-architect.md +0 -216
  535. package/embedded-knowledge/specialists/casey-copilot.md +0 -226
  536. package/embedded-knowledge/specialists/chris-config.md +0 -267
  537. package/embedded-knowledge/specialists/dean-debug.md +0 -222
  538. package/embedded-knowledge/specialists/eva-errors.md +0 -235
  539. package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
  540. package/embedded-knowledge/specialists/logan-legacy.md +0 -209
  541. package/embedded-knowledge/specialists/maya-mentor.md +0 -211
  542. package/embedded-knowledge/specialists/morgan-market.md +0 -226
  543. package/embedded-knowledge/specialists/quinn-tester.md +0 -235
  544. package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
  545. package/embedded-knowledge/specialists/sam-coder.md +0 -359
  546. package/embedded-knowledge/specialists/seth-security.md +0 -235
  547. package/embedded-knowledge/specialists/taylor-docs.md +0 -257
  548. package/embedded-knowledge/specialists/uma-ux.md +0 -235
@@ -1,316 +0,0 @@
1
- # SetLoadFields Placement Before Case Statements - AL Code Samples
2
-
3
- ## Basic Case Statement Placement
4
- ```al
5
- codeunit 50400 "Case Statement Placement"
6
- {
7
- procedure CorrectCaseStatementPattern()
8
- var
9
- SalesHeader: Record "Sales Header";
10
- begin
11
- // CORRECT: SetLoadFields before case statement evaluation
12
- SalesHeader.SetLoadFields("Document Type", "No.", "Sell-to Customer Name", "Amount Including VAT");
13
- SalesHeader.SetRange(Status, SalesHeader.Status::Open);
14
-
15
- if SalesHeader.FindSet() then
16
- repeat
17
- // Case statement after SetLoadFields - all needed fields already loaded
18
- case SalesHeader."Document Type" of
19
- SalesHeader."Document Type"::Quote:
20
- ProcessQuote(SalesHeader."No.", SalesHeader."Sell-to Customer Name");
21
- SalesHeader."Document Type"::Order:
22
- ProcessOrder(SalesHeader."No.", SalesHeader."Sell-to Customer Name", SalesHeader."Amount Including VAT");
23
- SalesHeader."Document Type"::Invoice:
24
- ProcessInvoice(SalesHeader."No.", SalesHeader."Amount Including VAT");
25
- SalesHeader."Document Type"::"Credit Memo":
26
- ProcessCreditMemo(SalesHeader."No.", SalesHeader."Amount Including VAT");
27
- end;
28
- until SalesHeader.Next() = 0;
29
- end;
30
-
31
- procedure IncorrectCaseStatementPattern()
32
- var
33
- SalesHeader: Record "Sales Header";
34
- begin
35
- // INCORRECT: SetLoadFields inside case statement branches
36
- SalesHeader.SetRange(Status, SalesHeader.Status::Open);
37
-
38
- if SalesHeader.FindSet() then
39
- repeat
40
- case SalesHeader."Document Type" of
41
- SalesHeader."Document Type"::Quote:
42
- begin
43
- // SetLoadFields called too late - Document Type field already accessed for case evaluation
44
- SalesHeader.SetLoadFields("No.", "Sell-to Customer Name");
45
- ProcessQuote(SalesHeader."No.", SalesHeader."Sell-to Customer Name");
46
- end;
47
- SalesHeader."Document Type"::Order:
48
- begin
49
- SalesHeader.SetLoadFields("No.", "Sell-to Customer Name", "Amount Including VAT");
50
- ProcessOrder(SalesHeader."No.", SalesHeader."Sell-to Customer Name", SalesHeader."Amount Including VAT");
51
- end;
52
- end;
53
- until SalesHeader.Next() = 0;
54
- end;
55
-
56
- local procedure ProcessQuote(DocumentNo: Code[20]; CustomerName: Text[100])
57
- begin
58
- // Process quote
59
- end;
60
-
61
- local procedure ProcessOrder(DocumentNo: Code[20]; CustomerName: Text[100]; Amount: Decimal)
62
- begin
63
- // Process order
64
- end;
65
-
66
- local procedure ProcessInvoice(DocumentNo: Code[20]; Amount: Decimal)
67
- begin
68
- // Process invoice
69
- end;
70
-
71
- local procedure ProcessCreditMemo(DocumentNo: Code[20]; Amount: Decimal)
72
- begin
73
- // Process credit memo
74
- end;
75
- }
76
- ```
77
-
78
- ## Advanced Case Statement Patterns
79
- ```al
80
- codeunit 50401 "Advanced Case Placement"
81
- {
82
- procedure ComplexCaseStatementOptimization()
83
- var
84
- SalesLine: Record "Sales Line";
85
- begin
86
- // Load all fields that might be needed by any case branch
87
- SalesLine.SetLoadFields("Document Type", "Document No.", "Line No.", "Type", "No.",
88
- "Quantity", "Unit Price", "Line Amount");
89
- SalesLine.SetRange("Document Type", SalesLine."Document Type"::Order);
90
-
91
- if SalesLine.FindSet() then
92
- repeat
93
- // Primary case statement for line type
94
- case SalesLine.Type of
95
- SalesLine.Type::Item:
96
- ProcessItemLine(SalesLine);
97
- SalesLine.Type::Resource:
98
- ProcessResourceLine(SalesLine);
99
- SalesLine.Type::"G/L Account":
100
- ProcessGLAccountLine(SalesLine);
101
- SalesLine.Type::"Charge (Item)":
102
- ProcessItemChargeLine(SalesLine);
103
- else
104
- HandleUnknownLineType(SalesLine);
105
- end;
106
- until SalesLine.Next() = 0;
107
- end;
108
-
109
- procedure NestedCaseStatementExample()
110
- var
111
- Item: Record Item;
112
- begin
113
- // SetLoadFields covers all fields needed by nested case statements
114
- Item.SetLoadFields("No.", "Type", "Item Category Code", "Unit Price", "Inventory", "Blocked");
115
- Item.SetRange("No.", '1000', '9999');
116
-
117
- if Item.FindSet() then
118
- repeat
119
- // Outer case statement
120
- case Item.Type of
121
- Item.Type::Inventory,
122
- Item.Type::"Non-Inventory":
123
- begin
124
- // Inner case statement - fields already loaded
125
- case Item."Item Category Code" of
126
- 'CHAIR':
127
- ProcessChairItem(Item."No.", Item."Unit Price");
128
- 'TABLE':
129
- ProcessTableItem(Item."No.", Item.Inventory);
130
- 'DESK':
131
- ProcessDeskItem(Item."No.", Item."Unit Price", Item.Inventory);
132
- else
133
- ProcessGeneralItem(Item."No.");
134
- end;
135
- end;
136
- Item.Type::Service:
137
- ProcessServiceItem(Item."No.", Item."Unit Price");
138
- end;
139
- until Item.Next() = 0;
140
- end;
141
-
142
- procedure ConditionalCaseStatements()
143
- var
144
- Customer: Record Customer;
145
- ProcessHighPriority: Boolean;
146
- begin
147
- // SetLoadFields accounts for all possible case statement branches
148
- Customer.SetLoadFields("No.", "Name", "Customer Posting Group", "Credit Limit (LCY)",
149
- "Balance (LCY)", "Phone No.");
150
-
151
- ProcessHighPriority := Time > 120000T; // After noon, process high priority
152
-
153
- if Customer.FindSet() then
154
- repeat
155
- if ProcessHighPriority then begin
156
- // High priority case statement
157
- case Customer."Customer Posting Group" of
158
- 'VIP':
159
- if Customer."Credit Limit (LCY)" > 100000 then
160
- ProcessVIPCustomer(Customer."No.", Customer.Name, Customer."Credit Limit (LCY)");
161
- 'CORPORATE':
162
- ProcessCorporateCustomer(Customer."No.", Customer."Balance (LCY)");
163
- end;
164
- end else begin
165
- // Standard priority case statement
166
- case Customer."Customer Posting Group" of
167
- 'DOMESTIC':
168
- ProcessDomesticCustomer(Customer."No.", Customer.Name);
169
- 'FOREIGN':
170
- ProcessForeignCustomer(Customer."No.", Customer."Phone No.");
171
- end;
172
- end;
173
- until Customer.Next() = 0;
174
- end;
175
-
176
- // Helper procedures for line processing
177
- local procedure ProcessItemLine(var SalesLine: Record "Sales Line")
178
- begin
179
- // Item line processing using pre-loaded fields
180
- Message('Processing Item Line: %1, Qty: %2', SalesLine."No.", SalesLine.Quantity);
181
- end;
182
-
183
- local procedure ProcessResourceLine(var SalesLine: Record "Sales Line")
184
- begin
185
- // Resource line processing
186
- Message('Processing Resource Line: %1, Amount: %2', SalesLine."No.", SalesLine."Line Amount");
187
- end;
188
-
189
- local procedure ProcessGLAccountLine(var SalesLine: Record "Sales Line")
190
- begin
191
- // G/L Account line processing
192
- Message('Processing G/L Account Line: %1', SalesLine."No.");
193
- end;
194
-
195
- local procedure ProcessItemChargeLine(var SalesLine: Record "Sales Line")
196
- begin
197
- // Item charge processing
198
- Message('Processing Item Charge Line: %1', SalesLine."No.");
199
- end;
200
-
201
- local procedure HandleUnknownLineType(var SalesLine: Record "Sales Line")
202
- begin
203
- Error('Unknown line type for document %1, line %2', SalesLine."Document No.", SalesLine."Line No.");
204
- end;
205
-
206
- local procedure ProcessChairItem(ItemNo: Code[20]; UnitPrice: Decimal)
207
- begin
208
- Message('Chair Item: %1, Price: %2', ItemNo, UnitPrice);
209
- end;
210
-
211
- local procedure ProcessTableItem(ItemNo: Code[20]; Inventory: Decimal)
212
- begin
213
- Message('Table Item: %1, Inventory: %2', ItemNo, Inventory);
214
- end;
215
-
216
- local procedure ProcessDeskItem(ItemNo: Code[20]; UnitPrice: Decimal; Inventory: Decimal)
217
- begin
218
- Message('Desk Item: %1, Price: %2, Inventory: %3', ItemNo, UnitPrice, Inventory);
219
- end;
220
-
221
- local procedure ProcessGeneralItem(ItemNo: Code[20])
222
- begin
223
- Message('General Item: %1', ItemNo);
224
- end;
225
-
226
- local procedure ProcessServiceItem(ItemNo: Code[20]; UnitPrice: Decimal)
227
- begin
228
- Message('Service Item: %1, Price: %2', ItemNo, UnitPrice);
229
- end;
230
-
231
- local procedure ProcessVIPCustomer(CustomerNo: Code[20]; Name: Text[100]; CreditLimit: Decimal)
232
- begin
233
- Message('VIP Customer: %1 - %2, Credit Limit: %3', CustomerNo, Name, CreditLimit);
234
- end;
235
-
236
- local procedure ProcessCorporateCustomer(CustomerNo: Code[20]; Balance: Decimal)
237
- begin
238
- Message('Corporate Customer: %1, Balance: %2', CustomerNo, Balance);
239
- end;
240
-
241
- local procedure ProcessDomesticCustomer(CustomerNo: Code[20]; Name: Text[100])
242
- begin
243
- Message('Domestic Customer: %1 - %2', CustomerNo, Name);
244
- end;
245
-
246
- local procedure ProcessForeignCustomer(CustomerNo: Code[20]; PhoneNo: Text[30])
247
- begin
248
- Message('Foreign Customer: %1, Phone: %2', CustomerNo, PhoneNo);
249
- end;
250
- }
251
- ```
252
-
253
- ## Performance Impact Analysis
254
- ```al
255
- codeunit 50402 "Case Statement Performance"
256
- {
257
- procedure DemonstratePerformanceImpact()
258
- var
259
- Item: Record Item;
260
- StartTime: DateTime;
261
- EndTime: DateTime;
262
- begin
263
- // Scenario 1: SetLoadFields after case statement evaluation (inefficient)
264
- StartTime := CurrentDateTime();
265
- Item.SetRange("Item Category Code", 'CHAIR');
266
-
267
- if Item.FindSet() then
268
- repeat
269
- // Item Category Code accessed before SetLoadFields - loads all fields
270
- case Item."Item Category Code" of
271
- 'CHAIR':
272
- begin
273
- Item.SetLoadFields("No.", "Unit Price"); // Too late
274
- ProcessChairItem(Item."No.", Item."Unit Price");
275
- end;
276
- 'TABLE':
277
- begin
278
- Item.SetLoadFields("No.", "Inventory"); // Too late
279
- ProcessTableItem(Item."No.", Item.Inventory);
280
- end;
281
- end;
282
- until Item.Next() = 0;
283
- EndTime := CurrentDateTime();
284
- Message('Inefficient approach: %1 ms', EndTime - StartTime);
285
-
286
- // Scenario 2: SetLoadFields before case statement evaluation (efficient)
287
- StartTime := CurrentDateTime();
288
- Item.Reset();
289
- Item.SetLoadFields("Item Category Code", "No.", "Unit Price", "Inventory"); // Before case evaluation
290
- Item.SetRange("Item Category Code", 'CHAIR');
291
-
292
- if Item.FindSet() then
293
- repeat
294
- // Item Category Code already loaded efficiently
295
- case Item."Item Category Code" of
296
- 'CHAIR':
297
- ProcessChairItem(Item."No.", Item."Unit Price");
298
- 'TABLE':
299
- ProcessTableItem(Item."No.", Item.Inventory);
300
- end;
301
- until Item.Next() = 0;
302
- EndTime := CurrentDateTime();
303
- Message('Efficient approach: %1 ms', EndTime - StartTime);
304
- end;
305
-
306
- local procedure ProcessChairItem(ItemNo: Code[20]; UnitPrice: Decimal)
307
- begin
308
- // Process chair item
309
- end;
310
-
311
- local procedure ProcessTableItem(ItemNo: Code[20]; Inventory: Decimal)
312
- begin
313
- // Process table item
314
- end;
315
- }
316
- ```
@@ -1,223 +0,0 @@
1
- # SetLoadFields Placement Before Filters - AL Code Samples
2
-
3
- ## Basic Before Filter Placement
4
- ```al
5
- codeunit 50300 "Before Filter Placement"
6
- {
7
- procedure CorrectPlacementExample()
8
- var
9
- SalesHeader: Record "Sales Header";
10
- begin
11
- // CORRECT: SetLoadFields called before any filters
12
- SalesHeader.SetLoadFields("No.", "Sell-to Customer Name", "Amount Including VAT");
13
-
14
- // Filters applied after SetLoadFields
15
- SalesHeader.SetRange("Sell-to Customer No.", '10000', '50000');
16
- SalesHeader.SetRange("Document Date", WorkDate() - 30, WorkDate());
17
- SalesHeader.SetRange(Status, SalesHeader.Status::Open);
18
-
19
- if SalesHeader.FindSet() then
20
- repeat
21
- ProcessOrder(SalesHeader."No.", SalesHeader."Sell-to Customer Name", SalesHeader."Amount Including VAT");
22
- until SalesHeader.Next() = 0;
23
- end;
24
-
25
- procedure IncorrectPlacementExample()
26
- var
27
- SalesHeader: Record "Sales Header";
28
- begin
29
- // INCORRECT: Filters applied before SetLoadFields
30
- SalesHeader.SetRange("Sell-to Customer No.", '10000', '50000');
31
- SalesHeader.SetRange("Document Date", WorkDate() - 30, WorkDate());
32
-
33
- // SetLoadFields called after filters - may not be fully effective
34
- SalesHeader.SetLoadFields("No.", "Sell-to Customer Name", "Amount Including VAT");
35
- SalesHeader.SetRange(Status, SalesHeader.Status::Open);
36
-
37
- if SalesHeader.FindSet() then
38
- repeat
39
- ProcessOrder(SalesHeader."No.", SalesHeader."Sell-to Customer Name", SalesHeader."Amount Including VAT");
40
- until SalesHeader.Next() = 0;
41
- end;
42
-
43
- procedure MultipleFilterSetExample()
44
- var
45
- Item: Record Item;
46
- begin
47
- // SetLoadFields must be first, before any filtering operations
48
- Item.SetLoadFields("No.", "Description", "Unit Price", "Inventory");
49
-
50
- // Multiple filter operations - all after SetLoadFields
51
- Item.SetRange("No.", '1000', '9999');
52
- Item.SetFilter("Last Date Modified", '>=%1', CalcDate('-6M', WorkDate()));
53
- Item.SetFilter("Item Category Code", 'CHAIR|TABLE|DESK');
54
- Item.SetFilter("Unit Price", '>=%1', 50);
55
-
56
- if Item.FindSet() then
57
- repeat
58
- ProcessInventoryItem(Item."No.", Item.Description, Item."Unit Price", Item.Inventory);
59
- until Item.Next() = 0;
60
- end;
61
-
62
- local procedure ProcessOrder(OrderNo: Code[20]; CustomerName: Text[100]; Amount: Decimal)
63
- begin
64
- // Process order data
65
- end;
66
-
67
- local procedure ProcessInventoryItem(ItemNo: Code[20]; Description: Text[100]; UnitPrice: Decimal; Inventory: Decimal)
68
- begin
69
- // Process inventory item
70
- end;
71
- }
72
- ```
73
-
74
- ## Advanced Placement Patterns
75
- ```al
76
- codeunit 50301 "Advanced Filter Placement"
77
- {
78
- procedure ConditionalFilteringExample(CustomerNo: Code[20]; IncludeShipped: Boolean)
79
- var
80
- SalesHeader: Record "Sales Header";
81
- begin
82
- // SetLoadFields always first, regardless of conditional logic
83
- SalesHeader.SetLoadFields("No.", "Sell-to Customer Name", "Amount Including VAT", "Shipment Date");
84
-
85
- // Base filters
86
- SalesHeader.SetRange("Sell-to Customer No.", CustomerNo);
87
- SalesHeader.SetRange("Document Date", WorkDate() - 90, WorkDate());
88
-
89
- // Conditional filters - still after SetLoadFields
90
- if not IncludeShipped then
91
- SalesHeader.SetRange("Completely Shipped", false);
92
-
93
- if SalesHeader.FindSet() then
94
- repeat
95
- ProcessCustomerOrder(SalesHeader."No.", SalesHeader."Sell-to Customer Name",
96
- SalesHeader."Amount Including VAT", SalesHeader."Shipment Date");
97
- until SalesHeader.Next() = 0;
98
- end;
99
-
100
- procedure ResetAndRefilterExample()
101
- var
102
- Customer: Record Customer;
103
- begin
104
- // Initial setup with SetLoadFields first
105
- Customer.SetLoadFields("No.", "Name", "Credit Limit (LCY)");
106
- Customer.SetRange("No.", '10000', '30000');
107
-
108
- ProcessCustomerSet(Customer, 'First batch');
109
-
110
- // When resetting filters, SetLoadFields should be called again if changing field selection
111
- Customer.Reset();
112
- Customer.SetLoadFields("No.", "Name", "Phone No."); // Different fields
113
- Customer.SetRange("No.", '40000', '60000');
114
-
115
- ProcessCustomerSet(Customer, 'Second batch');
116
- end;
117
-
118
- procedure DynamicFilteringExample()
119
- var
120
- Item: Record Item;
121
- FilterCategoryCode: Code[20];
122
- FilterBlocked: Boolean;
123
- i: Integer;
124
- begin
125
- // SetLoadFields established before any dynamic filtering
126
- Item.SetLoadFields("No.", "Description", "Item Category Code", "Unit Price");
127
-
128
- // Dynamic filtering loop - filters change but SetLoadFields remains effective
129
- for i := 1 to 3 do begin
130
- case i of
131
- 1: FilterCategoryCode := 'CHAIR';
132
- 2: FilterCategoryCode := 'TABLE';
133
- 3: FilterCategoryCode := 'DESK';
134
- end;
135
- FilterBlocked := i mod 2 = 0; // Alternate blocked status
136
-
137
- Item.Reset();
138
- Item.SetRange("Item Category Code", FilterCategoryCode);
139
- Item.SetRange(Blocked, FilterBlocked);
140
-
141
- ProcessItemSet(Item, StrSubstNo('Category %1', FilterCategoryCode));
142
- end;
143
- end;
144
-
145
- local procedure ProcessCustomerOrder(OrderNo: Code[20]; CustomerName: Text[100]; Amount: Decimal; ShipmentDate: Date)
146
- begin
147
- // Process customer order
148
- end;
149
-
150
- local procedure ProcessCustomerSet(var Customer: Record Customer; BatchName: Text)
151
- begin
152
- if Customer.FindSet() then
153
- repeat
154
- // Process customer based on loaded fields
155
- Message('Processing %1: Customer %2', BatchName, Customer."No.");
156
- until Customer.Next() = 0;
157
- end;
158
-
159
- local procedure ProcessItemSet(var Item: Record Item; BatchName: Text)
160
- begin
161
- if Item.FindSet() then
162
- repeat
163
- // Process item based on loaded fields
164
- Message('Processing %1: Item %2 - %3', BatchName, Item."No.", Item.Description);
165
- until Item.Next() = 0;
166
- end;
167
- }
168
- ```
169
-
170
- ## Common Placement Mistakes
171
- ```al
172
- codeunit 50302 "Filter Placement Mistakes"
173
- {
174
- procedure MistakeExample_FiltersFirst()
175
- var
176
- Customer: Record Customer;
177
- begin
178
- // MISTAKE: Applying filters before SetLoadFields
179
- Customer.SetRange("No.", '10000');
180
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
181
-
182
- // SetLoadFields less effective when called after filters
183
- Customer.SetLoadFields("No.", "Name", "Credit Limit (LCY)");
184
-
185
- // This works but is suboptimal
186
- if Customer.FindSet() then
187
- repeat
188
- ProcessCustomer(Customer."No.", Customer.Name, Customer."Credit Limit (LCY)");
189
- until Customer.Next() = 0;
190
- end;
191
-
192
- procedure BestPracticePattern()
193
- var
194
- Customer: Record Customer;
195
- begin
196
- // BEST PRACTICE: Clear separation of concerns
197
- // 1. Field loading configuration
198
- Customer.SetLoadFields("No.", "Name", "Credit Limit (LCY)", "Phone No.");
199
-
200
- // 2. Data filtering
201
- Customer.SetRange("No.", '10000', '50000');
202
- Customer.SetFilter("Last Date Modified", '>=%1', CalcDate('-3M', WorkDate()));
203
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
204
-
205
- // 3. Data processing
206
- if Customer.FindSet() then
207
- repeat
208
- ProcessCustomerWithPhone(Customer."No.", Customer.Name,
209
- Customer."Credit Limit (LCY)", Customer."Phone No.");
210
- until Customer.Next() = 0;
211
- end;
212
-
213
- local procedure ProcessCustomer(CustomerNo: Code[20]; Name: Text[100]; CreditLimit: Decimal)
214
- begin
215
- // Process basic customer data
216
- end;
217
-
218
- local procedure ProcessCustomerWithPhone(CustomerNo: Code[20]; Name: Text[100]; CreditLimit: Decimal; PhoneNo: Text[30])
219
- begin
220
- // Process customer with phone information
221
- end;
222
- }
223
- ```
@@ -1,149 +0,0 @@
1
- # SetLoadFields Filter Field Exclusion - AL Code Samples
2
-
3
- ## Basic Filter Field Exclusion
4
- ```al
5
- codeunit 50200 "Filter Field Exclusion Examples"
6
- {
7
- procedure ExcludeFilterFieldsBasic()
8
- var
9
- Customer: Record Customer;
10
- begin
11
- // Exclude filter fields from loading - they're used for filtering only
12
- Customer.SetLoadFields("Name", "Credit Limit (LCY)", "Phone No.");
13
-
14
- // Filter fields (No., Customer Posting Group) not loaded - filtering uses cached values
15
- Customer.SetRange("No.", '10000', '20000');
16
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
17
- Customer.SetRange("Blocked", Customer.Blocked::" ");
18
-
19
- if Customer.FindSet() then
20
- repeat
21
- // Only non-filter fields loaded, improving performance
22
- ProcessCustomerData(Customer.Name, Customer."Credit Limit (LCY)", Customer."Phone No.");
23
- until Customer.Next() = 0;
24
- end;
25
-
26
- procedure ComplexFilterExclusion()
27
- var
28
- Item: Record Item;
29
- begin
30
- // Complex filtering scenario - exclude all filter fields from loading
31
- Item.SetLoadFields("Description", "Unit Price", "Inventory");
32
-
33
- // Multiple filter fields - all excluded from SetLoadFields
34
- Item.SetRange("No.", '1000', '9999');
35
- Item.SetFilter("Item Category Code", 'CHAIR|TABLE|DESK');
36
- Item.SetRange("Blocked", false);
37
- Item.SetFilter("Unit Price", '>%1', 100);
38
- Item.SetRange("Type", Item.Type::Inventory);
39
-
40
- if Item.FindSet() then
41
- repeat
42
- // Filter fields available for validation but not loaded from database
43
- if ShouldProcessItem(Item."No.", Item."Item Category Code") then
44
- ProcessItemData(Item.Description, Item."Unit Price", Item.Inventory);
45
- until Item.Next() = 0;
46
- end;
47
-
48
- procedure ConditionalFilterExclusion(IncludeFilterFields: Boolean)
49
- var
50
- SalesLine: Record "Sales Line";
51
- begin
52
- if IncludeFilterFields then
53
- // When filter fields needed for processing, include them
54
- SalesLine.SetLoadFields("Document No.", "Line No.", "Type", "No.", "Quantity", "Unit Price")
55
- else
56
- // When filter fields not needed for processing, exclude them
57
- SalesLine.SetLoadFields("Quantity", "Unit Price");
58
-
59
- SalesLine.SetRange("Document Type", SalesLine."Document Type"::Order);
60
- SalesLine.SetRange("Document No.", 'SO001');
61
- SalesLine.SetRange("Type", SalesLine.Type::Item);
62
-
63
- if SalesLine.FindSet() then
64
- repeat
65
- if IncludeFilterFields then
66
- ProcessWithFilterData(SalesLine."Document No.", SalesLine."No.", SalesLine.Quantity)
67
- else
68
- ProcessWithoutFilterData(SalesLine.Quantity, SalesLine."Unit Price");
69
- until SalesLine.Next() = 0;
70
- end;
71
-
72
- local procedure ProcessCustomerData(Name: Text[100]; CreditLimit: Decimal; PhoneNo: Text[30])
73
- begin
74
- // Process loaded customer data
75
- end;
76
-
77
- local procedure ShouldProcessItem(ItemNo: Code[20]; CategoryCode: Code[20]): Boolean
78
- begin
79
- exit((ItemNo <> '') and (CategoryCode <> ''));
80
- end;
81
-
82
- local procedure ProcessItemData(Description: Text[100]; UnitPrice: Decimal; Inventory: Decimal)
83
- begin
84
- // Process non-filter item data
85
- end;
86
-
87
- local procedure ProcessWithFilterData(DocumentNo: Code[20]; ItemNo: Code[20]; Quantity: Decimal)
88
- begin
89
- // Process including filter field data
90
- end;
91
-
92
- local procedure ProcessWithoutFilterData(Quantity: Decimal; UnitPrice: Decimal)
93
- begin
94
- // Process excluding filter field data
95
- end;
96
- }
97
- ```
98
-
99
- ## Performance Impact Examples
100
- ```al
101
- codeunit 50201 "Filter Exclusion Performance"
102
- {
103
- procedure DemonstratePerformanceImpact()
104
- var
105
- Customer: Record Customer;
106
- StartTime: DateTime;
107
- EndTime: DateTime;
108
- begin
109
- // Scenario 1: Including filter fields unnecessarily
110
- StartTime := CurrentDateTime();
111
- Customer.SetLoadFields(); // Loads all fields including filters
112
- Customer.SetRange("No.", '10000', '50000');
113
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
114
-
115
- if Customer.FindSet() then
116
- repeat
117
- // Only using non-filter fields but all were loaded
118
- ProcessCustomerSales(Customer.Name, Customer."Credit Limit (LCY)");
119
- until Customer.Next() = 0;
120
- EndTime := CurrentDateTime();
121
- LogPerformance('With filter fields loaded', EndTime - StartTime);
122
-
123
- // Scenario 2: Excluding filter fields appropriately
124
- StartTime := CurrentDateTime();
125
- Customer.Reset();
126
- Customer.SetLoadFields("Name", "Credit Limit (LCY)"); // Exclude filter fields
127
- Customer.SetRange("No.", '10000', '50000');
128
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
129
-
130
- if Customer.FindSet() then
131
- repeat
132
- // Only non-filter fields loaded, better performance
133
- ProcessCustomerSales(Customer.Name, Customer."Credit Limit (LCY)");
134
- until Customer.Next() = 0;
135
- EndTime := CurrentDateTime();
136
- LogPerformance('With filter fields excluded', EndTime - StartTime);
137
- end;
138
-
139
- local procedure ProcessCustomerSales(Name: Text[100]; CreditLimit: Decimal)
140
- begin
141
- // Process customer sales data
142
- end;
143
-
144
- local procedure LogPerformance(Scenario: Text; Duration: Duration)
145
- begin
146
- Message('%1: %2 ms', Scenario, Duration);
147
- end;
148
- }
149
- ```