二开案例-【WebAPI】如何通过WebAPI进行单据查询
一、请求参数
参数名 | 参数说明 | 是否必录 |
FormId | 业务对象表单Id | 是 |
FieldKeys | 需查询的字段key集合 | 是 |
FilterString | 过滤条件 | 否 |
OrderString | 排序字段 | 否 |
TopRowCount | 返回总行数 | 否 |
StartRow | 开始行索引 | 否 |
Limit | 最大行数,不能超过10000 | 否 |
SubSystemId | 表单所在的子系统内码 | 否 |
二、注意重点
对于单据查询接口最主要的是FieldKeys(需查询字段)和FilterString(过滤条件)
1、FieldKeys(格式:"key1,key2,...")
查找字段标识方式:
1)Web API页面选择对应单据,操作列表选择保存,找到字段说明即可查找所需字段标识
2)使用BOS,打开对应单据业务对象查找所需字段标识
3)如果是查询单据体内码或行号,需要加单据体标识,格式:单据体标识+"_"+字段标识,如:FTreeEntity_FEntryId
4)查询基础资料属性,用"."属性来查询,格式:基础资料字段标识+"."+属性标识,如:FMaterialId.FNumber
5)查询总行数,FieldKeys填写count(1),并且Limit给0
2、FilterString
有以下两种形式:
1)[{"Left":"(","FieldName":"Field1","Compare":"67","Value":"111","Right":")","Logic":"0"},{"Left":"(","FieldName":"Field2","Compare":"67","Value":"222","Right":")","Logic":"0"}],比较运算符内码Compare可通过填写测试数据返回
2)类似于SQL查询where条件,如:FDocumentStatus='C' and FCreateDate between '2024/07/01' and '2024/07/04',一般可直接使用这种方式
三、常见问题
1、查询单据头信息返回的数据会有多行
1)查询基础资料,基础资料是分配型的,如果未指定使用组织则会返回所有组织符合条件的数据
2)过滤条件中涉及的字段其数据表跟单据头是一对多的关系
2、提示“元数据中标识为xxx的字段不存在”
检查字段标识是否正确,如果正确可查看BOS,该字段是否维护字段名,如未维护字段名则不能进行查询
3、无法查询多选基础资料
多选基础资料存储于另外单独的表,不支持查询
四、请求Json示例
{ "FormId": "PRD_MO", "FieldKeys": "FID,FBillNo,FDocumentStatus,FCreateDate,FTreeEntity_FEntryId,FTreeEntity_FSeq,FMaterialId,FMaterialId.FNumber", "FilterString": "FDocumentStatus='C' and FCreateDate between '2024/07/01' and '2024/07/04'", "OrderString": "", "TopRowCount": 0, "StartRow": 0, "Limit": 2000, "SubSystemId": "" }
二开案例-【WebAPI】如何通过WebAPI进行单据查询
本文2024-09-23 03:09:24发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-157068.html