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,155 +0,0 @@
1
- # SetLoadFields Primary Key Optimization - AL Code Samples
2
-
3
- ## Basic Primary Key Optimization
4
- ```al
5
- codeunit 50100 "SetLoadFields PK Examples"
6
- {
7
- procedure OptimizedPrimaryKeyLookup(DocumentType: Enum "Sales Document Type"; DocumentNo: Code[20])
8
- var
9
- SalesHeader: Record "Sales Header";
10
- begin
11
- // Load only primary key fields for existence checks
12
- SalesHeader.SetLoadFields("Document Type", "No.");
13
- SalesHeader.SetRange("Document Type", DocumentType);
14
- SalesHeader.SetRange("No.", DocumentNo);
15
-
16
- if SalesHeader.FindSet() then
17
- repeat
18
- // Primary key fields already loaded, minimal memory usage
19
- ProcessDocumentHeader(SalesHeader."Document Type", SalesHeader."No.");
20
- until SalesHeader.Next() = 0;
21
- end;
22
-
23
- procedure ConditionalPrimaryKeyLoading(CustomerNo: Code[20]; LoadFullData: Boolean)
24
- var
25
- Customer: Record Customer;
26
- begin
27
- if LoadFullData then
28
- // Load all fields when full processing needed
29
- Customer.SetLoadFields()
30
- else
31
- // Minimal primary key loading for counting/existence
32
- Customer.SetLoadFields("No.");
33
-
34
- Customer.SetRange("No.", CustomerNo);
35
-
36
- if Customer.FindFirst() then
37
- if LoadFullData then
38
- ProcessFullCustomer(Customer)
39
- else
40
- LogCustomerExists(Customer."No.");
41
- end;
42
-
43
- procedure BulkPrimaryKeyProcessing()
44
- var
45
- Item: Record Item;
46
- ItemNumbers: List of [Code[20]];
47
- ItemNo: Code[20];
48
- begin
49
- // First pass: collect primary keys only
50
- Item.SetLoadFields("No.");
51
- if Item.FindSet() then
52
- repeat
53
- ItemNumbers.Add(Item."No.");
54
- until Item.Next() = 0;
55
-
56
- // Second pass: process specific records with full data
57
- foreach ItemNo in ItemNumbers do begin
58
- Item.SetLoadFields(); // Load all fields for processing
59
- if Item.Get(ItemNo) then
60
- ProcessFullItem(Item);
61
- end;
62
- end;
63
-
64
- local procedure ProcessDocumentHeader(DocumentType: Enum "Sales Document Type"; DocumentNo: Code[20])
65
- begin
66
- // Processing logic using only primary key data
67
- end;
68
-
69
- local procedure ProcessFullCustomer(var Customer: Record Customer)
70
- begin
71
- // Full customer processing
72
- end;
73
-
74
- local procedure LogCustomerExists(CustomerNo: Code[20])
75
- begin
76
- // Minimal logging using primary key data
77
- end;
78
-
79
- local procedure ProcessFullItem(var Item: Record Item)
80
- begin
81
- // Full item processing
82
- end;
83
- }
84
- ```
85
-
86
- ## Performance Comparison Examples
87
- ```al
88
- codeunit 50101 "PK Performance Comparison"
89
- {
90
- procedure UnoptimizedPrimaryKeyAccess()
91
- var
92
- Customer: Record Customer;
93
- begin
94
- // BAD: Loading all fields when only checking existence
95
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
96
-
97
- if Customer.FindSet() then
98
- repeat
99
- // Only using primary key fields but all fields were loaded
100
- if IsValidCustomer(Customer."No.") then
101
- ProcessValidCustomer(Customer."No.");
102
- until Customer.Next() = 0;
103
- end;
104
-
105
- procedure OptimizedPrimaryKeyAccess()
106
- var
107
- Customer: Record Customer;
108
- begin
109
- // GOOD: Loading only required primary key fields
110
- Customer.SetLoadFields("No.");
111
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
112
-
113
- if Customer.FindSet() then
114
- repeat
115
- // Minimal memory usage, faster iteration
116
- if IsValidCustomer(Customer."No.") then
117
- ProcessValidCustomer(Customer."No.");
118
- until Customer.Next() = 0;
119
- end;
120
-
121
- procedure SmartPrimaryKeyWithLazyLoading()
122
- var
123
- Customer: Record Customer;
124
- FullDataCustomer: Record Customer;
125
- begin
126
- // BEST: Minimal loading with selective full data loading
127
- Customer.SetLoadFields("No.");
128
- Customer.SetRange("Customer Posting Group", 'DOMESTIC');
129
-
130
- if Customer.FindSet() then
131
- repeat
132
- if IsValidCustomer(Customer."No.") then begin
133
- // Load full data only when needed
134
- if FullDataCustomer.Get(Customer."No.") then
135
- ProcessFullCustomer(FullDataCustomer);
136
- end;
137
- until Customer.Next() = 0;
138
- end;
139
-
140
- local procedure IsValidCustomer(CustomerNo: Code[20]): Boolean
141
- begin
142
- exit(CustomerNo <> '');
143
- end;
144
-
145
- local procedure ProcessValidCustomer(CustomerNo: Code[20])
146
- begin
147
- // Processing using only primary key data
148
- end;
149
-
150
- local procedure ProcessFullCustomer(var Customer: Record Customer)
151
- begin
152
- // Full customer processing
153
- end;
154
- }
155
- ```
@@ -1,475 +0,0 @@
1
- # SIFT Technology Fundamentals - AL Code Samples
2
-
3
- ## Basic SIFT Table Configuration
4
-
5
- ### Standard Implementation
6
- ```al
7
- table 50100 "Sales Analytics Data"
8
- {
9
- Caption = 'Sales Analytics Data';
10
- DataClassification = CustomerContent;
11
-
12
- fields
13
- {
14
- field(1; "Customer No."; Code[20])
15
- {
16
- Caption = 'Customer No.';
17
- TableRelation = Customer;
18
- }
19
- field(2; "Item No."; Code[20])
20
- {
21
- Caption = 'Item No.';
22
- TableRelation = Item;
23
- }
24
- field(3; "Posting Date"; Date)
25
- {
26
- Caption = 'Posting Date';
27
- }
28
- field(10; "Sales Amount"; Decimal)
29
- {
30
- Caption = 'Sales Amount';
31
- DecimalPlaces = 2 : 2;
32
- }
33
- field(11; "Quantity"; Decimal)
34
- {
35
- Caption = 'Quantity';
36
- DecimalPlaces = 0 : 5;
37
- }
38
- field(12; "Profit Amount"; Decimal)
39
- {
40
- Caption = 'Profit Amount';
41
- DecimalPlaces = 2 : 2;
42
- }
43
- }
44
-
45
- keys
46
- {
47
- key(PK; "Customer No.", "Item No.", "Posting Date")
48
- {
49
- Clustered = true;
50
- }
51
-
52
- // Basic SIFT key for customer totals
53
- key(CustomerSIFT; "Customer No.")
54
- {
55
- SumIndexFields = "Sales Amount", Quantity, "Profit Amount";
56
- MaintainSIFTIndex = true;
57
- }
58
-
59
- // Item-based aggregations
60
- key(ItemSIFT; "Item No.")
61
- {
62
- SumIndexFields = "Sales Amount", Quantity;
63
- MaintainSIFTIndex = true;
64
- }
65
- }
66
- }
67
- ```
68
-
69
- ## SumIndexFields Property Usage Patterns
70
-
71
- ### Multiple Aggregation Strategies
72
- ```al
73
- table 50101 "Order Performance Metrics"
74
- {
75
- Caption = 'Order Performance Metrics';
76
- DataClassification = CustomerContent;
77
-
78
- fields
79
- {
80
- field(1; "Salesperson Code"; Code[20]) { }
81
- field(2; "Customer No."; Code[20]) { }
82
- field(3; "Order Date"; Date) { }
83
- field(10; "Order Amount"; Decimal) { }
84
- field(11; "Discount Amount"; Decimal) { }
85
- field(12; "Commission Amount"; Decimal) { }
86
- field(13; "Processing Time"; Integer) { }
87
- }
88
-
89
- keys
90
- {
91
- key(PK; "Salesperson Code", "Customer No.", "Order Date") { Clustered = true; }
92
-
93
- // Comprehensive salesperson performance SIFT
94
- key(SalespersonPerformance; "Salesperson Code")
95
- {
96
- SumIndexFields = "Order Amount", "Discount Amount", "Commission Amount";
97
- MaintainSIFTIndex = true;
98
- }
99
-
100
- // Customer relationship metrics SIFT
101
- key(CustomerMetrics; "Customer No.")
102
- {
103
- SumIndexFields = "Order Amount", "Discount Amount";
104
- MaintainSIFTIndex = true;
105
- }
106
-
107
- // Time-based analysis SIFT
108
- key(DateAnalysis; "Order Date")
109
- {
110
- SumIndexFields = "Order Amount", "Processing Time";
111
- MaintainSIFTIndex = false; // On-demand for reporting
112
- }
113
- }
114
- }
115
-
116
- // Usage in AL code
117
- codeunit 50100 "SIFT Usage Examples"
118
- {
119
- procedure GetSalespersonTotals(SalespersonCode: Code[20]; var TotalAmount: Decimal; var TotalCommission: Decimal)
120
- var
121
- OrderMetrics: Record "Order Performance Metrics";
122
- begin
123
- OrderMetrics.Reset();
124
- OrderMetrics.SetRange("Salesperson Code", SalespersonCode);
125
-
126
- // Leverages SIFT for instant calculation
127
- OrderMetrics.CalcSums("Order Amount", "Commission Amount");
128
- TotalAmount := OrderMetrics."Order Amount";
129
- TotalCommission := OrderMetrics."Commission Amount";
130
- end;
131
- }
132
- ```
133
-
134
- ## FlowField Integration with SIFT
135
-
136
- ### Customer Card with SIFT-Optimized FlowFields
137
- ```al
138
- tableextension 50100 "Customer SIFT Extension" extends Customer
139
- {
140
- fields
141
- {
142
- // FlowField automatically leverages SIFT when available
143
- field(50100; "Total Sales Amount"; Decimal)
144
- {
145
- Caption = 'Total Sales Amount';
146
- FieldClass = FlowField;
147
- CalcFormula = sum("Sales Analytics Data"."Sales Amount" where("Customer No." = field("No.")));
148
- Editable = false;
149
- }
150
-
151
- field(50101; "Total Quantity Sold"; Decimal)
152
- {
153
- Caption = 'Total Quantity Sold';
154
- FieldClass = FlowField;
155
- CalcFormula = sum("Sales Analytics Data".Quantity where("Customer No." = field("No.")));
156
- Editable = false;
157
- }
158
-
159
- field(50102; "Average Order Value"; Decimal)
160
- {
161
- Caption = 'Average Order Value';
162
- FieldClass = FlowField;
163
- CalcFormula = average("Sales Analytics Data"."Sales Amount" where("Customer No." = field("No.")));
164
- Editable = false;
165
- }
166
- }
167
- }
168
-
169
- // Page implementation with automatic FlowField calculation
170
- pageextension 50100 "Customer Card SIFT" extends "Customer Card"
171
- {
172
- layout
173
- {
174
- addafter("Name")
175
- {
176
- group("Sales Analytics")
177
- {
178
- Caption = 'Sales Analytics (SIFT-Optimized)';
179
-
180
- field("Total Sales Amount"; Rec."Total Sales Amount")
181
- {
182
- ApplicationArea = All;
183
- // Automatically calculated using SIFT when page opens
184
- }
185
- field("Total Quantity Sold"; Rec."Total Quantity Sold")
186
- {
187
- ApplicationArea = All;
188
- }
189
- field("Average Order Value"; Rec."Average Order Value")
190
- {
191
- ApplicationArea = All;
192
- }
193
- }
194
- }
195
- }
196
-
197
- trigger OnAfterGetRecord()
198
- begin
199
- // Force calculation of FlowFields (leverages SIFT)
200
- Rec.CalcFields("Total Sales Amount", "Total Quantity Sold", "Average Order Value");
201
- end;
202
- }
203
- ```
204
-
205
- ## Performance Comparison: SIFT vs Non-SIFT
206
-
207
- ### Performance Testing Framework
208
- ```al
209
- codeunit 50101 "SIFT Performance Comparison"
210
- {
211
- procedure ComparePerformance(CustomerNo: Code[20])
212
- var
213
- SalesData: Record "Sales Analytics Data";
214
- StartTime: DateTime;
215
- EndTime: DateTime;
216
- SIFTDuration: Duration;
217
- ManualDuration: Duration;
218
- TotalAmount: Decimal;
219
- begin
220
- // Test 1: SIFT-optimized calculation
221
- StartTime := CurrentDateTime;
222
- TotalAmount := CalculateUsingSIFT(CustomerNo);
223
- EndTime := CurrentDateTime;
224
- SIFTDuration := EndTime - StartTime;
225
-
226
- // Test 2: Manual calculation without SIFT
227
- StartTime := CurrentDateTime;
228
- TotalAmount := CalculateManually(CustomerNo);
229
- EndTime := CurrentDateTime;
230
- ManualDuration := EndTime - StartTime;
231
-
232
- // Performance comparison results
233
- Message('SIFT Calculation: %1ms\Manual Calculation: %2ms\Performance Improvement: %3x faster',
234
- SIFTDuration, ManualDuration, ManualDuration / SIFTDuration);
235
- end;
236
-
237
- local procedure CalculateUsingSIFT(CustomerNo: Code[20]): Decimal
238
- var
239
- SalesData: Record "Sales Analytics Data";
240
- begin
241
- // Leverages SIFT index for instant aggregation
242
- SalesData.Reset();
243
- SalesData.SetRange("Customer No.", CustomerNo);
244
- SalesData.CalcSums("Sales Amount");
245
- exit(SalesData."Sales Amount");
246
- end;
247
-
248
- local procedure CalculateManually(CustomerNo: Code[20]): Decimal
249
- var
250
- SalesData: Record "Sales Analytics Data";
251
- TotalAmount: Decimal;
252
- begin
253
- // Forces row-by-row calculation without SIFT
254
- SalesData.Reset();
255
- SalesData.SetRange("Customer No.", CustomerNo);
256
- if SalesData.FindSet() then
257
- repeat
258
- TotalAmount += SalesData."Sales Amount";
259
- until SalesData.Next() = 0;
260
- exit(TotalAmount);
261
- end;
262
- }
263
-
264
- // Benchmark results table for tracking
265
- table 50102 "SIFT Performance Benchmark"
266
- {
267
- fields
268
- {
269
- field(1; "Test Date"; DateTime) { }
270
- field(2; "Customer No."; Code[20]) { }
271
- field(3; "Record Count"; Integer) { }
272
- field(4; "SIFT Duration (ms)"; Integer) { }
273
- field(5; "Manual Duration (ms)"; Integer) { }
274
- field(6; "Performance Ratio"; Decimal) { }
275
- }
276
-
277
- keys
278
- {
279
- key(PK; "Test Date", "Customer No.") { }
280
- }
281
- }
282
- ```
283
-
284
- ## Common SIFT Configuration Mistakes (Anti-Patterns)
285
-
286
- ### Anti-Pattern Examples with Corrections
287
-
288
- #### ❌ Anti-Pattern 1: Excessive SIFT Keys
289
- ```al
290
- // BAD: Too many SIFT keys with MaintainSIFTIndex = true
291
- table 50103 "Over-SIFT Example (Bad)"
292
- {
293
- keys
294
- {
295
- key(PK; ID) { }
296
- key(SIFT1; Field1) { SumIndexFields = Amount; MaintainSIFTIndex = true; }
297
- key(SIFT2; Field2) { SumIndexFields = Amount; MaintainSIFTIndex = true; }
298
- key(SIFT3; Field3) { SumIndexFields = Amount; MaintainSIFTIndex = true; }
299
- key(SIFT4; Field4) { SumIndexFields = Amount; MaintainSIFTIndex = true; }
300
- key(SIFT5; Field5) { SumIndexFields = Amount; MaintainSIFTIndex = true; }
301
- // Problem: Every data modification updates 5 SIFT indexes
302
- // Impact: Severe write performance degradation
303
- }
304
- }
305
- ```
306
-
307
- #### ✅ Corrected Pattern 1: Selective SIFT Usage
308
- ```al
309
- // GOOD: Strategic SIFT key selection
310
- table 50104 "Optimized SIFT Example (Good)"
311
- {
312
- keys
313
- {
314
- key(PK; ID) { }
315
-
316
- // Only critical aggregations maintain real-time SIFT
317
- key(CriticalSIFT; "Customer No.")
318
- {
319
- SumIndexFields = Amount;
320
- MaintainSIFTIndex = true; // Dashboard requirement
321
- }
322
-
323
- // Secondary aggregations use on-demand calculation
324
- key(ReportingSIFT; "Item No.")
325
- {
326
- SumIndexFields = Amount;
327
- MaintainSIFTIndex = false; // Monthly reporting only
328
- }
329
- }
330
- }
331
- ```
332
-
333
- #### ❌ Anti-Pattern 2: SIFT Without SumIndexFields
334
- ```al
335
- // BAD: SIFT configuration without aggregation fields
336
- table 50105 "Empty SIFT Example (Bad)"
337
- {
338
- keys
339
- {
340
- key(PK; ID) { }
341
- key(BadSIFT; "Customer No.")
342
- {
343
- MaintainSIFTIndex = true; // No SumIndexFields specified!
344
- // Problem: Wastes storage and processing with no benefit
345
- }
346
- }
347
- }
348
- ```
349
-
350
- #### ✅ Corrected Pattern 2: Proper SIFT Configuration
351
- ```al
352
- // GOOD: SIFT with appropriate aggregation fields
353
- table 50106 "Proper SIFT Example (Good)"
354
- {
355
- keys
356
- {
357
- key(PK; ID) { }
358
- key(GoodSIFT; "Customer No.")
359
- {
360
- SumIndexFields = "Sales Amount", Quantity, "Profit Amount";
361
- MaintainSIFTIndex = true;
362
- }
363
- }
364
- }
365
- ```
366
-
367
- #### ❌ Anti-Pattern 3: Wrong MaintainSIFTIndex Setting
368
- ```al
369
- // BAD: Real-time SIFT for batch processing scenario
370
- codeunit 50102 "Batch Import with Bad SIFT"
371
- {
372
- procedure ImportLargeDataset()
373
- var
374
- DataRecord: Record "Over-SIFT Example (Bad)";
375
- i: Integer;
376
- begin
377
- // Importing 100,000 records
378
- for i := 1 to 100000 do begin
379
- DataRecord.Init();
380
- DataRecord.ID := i;
381
- DataRecord.Amount := Random(1000);
382
- DataRecord.Insert(); // Each insert updates multiple SIFT indexes!
383
- // Performance impact: 10x slower than necessary
384
- end;
385
- end;
386
- }
387
- ```
388
-
389
- #### ✅ Corrected Pattern 3: Appropriate SIFT for Usage Pattern
390
- ```al
391
- // GOOD: On-demand SIFT for batch scenarios
392
- table 50107 "Batch-Optimized SIFT (Good)"
393
- {
394
- keys
395
- {
396
- key(PK; ID) { }
397
- key(BatchSIFT; "Data Type")
398
- {
399
- SumIndexFields = Amount;
400
- MaintainSIFTIndex = false; // Calculated after batch import
401
- }
402
- }
403
- }
404
-
405
- codeunit 50103 "Batch Import with Good SIFT"
406
- {
407
- procedure ImportLargeDataset()
408
- var
409
- DataRecord: Record "Batch-Optimized SIFT (Good)";
410
- i: Integer;
411
- begin
412
- // Fast import without real-time SIFT maintenance
413
- for i := 1 to 100000 do begin
414
- DataRecord.Init();
415
- DataRecord.ID := i;
416
- DataRecord.Amount := Random(1000);
417
- DataRecord.Insert(); // No SIFT overhead during import
418
- end;
419
-
420
- // Calculate aggregations on-demand after import
421
- DataRecord.CalcSums(Amount); // Uses SIFT for efficient calculation
422
- Message('Total imported amount: %1', DataRecord.Amount);
423
- end;
424
- }
425
- ```
426
-
427
- ## Best Practice Decision Matrix
428
-
429
- ### SIFT Configuration Guidelines
430
- ```al
431
- // Decision framework for SIFT configuration
432
- codeunit 50104 "SIFT Decision Framework"
433
- {
434
- // Use this pattern to determine optimal SIFT settings
435
- procedure RecommendSIFTSettings(ReadFrequency: Text; WriteFrequency: Text; DataVolume: Text): Text
436
- begin
437
- case true of
438
- (ReadFrequency = 'High') and (WriteFrequency = 'Low'):
439
- exit('MaintainSIFTIndex = true - Optimal for dashboards and real-time reporting');
440
-
441
- (ReadFrequency = 'Low') and (WriteFrequency = 'High'):
442
- exit('MaintainSIFTIndex = false - Optimal for transaction processing systems');
443
-
444
- (ReadFrequency = 'Medium') and (WriteFrequency = 'Medium'):
445
- exit('Test both settings and measure performance - Consider time-based switching');
446
-
447
- DataVolume = 'Very Large':
448
- exit('MaintainSIFTIndex = false - Avoid real-time maintenance on large datasets');
449
-
450
- else
451
- exit('Start with MaintainSIFTIndex = false and optimize based on actual usage patterns');
452
- end;
453
- end;
454
- }
455
-
456
- /*
457
- SIFT Performance Guidelines:
458
-
459
- 1. Real-time SIFT (MaintainSIFTIndex = true):
460
- - Best for: Dashboards, frequently accessed reports, user interface calculations
461
- - Trade-off: Slower writes, faster reads
462
- - Limit: Maximum 3-5 real-time SIFT keys per table
463
-
464
- 2. On-demand SIFT (MaintainSIFTIndex = false):
465
- - Best for: Periodic reporting, batch processing, large data imports
466
- - Trade-off: Faster writes, acceptable read performance
467
- - Benefit: No maintenance overhead during data modifications
468
-
469
- 3. Monitoring and Optimization:
470
- - Measure actual performance in production-like environments
471
- - Monitor SIFT calculation times and data modification impact
472
- - Consider data growth patterns when choosing SIFT strategy
473
- - Review SIFT usage patterns quarterly and adjust as needed
474
- */
475
- ```