使用WEB API新增物料会报错,求帮助
金蝶云社区-小卖部部长
小卖部部长
0人赞赏了该文章 732次浏览 未经作者许可,禁止转载编辑于2016年01月19日 14:33:20

我自己用WEB API添加了一些基础资料,能成功添加和修改,但是物料只能修改不能新增,新增的话会报错.然后我在论坛了找了一份比较不错的代码,自己稍作修改,添加物料的时候也还是报同样的错误.

我的CLOUD 是6.0的版本,下载了目前最新的补丁

错误提示如下.
Kingdee.BOS.WebApi.Client.ServiceException (0x80004005): 对象'Kingdee.K3.FIN.App.Core.FINServiceForCommon,Kingdee.K3.FIN.App.Core'创建失败
在 Kingdee.BOS.ServiceFacade.KDServiceFx.ServiceExecutor.Execute(KDServiceContext context, ServiceType svcType, String[] paraValues, SerializerProxy serializeProxy, ServiceType beginMethod)
在 Kingdee.BOS.ServiceFacade.KDServiceFx.ExecuteServiceModule.OnProcess(KDServiceContext context)
在 Kingdee.BOS.ServiceFacade.KDServiceFx.ModulePipeline.ExcuteRequest(KDServiceContext context)
在 Kingdee.BOS.ServiceFacade.KDServiceFx.RequestExcuteRuntime.StartRequest(RequestExtractor requestExtractor, WebContext context)
在 Kingdee.BOS.ServiceFacade.KDServiceFx.KDSVCHandler.ExecuteRequest(WebContext ctx, RequestExtractor requestExtractor)
在 Kingdee.BOS.ServiceFacade.KDServiceFx.KDSVCHandler.ProcessRequestInternal(WebContext webCtx, RequestExtractor requestExtractor)

添加物料的代码如下(论坛中找的代码,然后自己稍作修改了一下).
private void button1_Click(object sender, EventArgs e)
{
JObject js = new JObject();
js.Add("Creator", "");
js.Add("NeedUpDateFields", new JArray());

JObject model = new JObject();
js.Add("Model", model);
model.Add("FMATERIALID", 0);//FMasterId
model.Add("FNumber", "Mytest");
model.Add("FName", "A");
model.Add("FMaterialSRC", "B");//物料来源:ERP

model.Add("FCreateOrgId", K3CloudClient.JsonObject("FNumber", "100"));
model.Add("FUseOrgId", K3CloudClient.JsonObject("FNumber", "100"));

//基本页
JObject tmp = new JObject();
tmp.Add("FErpClsID", "1");//外购
tmp.Add("FIsPurchase", true);//允许采购
tmp.Add("FIsSale", true);//允许销售
tmp.Add("FIsInventory", true);//允许库存
tmp.Add("FIsSubContract", false);//允许委外
tmp.Add("FIsProduce", false);//允许生产
tmp.Add("FIsAsset", false);

tmp.Add("FCategoryID", K3CloudClient.JsonObject("FNumber", "CHLB05_SYS"));//存货类别:产成品
tmp.Add("FTaxType", K3CloudClient.JsonObject("FNumber", "WLDSFL03_SYS"));//税分类:零税率
tmp.Add("FTaxRateId", K3CloudClient.JsonObject("FNumber", "SL04_SYS"));//零税率时的增值税
tmp.Add("FBaseUnitId", K3CloudClient.JsonObject("FNumber", "Pcs"));//个
tmp.Add("FWEIGHTUNITID", K3CloudClient.JsonObject("FNumber", "kg"));//重量单位
tmp.Add("FVOLUMEUNITID", K3CloudClient.JsonObject("FNumber", "m"));//长度单位
model.Add("BD_MATERIAL__SubHeadEntity", tmp);

//库存
tmp = new JObject();
tmp.Add("FStoreUnitID", K3CloudClient.JsonObject("FNumber", "pcs"));
tmp.Add("FCurrencyId", K3CloudClient.JsonObject("FNumber", "PRE001"));
tmp.Add("FIsLockStock", true);
tmp.Add("FUnitConvertDir", "1");//换算方向:从库存单位至辅助单位
// tmp.Add("FStockId", K3CloudClient.JsonObject("FNumber", "001"));//默认仓库
model.Add("BD_MATERIAL__SubHeadEntity1", tmp);

//销售
tmp = new JObject();
tmp.Add("FSaleUnitId", K3CloudClient.JsonObject("FNumber", "pcs"));
tmp.Add("FSalePriceUnitId", K3CloudClient.JsonObject("FNumber", "pcs"));
tmp.Add("FIsReturn", true);
model.Add("BD_MATERIAL__SubHeadEntity2", tmp);

//采购
tmp = new JObject();
tmp.Add("FPurchaseUnitId", K3CloudClient.JsonObject("FNumber", "pcs"));
tmp.Add("FPurchasePriceUnitId", K3CloudClient.JsonObject("FNumber", "pcs"));
tmp.Add("FIsReturnMaterial", true);
//tmp.Add("FDefaultVendor", K3CloudClient.JsonObject("FNumber", "A"));//默认供应商
model.Add("BD_MATERIAL__SubHeadEntity3", tmp);

//委外
tmp = new JObject();
tmp.Add("FSubconUnitId", K3CloudClient.JsonObject("FNumber", "pcs"));
tmp.Add("FSubconPriceUnitId", K3CloudClient.JsonObject("FNumber", "pcs"));
tmp.Add("FSubBillType", K3CloudClient.JsonObject("FNumber", "WWDD01_SYS"));
model.Add("BD_MATERIAL__SubHeadEntity7", tmp);

//质量
tmp = new JObject();
model.Add("BD_MATERIAL__SubHeadEntity6", tmp);

//计划
tmp = new JObject();
tmp.Add("FPlanMode", "0");//计划模式MTS
tmp.Add("FPlanningStrategy", "1");//计划策略:MRP
tmp.Add("FMfgPolicyId", K3CloudClient.JsonObject("FNumber", "ZZCL001_SYS"));//制造策略:考虑库存
tmp.Add("FOrderPolicy", "0");//订货策略:批对批
tmp.Add("FReserveType", "1");//预留类型:弱预留
tmp.Add("FOrderIntervalTimeType", "1");//订货间隔期单位:天
tmp.Add("FFixLeadTimeType", "1");//固定提前期单位:天
tmp.Add("FVarLeadTimeType", "1");//变动提前期单位:天
tmp.Add("FCheckLeadTimeType", "1");//检验提前期单位:天
tmp.Add("FMaxPOQty", 100);//最大订货量
tmp.Add("FAllowPartDelay", true);//预计入库允许部分延后
tmp.Add("FPlanOffsetTimeType", "1");//时间单位
model.Add("BD_MATERIAL__SubHeadEntity4", tmp);

//生产
tmp = new JObject();
tmp.Add("FProduceUnitId", K3CloudClient.JsonObject("FNumber", "Pcs"));
tmp.Add("FProduceBillType", K3CloudClient.JsonObject("FNumber", "SCDD03_SYS"));//生产类型:普通生产
tmp.Add("FOrgTrustBillType", K3CloudClient.JsonObject("FNumber", "SCDD06_SYS"));//组织间受托类型:直接入库
tmp.Add("FBOMUnitId", K3CloudClient.JsonObject("FNumber", "Pcs"));//子项单位
tmp.Add("FIssueType", "1");//直接发料
tmp.Add("FOverControlMode", "2");//超发控制方式:允许超发
model.Add("BD_MATERIAL__SubHeadEntity5", tmp);

//库存属性
JArray ja = new JArray();
model.Add("BD_MATERIAL__FEntityInvPty", ja);

//辅助属性
ja = new JArray();
model.Add("BD_MATERIAL__FEntityAuxPty", ja);

JObject ret = K3CloudClient.Invoke("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save",
new object[] { "BD_MATERIAL", js.ToString() });
}

public static JObject Invoke(string serviceUrl, object[] param)
{
ApiClient client = new ApiClient("此处要改成CLOUD的地址,我这里没有发URL的权限");
object[] loginInfo = new object[] {
"56691dfeb5aa6e",//帐套Id
"Administrator",//用户名
"888888",//密码
2052};//语言id
var ret = client.Execute("Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser", loginInfo);
var result = JObject.Parse(ret)["LoginResultType"].Value();
// 登陆成功
if (result == 1)
{
string str = string.Empty;
try
{
ret = client.Execute(serviceUrl, param);
return JObject.Parse(ret);
}
catch (Exception ex)
{
str = ex.ToString();
return null;
}
}
else
return null;
}

public static JObject JsonObject(string key, string number)
{
JObject tmp = new JObject();
tmp.Add(key, number);
return tmp;
}