# 分页查询流程

## ExecuteBillQuery 单次查询

```
POST {server_url}Kingdee.BOS.WebApi.ServicesStub.BusinessDataService.ExecuteBillQuery.common.kdsvc

[
  {
    "FormId": "BD_Material",           // 表单ID
    "FieldKeys": "FNumber,FName",      // 字段列表（逗号分隔）
    "FilterString": "FNumber = '{material_number}'", // 过滤条件
    "StartRow": 0,                      // 起始行
    "Limit": 1000                       // 每页行数（0=不限）
  }
]
```

**响应**（二维数组，行=记录，列=FieldKeys 顺序）：
```json
[
  ["M.01", "物料A"],
  ["M.02", "物料B"]
]
```

## 分页循环

```python
start_row = 0
limit = 1000
all_results = []

while True:
    result = client.execute_bill_query(
        form_id="BD_Material",
        field_keys="FNumber,FName",
        filter_string="FIsEnable = 1",
        start_row=start_row,
        limit=limit
    )
    if not result or len(result) == 0:
        break
    all_results.extend(result)
    start_row += limit
```

## 注意事项

- `Limit` 建议设 1000-2000，过大可能导致超时
- `FieldKeys` 推荐只查询必要字段，避免使用 `*`
- `FilterString` 推荐使用平台过滤语法，避免直接拼接用户输入
- 查询无结果返回空数组 `[]`，不是 `null`
