D365 Business Central (BC) AL 客製開發物件 ID 引用指南

在 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 擴展、租戶客制化等)。

  1. 對象 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。
  2. 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

image 2

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

image 3

2. 在您的 AL 專案中建立依賴項 (Dependency)

打開您 AL 專案的 app.json 檔,在 “dependencies” 部分添加目標 Extension 的資訊:

C
"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):
C
var
    CustomTable: Record "70800"; // 使用 ID
    // 或
    CustomTable: Record "Your Custom Table Name"; // 使用名稱
begin
    // ...
end;
  • 引用 Page (例如 Page 70801):
C
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 中正確配置了該擴展作為依賴項,並已成功下載符號

常見錯誤解決

佈署時出現錯誤訊息如下時,該如何解決?

TeX
出現錯誤: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 成功載入。

  • 解決方案:
    1. 檢查 VS Code 的 Problems (問題) 視窗,確保您的 Page 60211.al 檔以及整個專案沒有任何紅色的錯誤提示。
    2. 如果 Page 60211 引用了其他物件(例如:Table 60211),請確保所有被引用的物件也已成功編譯。

3. 表格 (Table) 部署失敗

一個 Page 總是基於一個 Table 或 Query。如果 Page 60211 所基於的 Table 在發佈時失敗或被 BC 忽略,BC 可能也無法創建對應的 Page 實例。

  • 解決方案: 確保與 Page 60211 關聯的 Table 程式碼(例如:Table 60211)沒有錯誤,並且隨著擴展一起成功部署。

建議的排除故障步驟

請按循序執行以下步驟來排除故障:

  1. 檢查編譯錯誤: 在 VS Code 中,打開您的 Page 60211 的 AL 檔案,並仔細查看 VS Code 中的“問題(Problems)”面板。確保沒有任何編譯錯誤。
  2. 重新下載符號: 運行 AL: Download Symbols 命令,確保您的開發環境的中繼資料是最新的。
  3. 重新完整發佈: 嘗試執行 Shift + Ctrl + F5 (Publish without debugging),進行一次乾淨、完整的部署。
  4. 檢查 BC 擴展管理:
    • 部署後,登錄您的 Business Central 環境。
    • 進入 Extension Management (擴展管理) 頁面。
    • 確認您的擴展 “xxx.xxxx” (Version 1.0.0.0) 已經列出,並且狀態顯示為 “Deployed” 或 “Installed”。
  5. 嘗試從 BC 環境中打開: 如果您是通過調試器嘗試打開 Page 60211,請改為嘗試通過 URL 或功能表項直接從 BC 用戶端打開該 Page,以確認它是否真的不存在於 BC 中。

通常,遵循這些步驟能解決 “找不到中繼資料物件” 的問題,特別是針對您自己 ID 範圍內的物件。

補充說明:如何查詢套件 Extension 的物件

點選 放大鏡 輸入:權限組(Permission Set)

image

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

image 1

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


內容索引