跳轉到

程式資訊

  • 程式 IDAcc_selfrptCondition
  • 所屬子系統:N.總帳管理
  • 狀態:stable

自訂財報查詢條件

功能簡介

「自訂財報查詢條件」是 自訂財報執行查詢(ACC_SELFRPT,選單編號 N-130)的查詢條件面板。它本身不是一支獨立程式,而是 Acc_selfrptConditionViewModel 所對應的條件輸入畫面——你在這裡填好年度、截止日期、資料年數、當期月份區間、幣別、部門與報表編號,再按工具列的 查詢,系統就會以這些條件去跑自訂財報,把每一列公式(如毛利率、營業利益、各科目小計)依公式設定算出多年同期的數字。

這頁通常由財會主管或會計使用:先在 報表公式設定 裡定義好一張報表的公式與列印格式,之後每次出報表就靠這個條件面板挑年度、月份、幣別與部門。

本頁與「自訂財報執行查詢」是同一支程式

本條件面板(Acc_selfrptCondition)與母查詢頁 自訂財報執行查詢 共用同一個 ProgramClass ACC_SELFRPT。本頁只負責輸入查詢條件;查詢結果的欄位、年度欄頭規則、可列印的十種報表格式,請見母頁。

前置需求

  • 權限:N.總帳 → N-130 自訂財報 的瀏覽(查詢)/列印權限。
  • 基礎資料:條件能不能查出東西、算得對不對,取決於下列資料——
資料 影響什麼
報表公式設定(公式表 / 報表編號) 報表編號欄要能查到;公式列、起訖部門、百分比基準都由這裡定義
傳票(已過帳的總帳交易) 各科目的借貸金額來源,決定報表每一列算出來的數字
年度預算 報表中「預算」相關欄位(BudgetTotal、各季預算等)的來源
部門主檔 部門代號欄的查詢與「ALL」全部部門的對應
幣別參數(本幣 / 功能幣 / 集團幣,_prgpar 2007、2021) 幣別選項顯示的幣別代碼,以及金額小數位數

操作步驟

  1. 開啟 自訂財報執行查詢,系統會先顯示這個條件面板。
  2. 輸入 年度(預設帶當年)。這是報表的基準年(今年 Year0),結果格線的各年度欄位都以它為起點往回展開。
  3. 輸入 截止日期(月/日,預設 12/31)。系統會把它接在年度後面組成「年度/截止日期」當作取數的截止日。
  4. 輸入 資料年數(單一位數,預設 2)。代表結果要往回展開幾個年度欄位群(今年 Year0、去年 Year1…),系統會對每一列、每個年度都套一次公式算出同期數字並排比較。
  5. 輸入 當期起始月份當期截止月份(預設起始 1、截止為當月)。這組區間決定報表中「當期」欄位涵蓋的月份範圍。
  6. 選擇 幣別本幣(預設)、功能幣集團幣,三選一。
  7. 輸入或查詢 部門代號(預設 ALL 全部部門)。
  8. 報表編號 欄輸入或按查詢挑一張已設定好的自訂財報;選定後右側會自動帶出報表名稱
  9. 按工具列的 查詢 執行。若沒填報表編號,系統會擋下並提示,詳見欄位連動與附加功能

小技巧

換幣別、改月份區間或改年度後不必重設其他欄位,直接再按一次 查詢 即可重算。

欄位說明

欄位 必填 說明/格式/預設
年度 西元年,遮罩為 Year。預設帶當年DateTime.Now.Year
截止日期 月/日,遮罩為 MonthAndDate。預設 12/31,與年度組成取數截止日
資料年數 1 位數字(MaxLength=1)。預設 2,表示結果要往回展開幾個年度欄位群(每多一年就多套一次公式算同期值)
當期起始月份 2 位數字。預設 1;超出 1~12 會被自動夾回範圍
當期截止月份 2 位數字。預設當月DateTime.Now.Month);超出 1~12 會被自動夾回範圍
幣別 單選 本幣 / 功能幣 / 集團幣,預設 本幣CurrencyTypeEnum.Local);恆有預設值不會空白
部門代號 透過部門查詢控件輸入,預設 ALL(全部部門)。控件設 CheckDataExist=false,不強制存在性檢核
報表編號 自訂財報的編號,查詢 acc_rpt 資料來源。選定後自動帶出報表名稱
報表名稱 唯讀,隨報表編號自動帶出,不可手動輸入

預設值來源

上述預設值由 Acc_selfrptQueryParameters.ResetToDefault() 統一設定:幣別=本幣、年度=今年、截止日期=12/31、起始月份=1、截止月份=當月、部門=ALL、資料年數=2。每次開啟條件面板都會回到這組預設。

欄位連動與附加功能

這一節把「輸入某欄位/按某按鈕後系統會做什麼」逐條列出,全部依實際程式碼整理。

月份欄位自動夾範圍

當你在 當期起始月份當期截止月份 輸入小於 1 或大於 12 的值,ViewModel 的 setter 會立刻把它修正回合法範圍:小於 1 變成 1、大於 12 變成 12。所以你不會送出像「第 0 月」「第 13 月」這種非法區間。

報表編號帶出報表名稱

報表編號 欄是一個帶查詢的搜尋框(DataEvent="acc_rpt"):

  1. 你直接打編號、或按查詢從 報表公式設定 清單挑一張報表。
  2. 選定後,系統把該報表的名稱寫進 報表名稱SelfReportName),右側唯讀框即時顯示。
  3. 報表編號是查詢的關鍵——它決定要套用哪一組公式列去算。

幣別決定金額口徑與小數位數

幣別 的三選一不只是換顯示,它會:

  1. 切換金額取數的口徑——本幣 取本位幣借貸、功能幣 取功能幣借貸、集團幣 取集團幣借貸,分別對應不同的借貸欄位做加總。
  2. 決定金額顯示的小數位數:本幣用本位幣小數位、功能幣用功能幣小數位、集團幣用集團幣小數位。
  3. 報表上顯示的幣別代碼,本幣取環境設定的本位幣、功能幣取 _prgpar 2007、集團幣取 _prgpar 2021。

年度+截止日期=SP 取數區間;資料年數=展開幾年

查詢 時,系統用 年度截止日期 組出傳給 SP 的日期區間:

  • 起始日(年度 − 1)/01/01,亦即比基準年再往前一年的年初(會多撈一年當基期)。
  • 截止日年度/截止日期(例如年度 2026、截止日期 12/312026/12/31)。
  • 取數透過 SP DARB_QRY_ACC_SELFRPT 執行,部門代號作為第四個參數帶入篩選。

取回資料後,資料年數 才決定要往回展開幾個年度(今年、去年、前年…):系統依 報表公式設定 的公式,對每一列、每個年度位移、每個期間欄位(含月、合計、當期、各季、上下半年)逐一算值;當期起始/截止月份 就是在這裡決定「當期」欄位要把哪幾個月加總起來。

按「查詢」前的必填檢核

查詢 時母頁會先檢查 報表編號 是否為空:

  1. 若報表編號空白,查詢會被擋下、不送出,並跳出「請輸入報表編號」的提示訊息(PleaseInputReportCode)。
  2. 補上報表編號後再按一次 查詢 即可正常執行。

列印與匯出(在母頁進行)

條件查出資料後,列印/匯出是在 自訂財報執行查詢 母頁操作。母頁的 GetReports 提供十種報表格式(如月份預算比較表、預算與實際比較表、當期損益與預算比較表、月份損益比較表、當期損益與去年同期比較表、T 字帳報表、當期簡表等),實際可用清單與欄位請見母頁。

百分比基準由報表設定控制

報表中各列的「比」(百分比)欄位,是以 報表公式設定 裡被標為「百分比基準」的那一列為分母去算的。若整張報表百分比都是 0,多半是沒有任何一列被設成百分比基準。

常見問題

按了「查詢」沒有反應、也沒有結果?

最常見的原因是 報表編號 沒填。報表編號是必填條件,空白時查詢會被擋下並提示「請輸入報表編號」。請先在報表編號欄輸入或挑選一張已在 報表公式設定 建好的報表。

報表編號查不到任何資料、或帶不出報表名稱?

報表編號的來源是 報表公式設定。請確認該編號的報表已建立並有公式列。若編號存在但右側報表名稱空白,通常是該報表設定缺名稱或尚未存檔。

報表每一列金額都是 0?

金額來自已過帳的傳票。請確認:年度與截止日期落在有交易資料的期間、所選部門代號(或 ALL)底下確有傳票、所選幣別對應的借貸金額不為空。三者任一不符都可能讓整列算出 0。

想看好幾年同期一起比較,要怎麼設?

資料年數 調大(最多一位數)。它決定結果往回展開幾個年度欄位群(今年、去年、前年…),系統會對每個年度都套一次公式算同期值。資料年數預設為 2。

改了幣別金額卻沒變?

幣別只在重新查詢時生效。改完 本幣 / 功能幣 / 集團幣 後要再按一次 查詢 才會以新口徑與對應小數位數重算。

月份只能填 1~12 嗎?

是。當期起始月份/截止月份 若輸入小於 1 或大於 12,系統會自動夾回 1 或 12,避免送出非法的月份區間。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收後補拍(放 docs/N-GeneralLedger/images/):

  1. acc_selfrptcondition-step1.png — 條件面板全貌(年度/截止日期/資料年數/月份/幣別/部門/報表編號)
  2. acc_selfrptcondition-step2.png — 報表編號查詢與自動帶出報表名稱
  3. acc_selfrptcondition-step3.png — 幣別三選一(本幣/功能幣/集團幣)