|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
[ 本帖最后由 w02108 于 2018-2-8 18:11 编辑 ]\n\n调用API,想新增一条采购订单记录,代码写完后,结果返回“关键词 group 附近有语法错误”,然后调用不成功。我把赋值代码贴出来,看看是哪里写的不对?
/第一步:构造u8login对象并登陆(引用U8API类库中的Interop.U8Login.dll)
//如果当前环境中有login对象则可以省去第一步
U8Login.clsLogin u8Login = (clsLogin)_loginInfo.U8Login;
//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
U8EnvContext envContext = new U8EnvContext();
envContext.U8Login = u8Login;
//第三步:设置API地址标识(Url)
U8ApiAddress myApiAddress = new U8ApiAddress("U8API/ProductIn/Add");
//第四步:构造APIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //第五步:API参数赋值 BusinessObject DomHead = broker.GetBoParam("DomHead");
DomHead.RowCount = 1; //设置BO对象(表头)行数,只能为一行
DomHead[0]["poid"] = maxid; //主关键字段,int类型,必填
DomHead[0]["cbustype"] = "普通采购"; //采购类型,string类型
DomHead[0]["dPODate"] = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); //单据日期
DomHead[0]["cmaketime"] = DateTime.Parse(DateTime.Now.ToString()); //单据创建日期
DomHead[0]["cDepCode"] = "12";//部门编码
DomHead[0]["cPersonCode"] = "T00524"; //业务员编码
DomHead[0]["cPOID"] = "PD041802070002";//采购订单号
DomHead[0]["nflat"] = 1; //汇率,double类型
DomHead[0]["cexch_name"] = "人民币"; //币种,string类型,必填
//DomHead[0]["cappcode"] = "D041711250006"; //请购单号,string类型
DomHead[0]["iTaxRate"] = 17.00; //税率,double类型
DomHead[0]["cVenCode"] = "0011"; //供应商编码,string类型,必填
DomHead[0]["cdefine1"] = "完税后交货价"; //表头自定义项1,string类型
DomHead[0]["cdefine2"] = "增值税"; //表头自定义项1,string类型
DomHead[0]["cPTCode"] = "01"; //采购类型,string类型
DomHead[0]["cstate"] = 0; //状态(数据库),tinint类型.
DomHead[0]["cmaker"] = "刘炎栓"; //制单人,string类型
DomHead[0]["iverifystateex"] = 1; //审核状态,int类型.单据审核状态 (-1,终审不同意,0,未提交,1已提交,2,终审同意)
DomHead[0]["iDiscountTaxType"] = 0;//操税类型,int类型。0应税外加,1应税内含
//方法二是构造BusinessObject对象,具体方法如下:
BusinessObject domBody = broker.GetBoParam("domBody");
domBody.RowCount = 10; //设置BO对象行数
domBody[0]["ID"] = maxcid; //主关键字段,int类型
domBody[0]["POID"] = maxid; //主表id,int类型
domBody[0]["cInvCode"] = "AE-05-000060"; //存货编码,string类型
domBody[0]["iQuantity"] = 5.00; //数量,decimal类型
domBody[0]["iTaxPrice"] = 20.00; //含税单价,double类型
domBody[0]["iTax"] = 17.00; //原币税额,double类型
domBody[0]["isum"] = 100.00; //原币价税合计,double类型
domBody[0]["iPerTaxRate"] = 17.00; //税率,double类型
domBody[0]["dArriveDate"] = (DateTime)DateTime.Parse("2018-02-25"); //计划到货日期,DateTime类型
domBody[0]["ivouchrowno"] = 1;//行号,int类型
domBody[0]["iUnitPrice"] = 17.09;//原币无税单价
domBody[0]["iMoney"] = 85.45;//原币无税金额
//domBody[0]["iTax"] = 2.91;//原币税额
domBody[0]["iNatUnitPrice"] = 17.09;//本币无税单价
domBody[0]["iNatMoney"] = 85.45;//本币无税金额
domBody[0]["iNatTax"] = 2.91;//本币税额
//domBody[0]["iAppIds"] = 1000000185;//采购请购单子表标识 int类型
domBody[0]["bGsp"] = 0;//是否质检 int类型
domBody[0]["bTaxCost"] = 0;//价格标准(0无税,1含税) int 类型
//domBody[0]["cupsocode"] = "D041711250006";//来源单据号 string类型
domBody[0]["iordertype"] = 0;//销售订单类型 int 类型
domBody[0]["bgift"] = 0;//是否赠品 int 类型
//给普通参数VoucherState赋值。此参数的数据类型为int,此参数按值传递,表示单据状态:2新增,1修改,0非编辑
broker.AssignNormalValue("VoucherState", new int());
MSXML2.IXMLDOMDocument2 CurDom = new MSXML2.DOMDocumentClass();
broker.AssignNormalValue("CurDom", CurDom);
//给普通参数UserMode赋值。此参数的数据类型为int,此参数按值传递,表示模式,0:CS;1:BS
broker.AssignNormalValue("UserMode", 0);
//调用API
if (!broker.Invoke())
{
//错误处理
Exception apiEx = broker.GetException();
if (apiEx != null)
{
if (apiEx is MomSysException)
{
MomSysException sysEx = apiEx as MomSysException;
Console.WriteLine("系统异常:" + sysEx.Message);
//todo:异常处理
}
else if (apiEx is MomBizException)
{
MomBizException bizEx = apiEx as MomBizException;
Console.WriteLine("API异常:" + bizEx.Message);
//todo:异常处理
}
//异常原因
String exReason = broker.GetExceptionString();
if (exReason.Length != 0)
{
Console.WriteLine("异常原因:" + exReason);
}
}
//结束本次调用,释放API资源
broker.Release();
return;
//获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示错误描述:空,正确;非空,错误
System.String result = broker.GetReturnValue() as System.String;
if (result.Length > 0)
{
Console.Write(result);
Console.ReadLine();
}
//获取out/inout参数值
//获取普通OUT参数curID。此返回值数据类型为string,在使用该参数之前,请判断是否为空
string curIDRet = broker.GetResult("curID") as string;
//if (curIDRet.Length > 0)
// Console.Write(curIDRet);
//获取普通OUT参数CurDom。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空
//MSXML2.IXMLDOMDocument2 CurDomRet = Convert.ToObject(broker.GetResult("CurDom")); //Convert无ToObject方法
MSXML2.IXMLDOMDocument2 CurDomRet = (MSXML2.IXMLDOMDocument2)(broker.GetResult("CurDom"));
//结束本次调用,释放API资源
broker.Release();
return;
|
|