[轉載] Dynamics 365 Business Central開發實戰-1:分析規格、Tables / Pages

 << 以下為轉載文章。。。>>

2019/6/9
接下來我們直接進入實戰的部份。在上一篇中,提到了使用 CSIDE 開發和 BC 中物件的概念。可能有人會問說 BC 不是應該用 Extensions / AL / VSCode 進行開發,怎麼還繼續用 CSIDE 呢?別急,CSIDE 除了有學習曲線較緩的好處,有試過傳統的 CSIDE 開發方式才知道為什麼之後應該要採用新的開發方式、新的方式有什麼優點。我也會在文章中解釋這些方法論背後的立意。
但首先,我們 (開發人員) 從談流程的顧問那裡得到了一份客製規格如下:

1. 新增一張表 “Expense”,裡面應有欄位 Code <code 20>, Description <text 50>, 和 Disabled <boolean>
2. 在 G/L Account 中新增欄位 “Expense Code”,此欄位的值要可以從 table “Expense” 中選取
3. 使用者要能在相關頁面 (Page) 去輸入有關 “Expense Code” 的資料
4. 使用者在 G/L Account 和 Chart of Account 頁面中,可以去對 “Expense Code” 賦值
5. 當 G/L Account 的項目被加到 Purchase Line 中,”Expense Code” 的值要能從 G/L Account 複製到 Purchase Line
6. 如果使用者在 Purchase Line 中修改 Quantity,”Expense Code” 的值要能被清除掉
7. 在 Purchase Line 過帳時,”Expense Code” 是必備 (mandatory) 的,而且系統會檢查 “Expense Code” 是否沒有被 Disabled 掉。否則,系統跳出錯誤訊息。
8. 在過帳時, “Expense Code” 的資訊也要被帶入到 General Ledger Entries

看到了規格,先別急著要開始做系統客製或是寫程式。我們來分析一下這份規格:

1. 新增一張表 “Expense”,裡面應有欄位 Code <code 20>, Description <text 50>, 和 Disabled <boolean>
分析:很直覺,就開一張 table 50000 取名為 Expense。
2. 在 G/L Account 中新增欄位 “Expense Code”,此欄位的值要可以從 table “Expense” 中選取
分析:就新增欄位,記得設定 Table relation 的欄位屬性
3. 使用者要能在相關頁面 (Page) 去輸入有關 “Expense Code” 的資料
分析:要開一個新的 page 50000 (取名 Expenses),並且要將 “Expense Code” 欄位加入那些既有的頁面。
4. 使用者在 G/L Account 和 Chart of Account 頁面中,可以去對 “Expense Code” 賦值
分析:在 G/L Account 和 Chart of Account 頁面中加入 Page Action
5. 當 G/L Account 的項目被加到 Purchase Line 中,”Expense Code” 的值要能從 G/L Account 複製到 Purchase Line
分析:我們知道 Purchase Line 中以 Type 加上 No. 來代表一項物品。在這個情況下,就是 Type 為 “G/L Account” 且 No. 被決定的當下,”Expense Code” 的資訊會被帶進到 Purchase Line。所以去查看 No. 的 OnValidate() 程式碼。
6. 如果使用者在 Purchase Line 中修改 Quantity,”Expense Code” 的值要能被清除掉
分析:VALIDATE “Quantity” 的欄位
7. 在 Purchase Line 過帳時,”Expense Code” 是必備 (mandatory) 的,而且系統會檢查 “Expense Code” 是否沒有被 Disabled 掉。否則,系統跳出錯誤訊息。
分析:要去追蹤過帳程式。因為跟 Purchase Order 有關,所以去追 Codeunit 90 (Purch.-Post)
8. 在過帳時, “Expense Code” 的資訊也要被帶入到 General Ledger Entries
分析:要去追蹤過帳程式。因為跟 GL Entries 有關,所以去追 Codeunit 12 (Gen. Jnl.-Post Line)


很明顯,規格中的第 1, 2, 3, 4 項是最簡單的,只要在 Table 或 Page 中加欄位或是 Page Action 即可。我們在這裡就直接把它做掉:

1. Table 50000 “Expense”

2. “Expense Code” properties in table “G/L Account”

3–1. Page 50000 “Expenses”

3–2. Field “Expense Code” in various pages. e.g. in page 17.

4–1. Page Action “Page Expenses” in various pages. e.g. page 16 “Chart of Accounts”

4–2. Properties of “Page Expenses” page action in page 16.


上面的截圖為了避免重複或是冗長,自然是沒有辦法每一個細節或是頁面都截給大家看,閱讀者只是抓到整個感覺即可。另外在開發時,記得要在物件中註記好 Documentation,並且在物件上標記 Version List。Version List 可以讓我們很快找到某一項客製的物件。例如,以上八項需求我統一給它們 BC1.00 的 Version List。日後,我只需要在開發環境篩選 BC1.00 的 Version List,就可以找到所有相關的客製物件。

Version List : BC1.00



***********************************************************************************************
<< 以上文章,經作者 Ray 同意,轉載自 https://medium.com/@nturay0321 >>

發佈留言