在 Dynamics 365 Business Central (BC) 的 AL Language 程式中, 為何找不到顧問客製程式 object id 7xxxx 的相關 page 及 table? 要如何作才能引入程式裡?
這是一個很好的問題,涉及到 Dynamics 365 Business Central (BC) 中 AL Language 的物件 ID 範圍和擴展部署的機制。找不到對象 ID 7xxxx 相關的 Page 和 Table 的主要原因,很可能與 AL 對象的 ID 範圍劃分有關。
🧐物件 ID 找不到的原因
在 Dynamics 365 Business Central 的 AL Language 中,物件 ID 被劃分為不同的範圍,用於區分不同類型的解決方案(例如:Base Application、當地語系化、AppSource ISV 擴展、租戶客制化等)。
- 對象 ID 範圍的用途:
- 50,000 到 99,999:這個範圍是用於 Per-Tenant Extension (PTE),即特定租戶/客戶客制化。在 BC Online 環境中,通常推薦將客戶專屬的客制化程式使用此範圍。
- 1,000,000 到 69,999,999 (RSP 範圍) 和 70,000,000 到 74,999,999 (AppSource ISV 範圍):這些範圍主要用於 AppSource ISV 合作夥伴發佈的全域擴展。這些擴展通常需要經過 Microsoft 認證並發佈到 AppSource。
- 7xxxx 的分析:
- 7xxxx 落在 50,000 – 99,999 這個客戶客制化 (PTE) 的範圍內。
- 找不到物件意味著您的 AL 專案無法識別或引用 ID 為 7xxxx 的物件。
常見找不到的原因:
- 程式碼不在同 Extension 中: ID 7xxxx 的 Page 和 Table 很可能存在於另一個不同的 AL 擴展 (Extension) 中。AL 專案默認只能引用基礎應用 (Base Application) 和您在 app.json 中明確添加為依賴項 (dependencies) 的其他擴展中的物件。
- Extension 未部署/發佈: 即使是在同一個 BC 環境中,如果包含 ID 7xxxx 的擴展尚未被發佈/部署到該環境,您的 AL 專案自然也無法識別它。
- 缺少編譯符號 (.app file): 即使目標 Extension 已經部署,您的開發環境(VS Code)仍然需要該 Extension 的符號檔 (.app) 才能進行編譯和 IntelliSense。
如何引入程式裡 (建立依賴關係)
要讓您的 AL 程式碼能夠使用另一個擴展(包含 ID 7xxxx 的 Page/Table)中的物件,您需要執行以下步驟:
1. 取得目標 Extension 的發佈資訊
您需要知道包含 ID 7xxxx 物件的那個擴展的以下資訊:
- App ID (GUID)
- Name (名稱)
- Publisher (發行商)
- Minimum AL Runtime Version (最低執行階段版本)
- Version (版本)
提示: 您可以從 BC 的 Extension Management (擴展管理) 頁面找到這些資訊。
點選 放大鏡 輸入: Extension Management

篩選出要引用的套件並查看

2. 在您的 AL 專案中建立依賴項 (Dependency)
打開您 AL 專案的 app.json 檔,在 “dependencies” 部分添加目標 Extension 的資訊:
"dependencies": [
// 假设 ID 7xxxx 的物件位於一個名為 "Customization Base" 的擴展中
{
"appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", // 目標擴展的 GUID
"publisher": "Your Partner Name", // 目標擴展的發行商
"name": "Customization Base", // 目標擴展的名稱
"version": "1.0.0.0" // 目標擴展的版本
}
]3. 下載依賴擴展的符號檔 (Symbols)
在 VS Code 中,按 Ctrl+Shift+P (或 Cmd+Shift+P on Mac),然後運行 AL: Download Symbols 命令。
- 這個命令會連接到您 launch.json 中指定的 BC 實例,並下載所有依賴擴展(包括您剛剛添加到 app.json 中的擴展)的編譯符號檔。
- 符號檔會被存放在您的 AL 專案資料夾的 .alpackages 目錄下。
4. 引用對象
一旦符號下載成功,您的 AL 程式碼就可以引用 ID 7xxxx 的 Table 或 Page 了。
- 引用 Table (例如 Table 70800):
var
CustomTable: Record "70800"; // 使用 ID
// 或
CustomTable: Record "Your Custom Table Name"; // 使用名稱
begin
// ...
end;- 引用 Page (例如 Page 70801):
pageextension 50001 "My Extension" extends "Customer List"
{
actions
{
addafter("Functions")
{
action("Open Custom Page")
{
ApplicationArea = All;
trigger OnAction()
begin
Page.Run(Page::"70801"); // 使用 ID
// 或
Page.Run(Page::"Your Custom Page Name"); // 使用名稱
end;
}
}
}
}總結:
在 AL Language 中,物件 ID 7xxxx 屬於客戶客制化範圍。要引用它,您必須確保包含該物件的擴展已部署,並且您的開發專案已在 app.json 中正確配置了該擴展作為依賴項,並已成功下載符號。
常見錯誤解決
佈署時出現錯誤訊息如下時,該如何解決?
出現錯誤:Something went wrong.
無法建立頁面 60211。
找不到中繼資料物件 Page 60211。
Date and time: Wed, 05 Nov 2025 02:12:02 GMT
Microsoft Entra tenant: ebad49c4-ebb6-4dfb-926e-5906b0fa6926
Operation: 9c374ac79c184ffa95eb1b34eba6f659錯誤原因分析(Page 60211 找不到)
這個錯誤通常不是因為依賴關係缺失(因為物件在您自己的 ID 範圍內),而是由於以下幾個最常見的原因:
1. 部署失敗或尚未完成 (最常見原因)
在您嘗試運行 Page 60211 時,您的 AL 擴展可能尚未成功部署或尚未完全發佈到目標 BC 環境中。
- 解決方案: 確保您在 VS Code 中執行了完整的 Publish (Ctrl+F5) 流程,並且在輸出視窗中看到了 “All packages published successfully” 或類似的成功消息。有時候發佈需要一些時間,在發佈完成之前就嘗試打開頁面會導致找不到中繼資料。
2. 程式碼中 Page 60211 有語法錯誤
如果 Page 60211 的 AL 程式碼本身存在編譯錯誤 (Compiler Error),即使您嘗試發佈,該物件也可能不會被正確地打包到擴展 (.app 檔) 中,或不會被 BC 成功載入。
- 解決方案:
- 檢查 VS Code 的 Problems (問題) 視窗,確保您的 Page 60211.al 檔以及整個專案沒有任何紅色的錯誤提示。
- 如果 Page 60211 引用了其他物件(例如:Table 60211),請確保所有被引用的物件也已成功編譯。
3. 表格 (Table) 部署失敗
一個 Page 總是基於一個 Table 或 Query。如果 Page 60211 所基於的 Table 在發佈時失敗或被 BC 忽略,BC 可能也無法創建對應的 Page 實例。
- 解決方案: 確保與 Page 60211 關聯的 Table 程式碼(例如:Table 60211)沒有錯誤,並且隨著擴展一起成功部署。
建議的排除故障步驟
請按循序執行以下步驟來排除故障:
- 檢查編譯錯誤: 在 VS Code 中,打開您的 Page 60211 的 AL 檔案,並仔細查看 VS Code 中的“問題(Problems)”面板。確保沒有任何編譯錯誤。
- 重新下載符號: 運行 AL: Download Symbols 命令,確保您的開發環境的中繼資料是最新的。
- 重新完整發佈: 嘗試執行 Shift + Ctrl + F5 (Publish without debugging),進行一次乾淨、完整的部署。
- 檢查 BC 擴展管理:
- 部署後,登錄您的 Business Central 環境。
- 進入 Extension Management (擴展管理) 頁面。
- 確認您的擴展 “xxx.xxxx” (Version 1.0.0.0) 已經列出,並且狀態顯示為 “Deployed” 或 “Installed”。
- 嘗試從 BC 環境中打開: 如果您是通過調試器嘗試打開 Page 60211,請改為嘗試通過 URL 或功能表項直接從 BC 用戶端打開該 Page,以確認它是否真的不存在於 BC 中。
通常,遵循這些步驟能解決 “找不到中繼資料物件” 的問題,特別是針對您自己 ID 範圍內的物件。
補充說明:如何查詢套件 Extension 的物件
點選 放大鏡 輸入:權限組(Permission Set)

就可以在細項中查看此套件(Extension)包含有那些物件了。





