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,412 +0,0 @@
1
- # SetLoadFields Performance Optimization - AL Code Examples
2
-
3
- ## Basic SetLoadFields Implementation
4
-
5
- ```al
6
- // Optimized: Load only required fields
7
- procedure GetCustomerNameOptimized(CustomerNo: Code[20]): Text[100]
8
- var
9
- Customer: Record Customer;
10
- begin
11
- Customer.SetLoadFields(Name);
12
- if Customer.Get(CustomerNo) then
13
- exit(Customer.Name);
14
- exit('');
15
- end;
16
-
17
- // Non-optimized: Loads all fields
18
- procedure GetCustomerNameUnoptimized(CustomerNo: Code[20]): Text[100]
19
- var
20
- Customer: Record Customer;
21
- begin
22
- if Customer.Get(CustomerNo) then
23
- exit(Customer.Name);
24
- exit('');
25
- end;
26
- ```
27
-
28
- ## Bulk Operations Optimization
29
-
30
- ```al
31
- procedure ProcessCustomerListOptimized()
32
- var
33
- Customer: Record Customer;
34
- ProcessedCount: Integer;
35
- begin
36
- Customer.SetLoadFields("No.", Name, "Customer Posting Group", Blocked);
37
-
38
- if Customer.FindSet() then
39
- repeat
40
- if not Customer.Blocked then begin
41
- ProcessCustomerRecord(Customer."No.", Customer.Name, Customer."Customer Posting Group");
42
- ProcessedCount += 1;
43
- end;
44
- until Customer.Next() = 0;
45
-
46
- Message('Processed %1 customers with optimized field loading', ProcessedCount);
47
- end;
48
-
49
- procedure ProcessCustomerListUnoptimized()
50
- var
51
- Customer: Record Customer;
52
- ProcessedCount: Integer;
53
- begin
54
- if Customer.FindSet() then
55
- repeat
56
- if not Customer.Blocked then begin
57
- ProcessCustomerRecord(Customer."No.", Customer.Name, Customer."Customer Posting Group");
58
- ProcessedCount += 1;
59
- end;
60
- until Customer.Next() = 0;
61
-
62
- Message('Processed %1 customers with full field loading', ProcessedCount);
63
- end;
64
- ```
65
-
66
- ## Report Generation with Selective Loading
67
-
68
- ```al
69
- procedure GenerateCustomerReportOptimized()
70
- var
71
- Customer: Record Customer;
72
- ReportData: JsonObject;
73
- CustomerArray: JsonArray;
74
- CustomerJson: JsonObject;
75
- begin
76
- Customer.SetLoadFields("No.", Name, "Phone No.", "E-Mail", "Country/Region Code", "Credit Limit (LCY)");
77
-
78
- if Customer.FindSet() then
79
- repeat
80
- Clear(CustomerJson);
81
- CustomerJson.Add('number', Customer."No.");
82
- CustomerJson.Add('name', Customer.Name);
83
- CustomerJson.Add('phone', Customer."Phone No.");
84
- CustomerJson.Add('email', Customer."E-Mail");
85
- CustomerJson.Add('country', Customer."Country/Region Code");
86
- CustomerJson.Add('creditLimit', Customer."Credit Limit (LCY)");
87
- CustomerArray.Add(CustomerJson);
88
- until Customer.Next() = 0;
89
-
90
- ReportData.Add('customers', CustomerArray);
91
- end;
92
- ```
93
-
94
- ## Advanced Memory Optimization
95
-
96
- ```al
97
- procedure ProcessSalesOrdersWithItems()
98
- var
99
- SalesHeader: Record "Sales Header";
100
- SalesLine: Record "Sales Line";
101
- OrderCount: Integer;
102
- LineCount: Integer;
103
- begin
104
- SalesHeader.SetLoadFields("No.", "Sell-to Customer No.", "Order Date", "Amount Including VAT");
105
- SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Order);
106
-
107
- if SalesHeader.FindSet() then
108
- repeat
109
- OrderCount += 1;
110
-
111
- SalesLine.SetLoadFields("Document No.", "Line No.", "No.", Quantity, "Unit Price", "Line Amount");
112
- SalesLine.SetRange("Document Type", SalesLine."Document Type"::Order);
113
- SalesLine.SetRange("Document No.", SalesHeader."No.");
114
-
115
- if SalesLine.FindSet() then
116
- repeat
117
- LineCount += 1;
118
- ProcessSalesLineData(SalesLine."No.", SalesLine.Quantity, SalesLine."Unit Price");
119
- until SalesLine.Next() = 0;
120
-
121
- until SalesHeader.Next() = 0;
122
-
123
- Message('Processed %1 orders with %2 lines using optimized field loading', OrderCount, LineCount);
124
- end;
125
- ```
126
-
127
- ## Conditional Field Loading
128
-
129
- ```al
130
- procedure ProcessCustomersConditional(IncludeFinancialData: Boolean; IncludeContactData: Boolean)
131
- var
132
- Customer: Record Customer;
133
- FieldList: List of [Integer];
134
- begin
135
- FieldList.Add(Customer.FieldNo("No."));
136
- FieldList.Add(Customer.FieldNo(Name));
137
-
138
- if IncludeFinancialData then begin
139
- FieldList.Add(Customer.FieldNo("Credit Limit (LCY)"));
140
- FieldList.Add(Customer.FieldNo("Balance (LCY)"));
141
- FieldList.Add(Customer.FieldNo("Sales (LCY)"));
142
- end;
143
-
144
- if IncludeContactData then begin
145
- FieldList.Add(Customer.FieldNo("Phone No."));
146
- FieldList.Add(Customer.FieldNo("E-Mail"));
147
- FieldList.Add(Customer.FieldNo("Contact"));
148
- end;
149
-
150
- Customer.SetLoadFields(FieldList);
151
-
152
- if Customer.FindSet() then
153
- repeat
154
- ProcessCustomerConditionally(Customer, IncludeFinancialData, IncludeContactData);
155
- until Customer.Next() = 0;
156
- end;
157
- ```
158
-
159
- ## Performance Comparison
160
-
161
- ```al
162
- procedure CompareMemoryUsage()
163
- var
164
- Customer: Record Customer;
165
- StartTime: DateTime;
166
- EndTime: DateTime;
167
- RecordCount: Integer;
168
- begin
169
- // Test 1: With SetLoadFields optimization
170
- StartTime := CurrentDateTime;
171
- Customer.SetLoadFields("No.", Name);
172
- if Customer.FindSet() then
173
- repeat
174
- RecordCount += 1;
175
- ProcessBasicCustomerInfo(Customer."No.", Customer.Name);
176
- until Customer.Next() = 0;
177
- EndTime := CurrentDateTime;
178
-
179
- Message('Optimized: Processed %1 records in %2 ms', RecordCount, EndTime - StartTime);
180
-
181
- // Test 2: Without SetLoadFields
182
- Clear(Customer);
183
- RecordCount := 0;
184
- StartTime := CurrentDateTime;
185
- if Customer.FindSet() then
186
- repeat
187
- RecordCount += 1;
188
- ProcessBasicCustomerInfo(Customer."No.", Customer.Name);
189
- until Customer.Next() = 0;
190
- EndTime := CurrentDateTime;
191
-
192
- Message('Unoptimized: Processed %1 records in %2 ms', RecordCount, EndTime - StartTime);
193
- end;
194
- ```
195
-
196
- ## Query Efficiency Demonstration
197
-
198
- ```al
199
- procedure DemonstrateQueryEfficiency()
200
- var
201
- Item: Record Item;
202
- ItemCount: Integer;
203
- FilteredCount: Integer;
204
- begin
205
- Item.SetLoadFields("No.", Description, "Unit Price", "Inventory Posting Group", Blocked);
206
- Item.SetFilter("Unit Price", '>%1', 100);
207
- Item.SetRange(Blocked, false);
208
-
209
- if Item.FindSet() then
210
- repeat
211
- ItemCount += 1;
212
- if StrPos(Item.Description, 'PREMIUM') > 0 then begin
213
- FilteredCount += 1;
214
- ProcessPremiumItem(Item."No.", Item.Description, Item."Unit Price");
215
- end;
216
- until Item.Next() = 0;
217
-
218
- Message('Found %1 premium items from %2 total items using optimized loading', FilteredCount, ItemCount);
219
- end;
220
- ```
221
-
222
- ## Anti-Pattern Examples
223
-
224
- ```al
225
- // ❌ ANTI-PATTERN: Loading unnecessary fields
226
- procedure AntiPatternUnnecessaryFields()
227
- var
228
- Customer: Record Customer;
229
- begin
230
- Customer.SetLoadFields("No.", Name, "Phone No.", "E-Mail", "Address", "City",
231
- "Credit Limit (LCY)", "Balance (LCY)", "Sales (LCY)");
232
-
233
- if Customer.FindSet() then
234
- repeat
235
- ProcessBasicCustomerInfo(Customer."No.", Customer.Name);
236
- until Customer.Next() = 0;
237
- end;
238
-
239
- // ❌ ANTI-PATTERN: Not using SetLoadFields in loops
240
- procedure AntiPatternNoOptimizationInLoops()
241
- var
242
- SalesHeader: Record "Sales Header";
243
- Customer: Record Customer;
244
- begin
245
- if SalesHeader.FindSet() then
246
- repeat
247
- if Customer.Get(SalesHeader."Sell-to Customer No.") then
248
- ProcessCustomerInOrder(Customer.Name, Customer."Credit Limit (LCY)");
249
- until SalesHeader.Next() = 0;
250
- end;
251
-
252
- // ✅ CORRECTED: Proper SetLoadFields usage
253
- procedure CorrectedOptimizationInLoops()
254
- var
255
- SalesHeader: Record "Sales Header";
256
- Customer: Record Customer;
257
- begin
258
- SalesHeader.SetLoadFields("No.", "Sell-to Customer No.");
259
-
260
- if SalesHeader.FindSet() then
261
- repeat
262
- Customer.SetLoadFields(Name, "Credit Limit (LCY)");
263
- if Customer.Get(SalesHeader."Sell-to Customer No.") then
264
- ProcessCustomerInOrder(Customer.Name, Customer."Credit Limit (LCY)");
265
- until SalesHeader.Next() = 0;
266
- end;
267
- ```
268
-
269
- ## Performance Impact Measurement
270
-
271
- ```al
272
- procedure MeasureAntiPatternImpact()
273
- var
274
- Item: Record Item;
275
- ItemLedgerEntry: Record "Item Ledger Entry";
276
- StartTime: DateTime;
277
- EndTime: DateTime;
278
- EntryCount: Integer;
279
- begin
280
- StartTime := CurrentDateTime;
281
-
282
- if ItemLedgerEntry.FindSet() then
283
- repeat
284
- EntryCount += 1;
285
- if Item.Get(ItemLedgerEntry."Item No.") then begin
286
- ProcessItemLedgerWithDescription(ItemLedgerEntry."Entry No.", Item.Description);
287
- end;
288
- until (ItemLedgerEntry.Next() = 0) or (EntryCount > 1000);
289
-
290
- EndTime := CurrentDateTime;
291
- Message('Anti-pattern: Processed %1 entries in %2 ms', EntryCount, EndTime - StartTime);
292
-
293
- ProcessItemLedgerOptimized();
294
- end;
295
-
296
- local procedure ProcessItemLedgerOptimized()
297
- var
298
- Item: Record Item;
299
- ItemLedgerEntry: Record "Item Ledger Entry";
300
- StartTime: DateTime;
301
- EndTime: DateTime;
302
- EntryCount: Integer;
303
- begin
304
- StartTime := CurrentDateTime;
305
-
306
- ItemLedgerEntry.SetLoadFields("Entry No.", "Item No.");
307
- Item.SetLoadFields(Description);
308
-
309
- if ItemLedgerEntry.FindSet() then
310
- repeat
311
- EntryCount += 1;
312
- if Item.Get(ItemLedgerEntry."Item No.") then
313
- ProcessItemLedgerWithDescription(ItemLedgerEntry."Entry No.", Item.Description);
314
- until (ItemLedgerEntry.Next() = 0) or (EntryCount > 1000);
315
-
316
- EndTime := CurrentDateTime;
317
- Message('Optimized: Processed %1 entries in %2 ms', EntryCount, EndTime - StartTime);
318
- end;
319
- ```
320
-
321
- ## Best Practice Implementation
322
-
323
- ```al
324
- procedure BestPracticeImplementation()
325
- var
326
- Customer: Record Customer;
327
- ProcessedCount: Integer;
328
- ErrorCount: Integer;
329
- begin
330
- Customer.SetLoadFields("No.", Name, "Customer Posting Group", Blocked);
331
-
332
- if Customer.FindSet() then
333
- repeat
334
- if ProcessCustomerSafely(Customer) then
335
- ProcessedCount += 1
336
- else
337
- ErrorCount += 1;
338
- until Customer.Next() = 0;
339
-
340
- if ErrorCount > 0 then
341
- Message('Processed %1 customers successfully, %2 errors encountered', ProcessedCount, ErrorCount);
342
- end;
343
-
344
- local procedure ProcessCustomerSafely(Customer: Record Customer): Boolean
345
- begin
346
- if (Customer."No." = '') or (Customer.Name = '') then
347
- exit(false);
348
-
349
- if Customer.Blocked then
350
- exit(true);
351
-
352
- ProcessBasicCustomerInfo(Customer."No.", Customer.Name);
353
- exit(true);
354
- end;
355
- ```
356
-
357
- ## Dynamic Field Loading
358
-
359
- ```al
360
- procedure DynamicFieldLoading(ProcessingMode: Option Basic,Extended,Full)
361
- var
362
- Customer: Record Customer;
363
- FieldsToLoad: List of [Integer];
364
- begin
365
- FieldsToLoad.Add(Customer.FieldNo("No."));
366
- FieldsToLoad.Add(Customer.FieldNo(Name));
367
-
368
- case ProcessingMode of
369
- ProcessingMode::Extended:
370
- begin
371
- FieldsToLoad.Add(Customer.FieldNo("Phone No."));
372
- FieldsToLoad.Add(Customer.FieldNo("E-Mail"));
373
- end;
374
- ProcessingMode::Full:
375
- begin
376
- FieldsToLoad.Add(Customer.FieldNo("Phone No."));
377
- FieldsToLoad.Add(Customer.FieldNo("E-Mail"));
378
- FieldsToLoad.Add(Customer.FieldNo("Credit Limit (LCY)"));
379
- FieldsToLoad.Add(Customer.FieldNo("Balance (LCY)"));
380
- end;
381
- end;
382
-
383
- Customer.SetLoadFields(FieldsToLoad);
384
-
385
- if Customer.FindSet() then
386
- repeat
387
- ProcessCustomerByMode(Customer, ProcessingMode);
388
- until Customer.Next() = 0;
389
- end;
390
- ```
391
-
392
- ## Performance Guidelines Summary
393
-
394
- ### Implementation Strategy
395
- 1. **Analyze field usage** before applying SetLoadFields
396
- 2. **Load minimal field sets** required for processing
397
- 3. **Apply early** - call SetLoadFields immediately after record declaration
398
- 4. **Measure impact** - validate performance improvements
399
- 5. **Document rationale** - explain field selection decisions
400
-
401
- ### Memory Optimization Benefits
402
- - 70-90% memory reduction for large recordsets
403
- - Improved garbage collection performance
404
- - Better system scalability with reduced memory pressure
405
- - Faster record processing with smaller data structures
406
-
407
- ### Common Mistakes to Avoid
408
- 1. Loading fields "just in case" without actual usage
409
- 2. Forgetting SetLoadFields in nested record lookups
410
- 3. Excluding primary key fields needed for record operations
411
- 4. Applying optimization to small datasets where overhead exceeds benefits
412
- 5. Not measuring actual performance improvement
@@ -1,211 +0,0 @@
1
- # SetLoadFields Performance Optimization - AL Examples
2
-
3
- ## Basic Usage Pattern
4
-
5
- ```al
6
- codeunit 50100 "SetLoadFields Examples"
7
- {
8
- // Basic SetLoadFields usage for loading only needed fields
9
- procedure GetCustomerNameAndPhone(CustomerNo: Code[20]): Text
10
- var
11
- Customer: Record Customer;
12
- Result: Text;
13
- begin
14
- Customer.Get(CustomerNo);
15
-
16
- // Load only the fields we actually need
17
- Customer.SetLoadFields(Name, "Phone No.");
18
- Customer.Find(); // Refresh with partial loading
19
-
20
- Result := Customer.Name + ' - ' + Customer."Phone No.";
21
- exit(Result);
22
- end;
23
- }
24
- ```
25
-
26
- ## Performance Impact Demonstration
27
-
28
- ### Before: Full Record Loading
29
- ```al
30
- // Traditional approach - loads all 100+ fields from Customer table
31
- procedure ProcessCustomerListSlow()
32
- var
33
- Customer: Record Customer;
34
- ProcessedCount: Integer;
35
- begin
36
- // This loads ALL fields for each customer record
37
- // Network overhead: ~8KB per record for full Customer table
38
- // Memory usage: Significant for large datasets
39
- if Customer.FindSet() then
40
- repeat
41
- // Only using Name and "No." but loaded entire record
42
- if Customer.Name <> '' then
43
- ProcessedCount += 1;
44
- until Customer.Next() = 0;
45
-
46
- Message('Processed %1 customers (slow method)', ProcessedCount);
47
- end;
48
- ```
49
-
50
- ### After: Optimized with SetLoadFields
51
- ```al
52
- // Optimized approach - loads only required fields
53
- procedure ProcessCustomerListFast()
54
- var
55
- Customer: Record Customer;
56
- ProcessedCount: Integer;
57
- begin
58
- // Load only the fields we actually use
59
- Customer.SetLoadFields("No.", Name);
60
-
61
- // Network overhead: ~50 bytes per record (vs 8KB)
62
- // Memory usage: 99% reduction for this scenario
63
- // Performance gain: 10-50x faster depending on table size
64
- if Customer.FindSet() then
65
- repeat
66
- if Customer.Name <> '' then
67
- ProcessedCount += 1;
68
- until Customer.Next() = 0;
69
-
70
- Message('Processed %1 customers (fast method)', ProcessedCount);
71
- end;
72
- ```
73
-
74
- ## Anti-Pattern: Field Access After SetLoadFields
75
-
76
- ```al
77
- // WRONG: Accessing fields not included in SetLoadFields
78
- procedure CustomerAnalysisAntiPattern(CustomerNo: Code[20])
79
- var
80
- Customer: Record Customer;
81
- begin
82
- Customer.Get(CustomerNo);
83
-
84
- // Only load basic fields
85
- Customer.SetLoadFields("No.", Name);
86
- Customer.Find();
87
-
88
- // BAD: Accessing field not in SetLoadFields causes additional database hit
89
- // This negates the performance benefit and adds overhead
90
- if Customer."Credit Limit (LCY)" > 0 then // Database hit here!
91
- Message('Customer %1 has credit limit', Customer.Name);
92
-
93
- // WORSE: Multiple unloaded field accesses = multiple database hits
94
- Customer."Phone No."; // Database hit!
95
- Customer."E-Mail"; // Another database hit!
96
- Customer."VAT Registration No."; // Yet another database hit!
97
- end;
98
-
99
- // CORRECT: Include all needed fields in SetLoadFields
100
- procedure CustomerAnalysisCorrectPattern(CustomerNo: Code[20])
101
- var
102
- Customer: Record Customer;
103
- begin
104
- Customer.Get(CustomerNo);
105
-
106
- // Load ALL fields we plan to use
107
- Customer.SetLoadFields("No.", Name, "Credit Limit (LCY)", "Phone No.", "E-Mail", "VAT Registration No.");
108
- Customer.Find();
109
-
110
- // Now all field accesses are served from memory - no additional database hits
111
- if Customer."Credit Limit (LCY)" > 0 then
112
- Message('Customer %1 (%2) has credit limit. Contact: %3',
113
- Customer.Name, Customer."VAT Registration No.", Customer."E-Mail");
114
- end;
115
- ```
116
-
117
- ## Batch Processing Optimization
118
-
119
- ```al
120
- // SetLoadFields optimization for processing large datasets
121
- procedure OptimizeBatchCustomerUpdate()
122
- var
123
- Customer: Record Customer;
124
- SalesHeader: Record "Sales Header";
125
- UpdateCount: Integer;
126
- begin
127
- // Scenario: Update customer last sale date based on sales orders
128
- // Performance critical when processing thousands of records
129
-
130
- // Step 1: Optimize customer record loading
131
- Customer.SetLoadFields("No.", "Last Date Modified");
132
-
133
- if Customer.FindSet(true) then // Modifiable RecordSet
134
- repeat
135
- // Step 2: Optimize sales header lookup - only need posting date
136
- SalesHeader.SetRange("Sell-to Customer No.", Customer."No.");
137
- SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Order);
138
- SalesHeader.SetLoadFields("Posting Date");
139
-
140
- if SalesHeader.FindLast() then begin
141
- // Only modify if there's an actual change
142
- if Customer."Last Date Modified" <> SalesHeader."Posting Date" then begin
143
- Customer."Last Date Modified" := SalesHeader."Posting Date";
144
- Customer.Modify(); // Only updates loaded fields + modified fields
145
- UpdateCount += 1;
146
- end;
147
- end;
148
- until Customer.Next() = 0;
149
-
150
- Message('Updated %1 customer records', UpdateCount);
151
- end;
152
- ```
153
-
154
- ## Performance Monitoring Example
155
-
156
- ```al
157
- // Measure SetLoadFields impact
158
- procedure MeasureSetLoadFieldsImpact()
159
- var
160
- Customer: Record Customer;
161
- StartTime: DateTime;
162
- EndTime: DateTime;
163
- RecordCount: Integer;
164
- begin
165
- // Test 1: Traditional full record loading
166
- StartTime := CurrentDateTime;
167
- RecordCount := 0;
168
-
169
- if Customer.FindSet() then
170
- repeat
171
- RecordCount += 1;
172
- until Customer.Next() = 0;
173
-
174
- EndTime := CurrentDateTime;
175
- Message('Full loading: %1 records in %2ms', RecordCount, EndTime - StartTime);
176
-
177
- // Test 2: Optimized with SetLoadFields
178
- StartTime := CurrentDateTime;
179
- RecordCount := 0;
180
- Customer.Reset();
181
- Customer.SetLoadFields("No."); // Minimal field loading
182
-
183
- if Customer.FindSet() then
184
- repeat
185
- RecordCount += 1;
186
- until Customer.Next() = 0;
187
-
188
- EndTime := CurrentDateTime;
189
- Message('SetLoadFields: %1 records in %2ms', RecordCount, EndTime - StartTime);
190
-
191
- // Typical results: 70-90% performance improvement for large datasets
192
- end;
193
- ```
194
-
195
- **Performance Guidelines:**
196
-
197
- 1. **SetLoadFields Benefits**:
198
- - Network traffic reduction: 80-95% for wide tables
199
- - Memory usage reduction: Proportional to excluded fields
200
- - Query performance: Faster due to less data transfer
201
-
202
- 2. **Best Practices**:
203
- - Always include primary key fields
204
- - Plan field usage before calling SetLoadFields
205
- - Use SetLoadFields before FindSet() for maximum benefit
206
- - Avoid accessing non-loaded fields after SetLoadFields
207
-
208
- 3. **Performance Impact**:
209
- - Small datasets (<1000 records): 20-50% improvement
210
- - Medium datasets (1000-10000 records): 50-300% improvement
211
- - Large datasets (>10000 records): 300-1000% improvement