편집기, 거래 입력 양식, 조회 보고서를 사용하여 원장을 관리하세요. 아래의 실행 가능한 예제는 Fava 1.30.16, Beancount 3.2.0, beanquery 0.2.0 버전을 대상으로 합니다. 고정 로컬 설정을 따르세요.
beancount.io는 별도의 대시보드를 사용합니다. 그 제품 소스는 원장 경로, 조회, 문서 및 설정을 확인하며, 여러 Fava 표시 옵션에 대한 소비자도 포함합니다. 이는 Fava의 키보드 단축키, 삽입 규칙, 플러그인 실행 또는 URL 경로를 호스트된 호환성 약속으로 만들지 않습니다. 아래 이미지는 호스트된 대시보드를 보여주며, 기본 UI가 아닙니다.

1. 편집 및 데이터 입력
기본 제공 편집기
Fava의 기본 편집기는 계정, 수취인 및 태그에 대한 자동 완성을 제공합니다. default-file을 사용하여 초기 소스 파일을 선택하세요. insert-entry는 해당 파일의 최신 삽입 마커에 커서를 위치시킵니다. 이는 Beancount의 핵심 옵션이 아닙니다.
2000-01-01 custom "fava-option" "default-file"
2024-01-01 custom "fava-option" "insert-entry" "^Expenses:Food$"이 조각은 포함된 파일을 선택합니다. 2024년 1월 1일 이후의 항목 중 Expenses:Food와 일치하는 항목은 마커 앞에 삽입됩니다. 단, 더 최신의 적격 규칙이나 더 최신의 게시 계정이 우선하지 않는 경우에만 해당됩니다. 전체 다중 파일 삽입 예제를 참조하세요.
거래 추가
Fava에서 +를 클릭하거나 n을 눌러 거래 입력 양식을 엽니다. 설명 필드는 공백으로 구분된 태그와 링크를 허용합니다(예: Lunch #food ^receipt-001). 계정 이름은 미리 open 지시문이 있어야 합니다.
이 전체 원장을 ui-demo.beancount로 저장하여 아래 보고서를 테스트하세요. 양수 비용은 차변이고, 음수 현금 게시는 대변입니다.
option "title" "UI Demo"
option "operating_currency" "USD"
2024-01-01 open Assets:Checking USD
fava-uptodate-indication: TRUE
2024-01-01 open Income:Salary USD
2024-01-01 open Expenses:Food USD
2024-01-02 * "Salary"
Assets:Checking 3000.00 USD
Income:Salary -3000.00 USD
2024-01-03 * "Groceries" #food
Expenses:Food 400.00 USD
Assets:Checking -400.00 USD
2024-01-04 balance Assets:Checking 2600.00 USDbean-check ui-demo.beancount를 실행한 다음 fava ui-demo.beancount를 실행하세요. 검사가 통과하고 현금 잔액은 2,600.00 USD입니다. 미래 날짜의 거래에 #template 태그를 사용해도 실제 거래입니다. 이 태그는 거래를 재사용 가능한 양식으로 만들지 않습니다. 가상 거래는 별도 시나리오 원장에 보관하세요.
2. 문서 관리
Fava는 계정 이름이나 원장 행에 문서를 끌어다 놓아 업로드할 수 있습니다. 실제 문서 루트를 구성하고 계정 계층 구조를 개설된 계정과 일관되게 유지하세요.
이 선택적 조각은 ui-demo.beancount에 추가할 수 있습니다. 먼저 원장과 함께 documents 디렉터리를 만드세요. 검색을 테스트하려면 2024-01-03-receipt.pdf 파일을 documents/Expenses/Food/ 안에 실제로 배치하세요.
option "documents" "documents"
plugin "fava.plugins.link_documents"
plugin "fava.plugins.tag_discovered_documents"이는 Fava 1.30.16에 포함된 실제 모듈입니다. Beancount는 계정 디렉터리에서 날짜가 있는 파일을 검색합니다. tag_discovered_documents는 #discovered 태그를 추가합니다. link_documents는 document 메타데이터를 문서 항목과 일치시켜 연결합니다. 영수증 내용에서 거래 연관성을 추론하지 않습니다. 이 메타데이터를 기존 Groceries 헤더 바로 아래, 게시 항목 앞에 추가하세요.
document: "2024-01-03-receipt.pdf"들여쓰기된 줄은 메타데이터 조각이며, 독립된 원장이 아닙니다. 파일이 있으면 문서는 #linked 태그를 받고 거래와 ^dok-2024-01-03 링크를 공유합니다. 일치하는 문서가 없으면 오류가 발생합니다. 정확한 동작은 버전별 문서 연결 플러그인을 참조하세요.
3. BQL을 사용한 조회 및 분석
Fava의 조회 페이지는 Beancount Query Language를 실행합니다. 전체 원장 결과를 재현하기 전에 전역 날짜/계정 필터를 지우세요. UI 필터는 조회 실행 전에 항목을 제거할 수 있습니다.
결과는 CSV로 다운로드할 수 있습니다. 차트 지원은 결과 유형에 따라 다릅니다. 기본 도움말은 정확히 두 개의 열(날짜 또는 문자열 다음에 수량)을 설명합니다. 임의의 숫자 열 쌍은 차트를 보장하지 않습니다.
실용 조회 예제
이 조회를 ui-demo.beancount에서 Fava의 조회 페이지에 실행하거나 각 조회를 bean-query ui-demo.beancount에 전달하세요.
월별 비용 요약:
SELECT account, SUM(position) AS total
FROM postings
WHERE account ~ '^Expenses:'
AND date >= 2024-01-01 AND date < 2024-02-01
GROUP BY account
ORDER BY account;예상 결과: Expenses:Food, 400.00 USD.
월별 수입 대비 지출:
SELECT YEAR(date) AS year, MONTH(date) AS month,
ROOT(account, 1) AS category, currency,
SUM(number) AS signed_total
FROM postings
WHERE account ~ '^(Income|Expenses):'
GROUP BY year, month, category, currency
ORDER BY year, month, category, currency;| 연도 | 월 | 범주 | 통화 | 합계 |
|---|---|---|---|---|
| 2024 | 1 | 비용 | USD | 400.00 |
| 2024 | 1 | 수입 | USD | -3000.00 |
조회는 Beancount의 부호를 유지하고 단위를 통화별로 그룹화합니다. 수입 3,000.00 USD에서 비용 400.00 USD를 빼면 2,600.00 USD가 남습니다. 이는 단위 보고서이며, 환산 또는 원가 기준 보고서가 아닙니다. IIF는 beanquery 0.2.0에서 사용할 수 없으며, 단항 -position은 지원되지 않습니다. 두 범주를 그룹화하면 두 작업을 모두 피할 수 있습니다.
4. 사용자 지정 및 워크플로우
보기 사용자 지정
다음 Fava 지시문을 예제 원장에 추가하여 영(0) 잔액 계정을 숨기고 투자 항목을 접으세요:
2000-01-01 custom "fava-option" "show-closed-accounts" "false"
2000-01-01 custom "fava-option" "show-accounts-with-zero-balance" "false"
2000-01-01 custom "fava-option" "collapse-pattern" "^Assets:Investments"이는 보고서 계정 트리에 영향을 미칩니다. 잔액이 0이 아닌 계정은 계속 표시됩니다. option "show-closed-accounts" "false"와 같은 핵심 형식은 Beancount 검증에 실패합니다.
샘플의 fava-uptodate-indication: TRUE 메타데이터는 open 아래에 자체 들여쓰기된 줄에 있어야 합니다. open 줄에 넣거나 부울을 따옴표로 묶지 마세요. 최신 잔액 확인은 녹색, 실패한 확인은 빨간색, 후속 거래는 노란색으로 표시됩니다. 1월 4일 확인은 녹색입니다. 별도의 회색 신선도 표시는 오래된 날짜 때문에 나타날 수 있습니다.
사이드바 링크
UI Demo라는 기본 예제의 경우 다음 전체 경로가 보고서로 연결됩니다:
2024-01-01 custom "fava-sidebar-link" "January Expenses" "/ui-demo/income_statement/?time=2024-01"
2024-01-01 custom "fava-sidebar-link" "All Documents" "/ui-demo/documents/"이 경로는 Fava가 호스트 루트에 마운트되어 있다고 가정합니다. /ui-demo를 실제 원장 슬러그로 바꾸고 서버 마운트 접두사를 포함하세요. 사용자 지정 사이드바 링크에서 테스트된 /jump 동작 및 호스트된 라우팅 경계를 참조하세요.
일반 구성
여러 기본 파일로 Fava를 시작하면 원장 전환기에 별도의 원장이 생성됩니다. include를 통해 포함된 파일은 하나의 원장에 남아 편집 가능한 소스로 표시됩니다. 이는 별도의 장부가 아닙니다.
language, default-file 및 use-external-editor에 Fava 옵션을 사용하세요. 외부 편집기는 beancount:// 핸들러와 소스 파일에 대한 접근 권한이 필요합니다. 실제 기본 확장 모듈에는 fava.ext.auto_commit 및 fava.ext.portfolio_list도 포함됩니다. 확장은 자체 전제 조건과 함께 custom "fava-extension"을 사용합니다. 이는 위에서 사용된 plugin 지시문과 구별됩니다. Fava의 버전별 확장 도움말을 참조하세요.
5. 성능 및 문제 해결
대용량 파일 처리
include를 사용하여 계정이나 기간별로 원장을 구성하세요. Beancount는 여전히 포함된 파일을 로드하므로, 장부를 분할해도 보고서 입력량이 줄지 않습니다. 더 작은 보고서가 필요할 때는 표시 날짜를 제한하고 복잡한 조회를 단순화하세요.
일반적인 문제 및 해결 방법
- 원장 오류:
bean-check를 실행하고 Fava의 오류 보고서를 확인하세요. 로더에 오류가 있어도 페이지가 렌더링될 수 있습니다. - 예상치 못한 옵션 동작: 테스트된 런타임을 확인하고 날짜가 있는 Fava 사용자 지정 지시문을 사용하세요.
bean-check는 알 수 없는 Fava 옵션을 자체적으로 감지할 수 없습니다. - 예상치 못한 조회 합계: 전역 필터를 지우고, 개시 이력을 포함하고, 통화를 분리하세요.
- 문서 누락: 디렉터리가 존재하는지, 계정이 개설되었는지, 파일 이름이 유효한 날짜로 시작하는지, 거래 메타데이터가 문서와 일치하는지 확인하세요.
대비를 위해, 다음은 의도적으로 잘못된 예제입니다. 작업 원장에 복사하면 안 됩니다:
option "insert-entry" "Expenses:Food"
custom "fava-sidebar-link" "Label" "/jump?time=month"첫 번째는 알 수 없는 핵심 옵션을 사용합니다. 두 번째는 필수 날짜를 생략합니다. 기본 기능 참조는 이 릴리스의 UI 동작을 설명합니다.