调用API保存采购订单没成功问题!
金蝶云社区-飞天笑
飞天笑
0人赞赏了该文章 969次浏览 未经作者许可,禁止转载编辑于2016年12月05日 10:41:29

丁工您好!麻烦看看:
1、我的问题是采购订单保存时提示如下:(好像是供应商什么问题,但都以填好?寻找很久不知如何处理?)
===result 返回错误提示如下:============================
{"Result":{"ResponseStatus":{"ErrorCode":500,"IsSuccess":false,"Errors":[{"FieldName":"MapComplexProperty Field Error :Field Key is 【FSupplierId】","Message":" 在 Kingdee.BOS.WebApi.FormService.MapPropertyService.MapComplexProperty(String pkProperty, Dictionary`2 sourceObj, DynamicObject targetObj, Int32 rowIndex, HashSet`1 NeedUpDateFields)\r\n 在 Kingdee.BOS.WebApi.FormService.Save.Execute()\r\n 在 Kingdee.BOS.WebApi.FormService.BillOperationService.ExecuteOperation(FormOperation op, String data)","DIndex":0}],"SuccessEntitys":[]}}}
================================================
2、如何查单据类型的FNumber值(select语句)?如图

================================================
代码如下:
string strConnect = System.Configuration.ConfigurationManager.ConnectionStrings["HMcloud"].ConnectionString;
string CloudUrl = strConnect.Trim();

ApiClient client = new ApiClient(CloudUrl.Trim());

var loginResult = client.Login(
"58c5a04fca6029",//帐套Id
"kingdee",//用户名
"123456",//密码
2052);
string result = "登录失败,请检查与站点地址、数据中心Id,用户名及密码!";

// 登陆成功,开始保存数据
if (loginResult == true)
{
// 开始构建Web API参数对象
// 参数根对象:包含Creator、NeedUpDateFields、Model这三个子参数
// using Newtonsoft.Json.Linq; // (需引用Newtonsoft.Json.dll)
JObject jsonRoot = new JObject();

// Creator: 创建用户
jsonRoot.Add("Creator", "kingdee");
jsonRoot.Add("NeedUpDateFields", new JArray(""));
// Model: 单据详细数据参数
JObject model = new JObject();
jsonRoot.Add("Model", model);

// 开始设置单据字段值-----------表头---
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
// 特别注意:字段Key大小写是敏感的,建议从BOS设计器中,直接复制字段的标识属性过来
model.Add("FID", 0); //单据主键
JObject basedata = new JObject();
//basedata.Add("FNumber", "100"); //单据类型(必填) FBillTypeID //?????主业务组织 (采购组织:必须填写,是基础资料字段)
//model.Add("FBillTypeID", basedata);

basedata = new JObject();
basedata.Add("FNumber", "01.007"); //供应商(必填) FSupplierId
model.Add("FSupplierId", basedata);

basedata = new JObject();
basedata.Add("FNumber", "100.1.07"); //采购组织(必填) FPurchaseOrgId
model.Add("FPurchaseOrgId", basedata);

//model.Add("FBillNo", "JD05190001"); //单据编号 (可以忽略,由系统根据编码规则自动生成)
model.Add("FDate", DateTime.Today); //采购日期(必填)FDate

// 开始构建单据体参数:集合参数JArray -----------表体明细---
JArray entryRows = new JArray();
// 把单据体行集合,添加到model中,以单据体Key为标识
model.Add("FPOOrderEntry", entryRows); //采购订单子单据体标识 ??FEntity

// 循环添加单据体行
for (int i = 0; i <= 0; i++)
{
#region 创建单据体新行
JObject entryRow = new JObject();// 添加新行
entryRows.Add(entryRow);

// 给新行,设置关键字段值
// 单据体主键:必须填写,系统据此判断是新增还是修改行
entryRow.Add("FEntryID", 0);

// 给单据体字段赋值
basedata = new JObject();
basedata.Add("FNumber", "01.01.01.01.01");//物料编码
entryRow.Add("FMaterialId", basedata); //FMaterialId

basedata = new JObject();
basedata.Add("FNumber", "03");//计量单位
entryRow.Add("FUnitId", basedata);//FUnitId

entryRow.Add("FQty", 10); //数量
entryRow.Add("FPrice", 11.11); //单价

#endregion 创建单据体新行
}

// 调用Web API接口服务,保存采购订单(PUR_PurchaseOrder,jsonRoot.ToString())
result = client.Execute(
"Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save",
new object[] { "PUR_PurchaseOrder", jsonRoot.ToString() });
}
return result;