金蝶 K3Cloud webapi 常见问题
!!!主要需要注意 serverUrl需要以/结尾!!!
需要注意引用Microsoft.Extensions.Configuration.Abstractions
1.
//serverUrl需要以“/”结尾
K3CloudApi client = new K3CloudApi("http://xxx.xxx.xxx.xxx/k3cloud/");
var ret = client.LoginByAppSecret("xx", "xx", "xx", "xx", 2052);
K3CloudApi client = new K3CloudApi(new ThirdPassPortInfo
{
ApiAppId = "xxx",
AppSec = "xxx",
CloudDbId = "x",xx
CloudUrl = "http://xxx.xxx.xxx.xxx/k3cloud/",
CloudUser = "xxx",
Language = "2052"
}, 1000);
-
也可以手动调用client.LoginByAppSecret
-
获取元数据
//读取配置,初始化SDK
K3CloudApi client = new K3CloudApi();
//用于记录结果
StringBuilder Info = new StringBuilder();
//请求参数,要求为json字符串PRD_PPBOM
string jsonData = "{\"FormId\":\"STK_InStock\"}";
//调用接口
string resultJson = client.QueryBusinessInfo(jsonData);
//对返回结果进行解析和校验,这里使用的是JsonPatch
JObject resultJObject = JObject.Parse(resultJson);
JToken queryNode = resultJObject.SelectToken("$..IsSuccess");
//判断并记录结果
if (queryNode == null)
{
Info.AppendLine("返回异常");
}
else
{
bool isSuccess = queryNode.Value<bool>();
Info.AppendLine(isSuccess ? "操作成功" : "操作失败");
if (isSuccess)
{
string originFile = "PoInBill";
FileInfo file = new FileInfo(@$"D:\work\code\MES1.5_API\MES.Common.DataAdapter\DataAdapter.Demo\Kingdee.CDP.WebApi.SDK.Test\元数据\{originFile}.txt");
File.WriteAllText(file.FullName, resultJObject.ToString());
}
}
-
子表id需要使用 Key_EntryPkFieldName 即从元数据中获取到的key和实体中主键字段名 例如: FInStockEntry_FEntryID
-
子表数据行号与子表id逻辑一致,使用key_SeqFieldKey拼接 即从元数据中获取到的key和实体中SeqFieldKey字段名 例如: FInStockEntry_FSEQ
-
扩展查询
字段只给了FMaterialID,想查询对应物料名称时可以直接查询FMaterialID.FName
- 仓位
根据仓库下FFlexID到仓库值集列表【FormID为BD_FLEXVALUES】中查询FID等于仓库中FFlexID的数据
另外还可以根据仓库中是否启用仓位管理来处理其他业务。
读取仓位可以直接通过关联关系读取
如,仓位字段为FSrcStockLocId,则可以通过FSRCSTOCKLOCID.FF100004读取仓位值集id,FSRCSTOCKLOCID.FF100004.FName读取名称,FSRCSTOCKLOCID.FF100004.FNumber读取编号
- 仓位维度如何确定
在保存仓位维度时仓位字段的字段名不是固定的字段,需要动态拼接,如图是一些仓位字段名
在保存的时候需要根据上面第8条中获取到的FID动态拼接,可以使用键值对来拼接,需要保证FSTOCKLOCID__FF的前缀FSTOCKLOCID和回写对应的字段名一致
var fid="";
var dic=new Dictory<string,object>();
dic.Add($"FSTOCKLOCID__FF{flexID}",new{FNumber=$"{FFlexValueNumber}"});
完整流程大致为,获取仓库信息(FormID:BD_STOCK,字段FStockId ,FNumber,FFlexId,FIsOpenLocation-是否启用仓位管理),根据仓库字段FIsOpenLocation=1 获取启用仓位管理的仓库信息,如果没启用就不需要填写仓位字段
根据获取到的FFlexId(对应仓位值集下的FID字段),获取仓库下所有的仓位值集( FormID:BD_FLEXVALUES,字段FID,FNumber,FNAME,FFlexValueNumber,FFlexValueName )
NeedUpDateFields字段同时添加对应的字段名,例:FSTOCKLOCID__FF05
- 单据关联
单据细项中通过FEntity_Link 字段关联,可以参考https://vip.kingdee.com/article/171055?productLineId=1
需要注意更新字段需要添加"FEntity_Link","FEntity_Link_FFlowLineId","FEntity_Link_FRuleId","FEntity_Link_FFlowId","FEntity_Link_FSId","FEntity_Link_FSBillId","FEntity_Link_FSTableName"
参数格式如下
//生产领料单参数如下,其他单据只需要调整对应的FEntity_Link_FRuleId、FEntity_Link_FSTableName即可,此参数可以通过查询旧的数据来获取
"FEntity_Link":[
{
"FEntity_Link_FSId":100558, //明细id
"FEntity_Link_FRuleId":"PRD_IssueMtrl2PickMtrl",
"FEntity_Link_FSBillId":147446, //单据id
"FEntity_Link_FSTableName":"T_PRD_PPBOMENTRY",
"FEntity_Link_FFlowId":"81119477-4778-4d0b-94b9-1c43a1c1f768",
"FEntity_Link_FFlowLineId":5
}
]
- 库存计算
//需要根据物料的单位换算分子/分母计算库存数量( FMaterialid.FSTOREURNOM,FMaterialid.FSTOREURNUM),然后再根据【库存量(基本单位)*分子/分母】
(FBASEQTY*FSTOREURNOM/FSTOREURNUM)
-
保存接口如果需要修改明细数据时需要注意在NeedUpDateFields中添加对应的明细字段名称
如收料通知单更新交货数量需要设置修改字段为 "FBillType", "FDate", "FDetailEntity", "FActReceiveQty"
主要是需要添加FDetailEntity这个字段名称。
其他单据需要根据实际情况设置,例如有些单据为FEntity -
在下游单据中查询上游单据主表、明细id
有两种模式获取对应的上游单据id
一种是元数据内部自带的字段,另一种需要通过关联关系获取(参考第10条单据关联中的字段Key)
//参考第10条单据关联中的字段
FieldKeys="FInStockEntry_Link_FSBillId,FInStockEntry_Link_FSId"
- 查询所有的基础数据模型
通过BOS_ObjectType查询 ,也可以通过这个模型查询所有二开(扩展开发)的单据
FDEVTYPE: /0-普通,1-继承,2-扩展开发,3-视图/
FMODELTYPEID: (100单据,400基础资料,500动态表单,900账表)
{
"FormId": "BOS_ObjectType",
"FieldKeys": "FID,FName,FMODELTYPEID,FNameEx,FDEVTYPE ",
"FilterString": "FName='发货通知单'",
"OrderString": "",
"TopRowCount": 0,
"StartRow": 0,
"Limit": 2000,
"SubSystemId": ""
}
金蝶安装包
https://pan.yunzhijia.com/s/MTAyNDEwNCxhM2Q1#/share/0
[参考]
金蝶云php webapi,金蝶云星空(WebApi集成方式):免密码登录接口
如何使用SDK?
知识分享:如何为仓位字段随机填写值
联系我:renhanlinbsl@163.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本