程式資訊
- 程式 ID:
Acc_rpt - 所屬子系統:N.總帳管理
- 狀態:stable
報表公式設定¶
功能簡介¶
「報表公式設定」用來設計自訂財務報表的版型與計算公式。一張報表由一筆主檔(報表編號/報表名稱/報表性質等抬頭)搭配多筆明細列(每一列代表報表上的一行:要顯示什麼科目名稱、用什麼公式取金額、印在哪裡)組成。
設定好的報表公式,會被自訂財務報表(ACC_SELFRPT)讀取後套用到當期的傳票資料,產生實際數字的報表。換句話說:
- 在本表單裡定義的是「報表長什麼樣子、每行怎麼算」——這是一份範本,不含任何金額。
- 真正帶入金額、產生可看的報表,是在自訂財務報表執行。
適合會計主管或系統管理者在導入階段或調整報表格式時使用,屬於總帳模組的基礎設定性質。
前置需求¶
- 權限:N.總帳 →
N-040 報表公式設定,視操作需要的新增/修改/刪除/瀏覽/列印權限。 - 基礎資料:公式內容會引用下列主檔,設定前請先維護妥當——
| 資料 | 影響什麼 |
|---|---|
| 會計科目(ACCL) | 明細列的起始科目/截止科目、ACC_BS("科目代號") 公式所引用的科目 |
| 科目分類(ACCL,大/中/小分類) | ACC_BSC("階,分類名")、ACC_BSCE(...)、ACC_BSAUTO() 自動展開分類時所依據的分類結構 |
| 部門主檔 | 明細列的起始部門/截止部門(限定該行只統計某部門區間) |
小技巧
若希望系統依科目分類自動產生整套明細列,可在公式欄使用 ACC_BSAUTO() 或 ACC_BSCE(...)。實際展開動作是在自訂財務報表套用公式時進行,本表單只負責把這些公式存進明細。詳見欄位連動與附加功能。
操作步驟¶
本表單為「主檔+明細」的標準維護畫面:上半部是報表抬頭,下半部的格線是報表的每一行公式。

新增一張報表公式¶
- 按工具列的
新增。系統會帶入預設值(建檔日期=今天、資料別預設帶入內部值,見欄位說明)。 - 在上半部輸入:
- 報表編號(主鍵,必填,最長 10 碼)。
- 報表名稱(這份報表的抬頭文字,最長 80 字)。
- 視需要設定報表性質、包含傳票種類、資料別。
- 在下半部格線逐列輸入報表的每一行(一列=報表上的一行),常用欄位:
- 科目名稱:這一行要顯示的文字(同一張報表內不可重複,見下方注意)。
- 公式:這一行金額的算法(例如
ACC_BS("1101"))。留空則該行不取數,可當作標題行或空白行。 - 起始科目/截止科目、起始部門/截止部門:限定取數的科目/部門區間。
- 列印碼/加減別/合計階數/空行數/空格數 等版面控制欄位。
- 按
儲存。
科目名稱不可重複
同一張報表的明細列中,科目名稱會被當作識別鍵。若有兩列(未刪除的)科目名稱相同,存檔時會擋下並提示「(序號):(科目名稱) 資料重複」(以該列的序號欄值+科目名稱標示)。需要兩行同名時,請在名稱前後加空白或調整文字使其相異。

修改/刪除¶
- 用工具列查出(或輸入報表編號叫出)要編輯的報表公式。
- 直接在主檔欄位或明細格線上修改。
- 刪除整列明細:選取該列後刪除;科目名稱留白的列在存檔時會被視為刪除(系統判定為空列)。
- 按
儲存。
列印公式定義¶
- 在已開啟的報表公式上按工具列的
列印。 - 系統開啟報表公式列印條件頁,報表編號的起訖已自動帶入目前這張報表的編號。
- 確認起訖後產生報表(報表抬頭「報表公式表」)。

欄位說明¶
主檔(報表抬頭)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 報表編號 | ✔ | 主鍵,最長 10 碼。一張報表的唯一識別。 |
| 報表名稱 | — | 報表抬頭文字,最長 80 字。 |
| 報表性質 | — | 最長 2 碼,標示報表類別性質(自由輸入碼)。 |
| 包含傳票種類 | — | 最長 10 碼,控制本報表納入計算的傳票種類。 |
| 資料別 | — | 下拉選單:1 標準(Standard)/2 完整(Full)。新增時系統帶入內部預設值 012(見欄位連動與附加功能)。 |
| 建檔日期 | — | 新增時自動帶當日日期,不需手動輸入。 |
明細(報表每一行的公式)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 序號 | — | 該明細列的序號(最長 6 碼)。 |
| 計算順序 | — | 數字(byte),控制各行公式的計算先後。 |
| 科目名稱 | ✔ | 這一行顯示的文字,最長 80 字;同張報表內不可重複(識別鍵)。 |
| 額外名稱 | — | 補充說明文字,最長 80 字。 |
| 公式 | — | 取數公式,最長 168 字;支援 ACC_BS/ACC_BSC/ACC_BSCE/ACC_BSAUTO 等函式(見下節)。留空=不取數。 |
| 起始科目/截止科目 | — | 取數的科目區間(最長 20 碼),對應會計科目。 |
| 起始部門/截止部門 | — | 取數的部門區間(最長 10 碼)。 |
| 小數位數 | — | 該行金額顯示的小數位數(byte,預設 0)。 |
| 加印文字 | — | 額外印出的文字,最長 30 字。 |
| 加減別 | — | 1 碼,控制該行金額在合計時的加/減符號。 |
| 列印碼 | — | 最長 6 碼,控制該行的列印樣式(公式自動產生時常見 L1/L2)。 |
| 合計階數 | — | 1 碼,標示該行屬於哪一階合計。 |
| 百分比基準 | — | 1 碼,標示百分比計算的基準行。 |
| 空行數/空格數 | — | byte,控制該行前後的空白行數與縮排空格數。 |
| 型態 | — | 最長 2 碼,行型態。 |
| 計算別 | — | 1 碼,計算方式別。 |
| 借貸別 | — | 1 碼,限定取借方或貸方金額。 |
| 特殊控制 | — | 最長 30 字,特殊處理控制碼。 |
| 健康值 | — | 數值(19,4),財務健康指標數值。 |
| 健康值符號/健康值樣板 | — | 健康值的顯示符號(2 碼)與套用樣板(最長 30 字)。 |
格線中的品號/品名欄
格線版面上雖保留了「起始品號/截止品號/起始品名」等帶查欄位,但這些欄位在資料來源(Twork_acc_vw_acc_rptSource)中並無對應屬性,目前不會存取任何值、亦不參與取數,操作時可忽略。實際限定取數範圍請用起始科目/截止科目與起始部門/截止部門。
欄位連動與附加功能¶
這一節說明「輸入某欄位或按某動作後,系統會做什麼」,全部依程式碼實際行為整理。
新增時的預設值(AfterAddNew)¶
當你按 新增,系統會在主檔自動帶入:
- 建檔日期 = 今天(
yyyy/MM/dd)。 - 資料別 = 內部值
012。
資料別預設值的說明
資料別下拉選單的可選代碼為 1(標準)與 2(完整);新增時程式帶入的內部預設 012 並不等於這兩個顯示選項。若新增後下拉看起來未對應到「標準/完整」,請直接從下拉重新選取所需的資料別再存檔。
資料別下拉(標準/完整)¶
- 下拉選項由程式碼建立兩筆:
1→ 標準(Standard)2→ 完整(Full)
- 顯示文字會依使用者語言自動翻譯(中文顯示「標準/完整」,英文顯示「Standard/Full」),翻譯來源為語言檔,不需另行維護。
公式欄可用的取數函式¶
公式欄填的是取數運算式,常用函式如下(這些公式會在自訂財務報表執行時被解析並套用到傳票資料):
| 公式寫法 | 作用 |
|---|---|
ACC_BS("科目代號") |
取單一會計科目的金額。 |
ACC_BSC("階,分類名") |
取某一階分類(1=大分類、2=中分類、3=小分類)下、指定分類名稱的合計。 |
ACC_BSCE("階,分類名") |
把指定分類自動展開成大/中/小分類及其下科目的多行明細。 |
ACC_BSAUTO() |
依科目分類自動展開全部分類與科目,產生整套明細行。 |
- 公式前可加
-號表示該段取負值(例:-ACC_BSC("1,負債"))。 - 使用
ACC_BSCE/ACC_BSAUTO時,真正的「展開成多列」是在自訂財務報表套用公式時進行;本表單存的是公式字串本身。展開所依據的分類結構,請先在科目分類維護好。
存檔檢核(科目名稱不可重複)¶
- 按
儲存時,系統會掃描所有未標記刪除的明細列,以科目名稱為鍵檢查重複。 - 一旦發現重複,存檔中止並提示「(序號):(科目名稱) 資料重複」——前綴是該列序號欄的值(非實體列號),後接重複的科目名稱。
- 科目名稱留白的明細列會被視為空列/刪除處理(
NeedDeleteFunction以科目名稱是否空白判定),不納入重複檢查。
列印(GetPrintViewModel / GetReports)¶
- 按工具列
列印,系統開啟報表公式列印,並把報表編號的起訖都預先帶成「目前這張報表的編號」,等於預設只印當前這一張。 - 報表來源固定為公式表報表(報表編號
N040-1、抬頭「報表公式表」、A4、TW 區),透過後端的DARB_RPT_ACC_RPT程序取數。
常見問題¶
存檔時跳出「資料重複」,但我看起來每行都不一樣?
重複檢查比對的是科目名稱這一欄,不是公式或序號(提示文字前綴的數字是該列的序號欄值,僅供定位)。請檢查是否有兩行科目名稱完全相同(包含看不見的尾端空白)。需要兩行同名時,在文字前後加空白或微調文字使其相異即可。
新增後「資料別」下拉沒有顯示「標準」或「完整」?
新增時程式帶入的內部預設值(012)與下拉可選的 1(標準)/2(完整)不一致,因此下拉可能顯示為空。直接從下拉重新選取所需資料別再存檔即可。
我在這裡設好公式,為什麼看不到金額?
本表單只負責定義報表版型與公式,不含任何金額。要看帶數字的報表,請到自訂財務報表選擇這份報表編號並執行;那裡才會把公式套到當期傳票算出金額。
用 ACC_BSAUTO() 後,這裡的明細卻沒有自動長出很多行?
ACC_BSAUTO() / ACC_BSCE(...) 的展開是在自訂財務報表套用公式的當下進行,本表單儲存的是公式字串本身。請確認科目分類的大/中/小分類已維護完整,再到自訂財務報表執行展開。
公式裡的 ACC_BS("xxxx") 取不到數?
請確認括號內的科目代號確實存在於會計科目主檔,且該科目在當期有傳票異動。科目區間(起始科目/截止科目)與部門區間若設得太窄,也可能把資料過濾掉。