程式資訊
- 程式 ID:
Acc_selfrptCondition - 所屬子系統:N.總帳管理
- 狀態:stable
自訂財報查詢條件¶
功能簡介¶
「自訂財報查詢條件」是 自訂財報執行查詢(ACC_SELFRPT,選單編號 N-130)的查詢條件面板。它本身不是一支獨立程式,而是 Acc_selfrptConditionViewModel 所對應的條件輸入畫面——你在這裡填好年度、截止日期、資料年數、當期月份區間、幣別、部門與報表編號,再按工具列的 查詢,系統就會以這些條件去跑自訂財報,把每一列公式(如毛利率、營業利益、各科目小計)依公式設定算出多年同期的數字。
這頁通常由財會主管或會計使用:先在 報表公式設定 裡定義好一張報表的公式與列印格式,之後每次出報表就靠這個條件面板挑年度、月份、幣別與部門。
本頁與「自訂財報執行查詢」是同一支程式
本條件面板(Acc_selfrptCondition)與母查詢頁 自訂財報執行查詢 共用同一個 ProgramClass ACC_SELFRPT。本頁只負責輸入查詢條件;查詢結果的欄位、年度欄頭規則、可列印的十種報表格式,請見母頁。
前置需求¶
- 權限:N.總帳 →
N-130 自訂財報的瀏覽(查詢)/列印權限。 - 基礎資料:條件能不能查出東西、算得對不對,取決於下列資料——
| 資料 | 影響什麼 |
|---|---|
| 報表公式設定(公式表 / 報表編號) | 報表編號欄要能查到;公式列、起訖部門、百分比基準都由這裡定義 |
| 傳票(已過帳的總帳交易) | 各科目的借貸金額來源,決定報表每一列算出來的數字 |
| 年度預算 | 報表中「預算」相關欄位(BudgetTotal、各季預算等)的來源 |
| 部門主檔 | 部門代號欄的查詢與「ALL」全部部門的對應 |
幣別參數(本幣 / 功能幣 / 集團幣,_prgpar 2007、2021) |
幣別選項顯示的幣別代碼,以及金額小數位數 |
操作步驟¶
- 開啟 自訂財報執行查詢,系統會先顯示這個條件面板。
- 輸入 年度(預設帶當年)。這是報表的基準年(今年 Year0),結果格線的各年度欄位都以它為起點往回展開。
- 輸入 截止日期(月/日,預設
12/31)。系統會把它接在年度後面組成「年度/截止日期」當作取數的截止日。 - 輸入 資料年數(單一位數,預設
2)。代表結果要往回展開幾個年度欄位群(今年 Year0、去年 Year1…),系統會對每一列、每個年度都套一次公式算出同期數字並排比較。 - 輸入 當期起始月份 與 當期截止月份(預設起始
1、截止為當月)。這組區間決定報表中「當期」欄位涵蓋的月份範圍。 - 選擇 幣別:
本幣(預設)、功能幣或集團幣,三選一。 - 輸入或查詢 部門代號(預設
ALL全部部門)。 - 在 報表編號 欄輸入或按查詢挑一張已設定好的自訂財報;選定後右側會自動帶出報表名稱。
- 按工具列的
查詢執行。若沒填報表編號,系統會擋下並提示,詳見欄位連動與附加功能。
小技巧
換幣別、改月份區間或改年度後不必重設其他欄位,直接再按一次 查詢 即可重算。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 年度 | ✔ | 西元年,遮罩為 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"):
- 你直接打編號、或按查詢從 報表公式設定 清單挑一張報表。
- 選定後,系統把該報表的名稱寫進 報表名稱(
SelfReportName),右側唯讀框即時顯示。 - 報表編號是查詢的關鍵——它決定要套用哪一組公式列去算。
幣別決定金額口徑與小數位數¶
幣別 的三選一不只是換顯示,它會:
- 切換金額取數的口徑——
本幣取本位幣借貸、功能幣取功能幣借貸、集團幣取集團幣借貸,分別對應不同的借貸欄位做加總。 - 決定金額顯示的小數位數:本幣用本位幣小數位、功能幣用功能幣小數位、集團幣用集團幣小數位。
- 報表上顯示的幣別代碼,本幣取環境設定的本位幣、功能幣取
_prgpar2007、集團幣取_prgpar2021。
年度+截止日期=SP 取數區間;資料年數=展開幾年¶
按 查詢 時,系統用 年度 與 截止日期 組出傳給 SP 的日期區間:
- 起始日=
(年度 − 1)/01/01,亦即比基準年再往前一年的年初(會多撈一年當基期)。 - 截止日=
年度/截止日期(例如年度 2026、截止日期12/31→2026/12/31)。 - 取數透過 SP
DARB_QRY_ACC_SELFRPT執行,部門代號作為第四個參數帶入篩選。
取回資料後,資料年數 才決定要往回展開幾個年度(今年、去年、前年…):系統依 報表公式設定 的公式,對每一列、每個年度位移、每個期間欄位(含月、合計、當期、各季、上下半年)逐一算值;當期起始/截止月份 就是在這裡決定「當期」欄位要把哪幾個月加總起來。
按「查詢」前的必填檢核¶
按 查詢 時母頁會先檢查 報表編號 是否為空:
- 若報表編號空白,查詢會被擋下、不送出,並跳出「請輸入報表編號」的提示訊息(
PleaseInputReportCode)。 - 補上報表編號後再按一次
查詢即可正常執行。
列印與匯出(在母頁進行)¶
條件查出資料後,列印/匯出是在 自訂財報執行查詢 母頁操作。母頁的 GetReports 提供十種報表格式(如月份預算比較表、預算與實際比較表、當期損益與預算比較表、月份損益比較表、當期損益與去年同期比較表、T 字帳報表、當期簡表等),實際可用清單與欄位請見母頁。
百分比基準由報表設定控制
報表中各列的「比」(百分比)欄位,是以 報表公式設定 裡被標為「百分比基準」的那一列為分母去算的。若整張報表百分比都是 0,多半是沒有任何一列被設成百分比基準。
常見問題¶
按了「查詢」沒有反應、也沒有結果?
最常見的原因是 報表編號 沒填。報表編號是必填條件,空白時查詢會被擋下並提示「請輸入報表編號」。請先在報表編號欄輸入或挑選一張已在 報表公式設定 建好的報表。
報表編號查不到任何資料、或帶不出報表名稱?
報表編號的來源是 報表公式設定。請確認該編號的報表已建立並有公式列。若編號存在但右側報表名稱空白,通常是該報表設定缺名稱或尚未存檔。
報表每一列金額都是 0?
金額來自已過帳的傳票。請確認:年度與截止日期落在有交易資料的期間、所選部門代號(或 ALL)底下確有傳票、所選幣別對應的借貸金額不為空。三者任一不符都可能讓整列算出 0。
想看好幾年同期一起比較,要怎麼設?
把 資料年數 調大(最多一位數)。它決定結果往回展開幾個年度欄位群(今年、去年、前年…),系統會對每個年度都套一次公式算同期值。資料年數預設為 2。
改了幣別金額卻沒變?
幣別只在重新查詢時生效。改完 本幣 / 功能幣 / 集團幣 後要再按一次 查詢 才會以新口徑與對應小數位數重算。
月份只能填 1~12 嗎?
是。當期起始月份/截止月份 若輸入小於 1 或大於 12,系統會自動夾回 1 或 12,避免送出非法的月份區間。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/N-GeneralLedger/images/):
acc_selfrptcondition-step1.png— 條件面板全貌(年度/截止日期/資料年數/月份/幣別/部門/報表編號)acc_selfrptcondition-step2.png— 報表編號查詢與自動帶出報表名稱acc_selfrptcondition-step3.png— 幣別三選一(本幣/功能幣/集團幣)