如何查找和使用U8的API.docx
《如何查找和使用U8的API.docx》由会员分享,可在线阅读,更多相关《如何查找和使用U8的API.docx(14页珍藏版)》请在冰豆网上搜索。
![如何查找和使用U8的API.docx](https://file1.bdocx.com/fileroot1/2022-10/12/1c1749dc-e66b-4b15-ad75-ba61c9bc9139/1c1749dc-e66b-4b15-ad75-ba61c9bc91391.gif)
如何查找和使用U8的API
如何查找和使用U8的API
————————————————————————————————作者:
————————————————————————————————日期:
ﻩ
如何查找和使用U8的API
摘要
客户化开发中常常有将某些数据经过加工后存储至U8标准单据中的需求,通常客开人员是通过将数据插入物理表的方式进行,这时插入的数据未经系统的业务校验,为后续操作埋下诸多隐患。
U8的API接口,则是提供给客开操作系统单据的一个接口,客开只需将数据组织好,系统校验、增、删、改等操作都有不同的API接口来实现,调用相应API就可以完成操作。
如何使用API
a)API位置
如下图所示:
b)API接口描述
选择服务接口,右键,可以查看该接口的描述、代码示例,如下图所示:
c)API参考代码示例
实际应用
本文以C#代码为例,数据源采用系统中已存在单据做为数据源进行讲解。
调用API代码示例
///<summary>
/// 销售订单(业务类型报错)
///summary>
///param>
///</param>
publicstaticvoidAddSO_SOMain(U8Login.clsLoginu8Login,Stringid, ref stringvNewIDRet)
{
//第二步:
构造环境上下文对象,传入login,并按需设置其它上下文参数
U8EnvContextenvContext=newU8EnvContext();
envContext.U8Login= u8Login;
//销售所有接口均支持内部独立事务和外部事务,默认内部事务
//如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
//envContext.BizDbConnection =newADO.Connection();
//envContext.IsIndependenceTransaction= false;
//设置上下文参数
envContext.SetApiContext("VoucherType",12);//上下文数据类型:
int,含义:
单据类型:
12
//第三步:
设置API地址标识(Url)
//当前API:
新增或修改的地址标识为:
U8API/SaleOrder/Save
U8ApiAddressmyApiAddress=newU8ApiAddress("U8API/SaleOrder/Save");
//第四步:
构造APIBroker
U8ApiBrokerbroker= newU8ApiBroker(myApiAddress,envContext);
//第五步:
API参数赋值
//给BO表头参数domHead赋值,此BO参数的业务类型为销售订单,属表头参数。
BO参数均按引用传递
//提示:
给BO表头参数domHead赋值有两种方法
//方法一是直接传入MSXML2.DOMDocumentClass对象
//broker.AssignNormalValue("domHead", new MSXML2.DOMDocumentClass())
ADODB.Connectionconn= newADODB.ConnectionClass();
ADODB.Recordsetrs = newADODB.RecordsetClass();
MSXML2.DOMDocument domhead =newMSXML2.DOMDocumentClass();
stringstrConn= string.Format("Provider=SQLOLEDB;InitialCatalog={0};Data Source={1};","UFData_"+ u8Login.get_cAcc_Id()+"_"+u8Login.cIYear,u8Login.dbServerName);
conn.Open(strConn,"sa", u8Login.SysPassword,0);
stringsql ="selecttop1*from SaleOrderQwhere id='"+id+"'";
rs.Open(sql,conn, ADODB.CursorTypeEnum.adOpenForwardOnly,ADODB.LockTypeEnum.adLockOptimistic,-1);
rs.Save(domhead,ADODB.PersistFormatEnum.adPersistXML);
U8APIHelper.FormatDom(refdomhead,"A");
broker.AssignNormalValue("DomHead",domhead);
domhead.selectSingleNode("//rs:
data/z:
row").attributes.getNamedItem("id").nodeValue ="";
MSXML2.DOMDocumentdomBody= newMSXML2.DOMDocumentClass();
//domBody.RowCount=1;
ADODB.Connectionconn1=newADODB.ConnectionClass();
ADODB.Recordsetrs1 = newADODB.RecordsetClass();
stringstrConn1= string.Format("Provider=SQLOLEDB;InitialCatalog={0};DataSource={1};","UFData_" +u8Login.get_cAcc_Id()+"_"+u8Login.cIYear,u8Login.dbServerName);
conn1.Open(strConn,"sa",u8Login.SysPassword,0);
sql="selecttop 1*fromSaleOrderSQwhere id='"+id+ "'";
rs1.Open(sql,conn,ADODB.CursorTypeEnum.adOpenForwardOnly,ADODB.LockTypeEnum.adLockOptimistic,-1);
rs1.Save(domBody, ADODB.PersistFormatEnum.adPersistXML);
U8APIHelper.FormatDom(refdomBody, "A");
broker.AssignNormalValue("domBody",domBody);
domBody.selectSingleNode("//rs:
data/z:
row").attributes.getNamedItem("id").nodeValue="";
domBody.selectSingleNode("//rs:
data/z:
row").attributes.getNamedItem("autoid").nodeValue = "";
//给普通参数VoucherState赋值。
此参数的数据类型为int,此参数按值传递,表示状态:
0增加;1修改
broker.AssignNormalValue("VoucherState",0);
//该参数vNewID为INOUT型普通参数。
此参数的数据类型为string,此参数按值传递。
在API调用返回时,可以通过GetResult("vNewID")获取其值
broker.AssignNormalValue("vNewID","");
//给普通参数DomConfig赋值。
此参数的数据类型为MSXML2.IXMLDOMDocument2,此参数按引用传递,表示ATO,PTO选配
MSXML2.IXMLDOMDocument2 DomConfig=newMSXML2.DOMDocumentClass();
broker.AssignNormalValue("DomConfig",DomConfig);
//第六步:
调用API
if(!
broker.Invoke())
{
//错误处理
ExceptionapiEx=broker.GetException();
if (apiEx!
=null)
{
if (apiExis MomSysException)
{
MomSysExceptionsysEx= apiExasMomSysException;
Console.WriteLine("系统异常:
" +sysEx.Message);
//todo:
异常处理
}
elseif(apiExisMomBizException)
{
MomBizException bizEx = apiEx asMomBizException;
Console.WriteLine("API异常:
"+bizEx.Message);
//todo:
异常处理
}
//异常原因
StringexReason=broker.GetExceptionString();
if (exReason.Length!
= 0)
{
Console.WriteLine("异常原因:
"+ exReason);
}
}
//结束本次调用,释放API资源
broker.Release();
return;
}
//第七步:
获取返回结果
//获取返回值
//获取普通返回值。
此返回值数据类型为System.String,此参数按值传递,表示成功为空串
stringresult = broker.GetReturnValue()asSystem.String;
//获取out/inout参数值
//获取普通INOUT参数vNewID。
此返回值数据类型为string