通过 MCP 工具与金蝶云星空 API 交互的核心指南。查询前务必先查阅本文件确认表单ID和字段命名规则,避免 500 错误。
前提条件:本 Skill 需配合金蝶云星空 MCP Server 使用,推荐 kingdee-k3cloud-mcp。确保 Claude Code 已配置好 MCP Server 并可访问
query_bill_json、view_bill等工具。
query_bill_json 查列表(关键字段),再用 view_bill 看单条详情FDate >= 'YYYY-MM-DD' AND FDate < 'YYYY-MM-DD+1'FDate 是业务日期(手填), FCreateDate 是系统创建时间。按"今天开的单"统计用 FCreateDateZ = 暂存草稿, A = 创建, B = 审核中, C = 已审核, D = 重新审核top_count 限制行数,只查必要字段,超过20行数据考虑创建 Excelquery_metadata(form_id) 验证字段是否存在,避免试错浪费 token关键限制:金蝶
ExecuteBillQuery单次最多返回约 2000 行;MCP tool-result 上限 1MB。查询结果中带有
"truncated": true则说明数据被截断, 必须继续翻页或分片。
text
① 时间跨度 > 1 周,或不确定数据量
→ 先 count_bill(form_id, filter_string) 估算行数
② estimated_rows ≤ 500(is_exact=true)
→ 一次性 query_bill_json,top_count=500
③ estimated_rows ≤ 2000(is_exact=true)
→ 一次性 query_bill_json,top_count=2000
④ estimated_rows > 2000 或 is_exact=false(≥ 5000)
→ 优先调用(mcp ≥ 1.2.0):
query_bill_range(
form_id, field_keys,
date_field="FDate", date_from="YYYY-01-01", date_to="YYYY+1-01-01",
chunk="month", output_path="/tmp/output.ndjson"
)
→ 兜底做法(mcp < 1.2.0):
for month in 月份范围:
query_bill_json(filter="FDate >= 'YYYY-MM-01' AND FDate < 'YYYY-MM+1-01'", top_count=2000)
若返回 truncated=true → 在该月内继续翻页(start_row=next_start_row)
⑤ 累计行数 > 20 行
→ 必须写入 Excel / CSV 文件,不要把大量数据倾倒进对话
→ 使用 query_bill_to_file 或 query_bill_range(output_path=...) 直接落盘
⑥ 查询中途出 SESSION_EXPIRED
→ 只重试当前片,已翻过的月份无需重跑
python
# 跨年查询,按月自动分片,流式写入本地文件
query_bill_range(
form_id="SAL_SaleOrder",
field_keys="FBillNo,FDate,FCustId.FName,FAllAmount",
date_field="FDate",
date_from="2025-01-01",
date_to="2026-01-01",
chunk="month",
output_path="/tmp/sales_2025.ndjson"
)
# 返回:{"path": "/tmp/sales_2025.ndjson", "row_count": N, "bytes": M, "chunks": 12}
python
start = 0
while True:
result = query_bill_json(form_id, field_keys, filter_string="FDate >= '2025-03-01' AND FDate < '2025-04-01'",
top_count=2000, start_row=start)
# result["rows"] → 本页数据
if not result["truncated"]:
break
start = result["next_start_row"]
时间跨度count_bill 估算推荐做法当日≤ 200 行直接 top_count=200当周≤ 1000 行直接 top_count=1000当月可能 > 2000count_bill 探测,按需翻页跨季度大概率 > 2000query_bill_range(chunk="month", output_path=...) 落盘(mcp ≥ 1.2.0),兜底:按月手动循环跨年必然 > 2000query_bill_range(chunk="month", output_path=...) 落盘(mcp ≥ 1.2.0),兜底:按月手动循环
中文名称表单ID备注物料BD_MATERIAL客户BD_Customer详见 references/customer-query-guide.md供应商BD_Supplier组织ORG_Organizations部门BD_Department员工BD_Empinfo
中文名称表单ID备注销售订单SAL_SaleOrder销售出库单SAL_OUTSTOCK不是 STK_OutStock发货通知单SAL_DELIVERYNOTICE
中文名称表单ID备注采购订单PUR_PurchaseOrder采购入库单STK_InStock非 PUR_ReceiveBill(该ID返回空)采购申请单PUR_Requisition
中文名称表单ID备注库存明细STK_Inventory非物料档案,字段不同其他入库单STK_InStock其他出库单STK_OutStock注意:销售出库是 SAL_OUTSTOCK调拨单STK_TransferDirect凭证GL_VOUCHER收款单AR_receiveBill付款单AP_PAYBILL
F 开头,区分大小写FCustId.FName(名称)、 FCustId.FNumber(编码)query_bill_json 返回行级展开数据,同一 FBillNo 可能出现多行F_ + 前缀开头(各部署不同),可用 query_metadata 发现,详见 references/verified-fields.md字段名含义FBillNo单据编号FDate单据业务日期FCreateDate系统创建时间FDocumentStatus状态(Z/A/B/C/D)FCreatorId.FName创建人FApproverId.FName审核人FApproveDate审核日期
text
query_metadata(form_id="SAL_SaleOrder")
从返回结果中提取: Key = 可用字段名, MustInput=1 = 必填字段, IsViewVisible=false = 已废弃/隐藏字段, Extends = 枚举合法值。
text
query_bill_json(form_id="SAL_SaleOrder", field_keys="FBillNo,FDate,FCustId.FName,FDocumentStatus", filter_string="FDate >= '2026-03-01' AND FDate < '2026-03-02'", top_count=50)
text
view_bill(form_id="SAL_SaleOrder", number="XSDD2602000001") # 替换为实际单号
text
save_bill(form_id, model_data) # 1. 保存
submit_bill(form_id, numbers) # 2. 提交
audit_bill(form_id, numbers) # 3. 审核
text
audit_bill(form_id="SAL_SaleOrder", numbers="XSDD001,XSDD002,XSDD003")
陷阱说明STK_OutStock 当销售出库用销售出库单是 SAL_OUTSTOCK,STK_OutStock 会报"业务对象不存在"FAllAmount 直接求和FAllAmount 是 行级字段,同一订单多行会重复,需按 FBillNo 去重FCustomerID / FCustomerId不存在,正确写法是 FCustId``SAL_OUTSTOCK 中用 FCustId.FName该表中不存在此字段,会报 500STK_Inventory 中用 FNumber不存在,物料编号是 FMaterialId.FNumber``PUR_ReceiveBill 查采购入库返回空,应使用 STK_InStock查询不加 top_count可能返回数据过大超过 1MB 限制query_bill_json 返回正好 2000 行直接使用必须检查 truncated 字段; true 时数据被截断,须继续翻页( start_row=next_start_row)或缩小时间范围用 count_bill 探测后不检查 is_exact``is_exact=false 表示实际行数 ≥ 5000,必须用 query_bill_range(mcp ≥ 1.2.0)或手动按月分片,不能一次拉取
查询具体模块的字段时, 必须先查阅对应 reference 文件 确认字段名:
场景参考文件首次使用、发现自定义字段和仓库配置references/customization-guide.md查任意模块的已验证/禁用字段references/verified-fields.md生成经营日报references/daily-report-workflow.md查询客户信息、生日、类别references/customer-query-guide.md遇到 500 错误、1MB 超限、分页问题references/common-errors.md按客户/业务员/产品分析销售references/sales-analysis-workflow.md库存总览、预警、呆滞分析references/inventory-analysis-workflow.md订单全流程追踪、逾期预警references/order-tracking-workflow.md生成周报/月报、期间对比references/periodic-report-workflow.md
每个金蝶云星空部署都有自己的业务特征,使用前需要了解:
query_bill_json 查几条样本单据,从 FBillNo 字段识别前缀规律STK_Inventory 时先确认 FStockId.FName 的实际值FCustId.FName not like '%内部客户关键词%' 过滤query_metadata(form_id="BD_Customer") 找以 F_ 开头的扩展字段(见 references/verified-fields.md 中的示例)首次使用时建议先调用
query_metadata探索各表单的实际字段,再参考本 Skill 的字段清单。