'调用LOAD接口API
If u8apiBroker.InvokeApi() = False Then
'错误处理
MsgBox u8apiBroker.GetLastError()
If u8apiBroker.ErrorType = ExceptionType_Business Then
'处理API业务错误 '处理系统错误
ElseIf u8apiBroker.ErrorType = ExceptionType_System Then End If '获取返回结果
'获取表头或表体的BO对象,如果要取原始的XMLDOM对象结果,请使用GetResult(参数名) Dim domHeadOrBodyRet As BusinessObject
Set domHeadOrBodyRet = u8apiBroker.GetBoParam(\表头或表体参数名\) MsgBox domHeadOrBodyRet.RowCount '获取返回BO对象的行数 ?? End If
Else
(3) 接着,BO对象经用户修改重新赋值,并传递给UPDATE接口提交保存;
'修改获取的BO对象,对需要更改的字段重新赋值 domHeadOrBodyRet(0).SetValue \字段名\,\新的字段值\
??
'重传入新“新增或修改”API的地址标识和环境上下文
u8apiBroker.Connect \新增或修改”API的地址标识\, u8EnvCtx '表头或表体参数赋值
u8apiBroker.SetBoParam \表头或表体参数名\, domHeadOrBodyRet 'API参数赋值
u8apiBroker.AssignNormalValue \参数名\, \参数值\ ??
'调用UPDATE接口API
If u8apiBroker.InvokeApi() = False Then
?? End If
(4) 最后,获取返回结果。
'获取普通返回值
Dim result As String
result = CStr(u8apiBroker.GetReturnValue()) '获取out/inout参数值 ??
'结束本次调用,释放API资源 u8apiBroker.Disconnect Set u8apiBroker = Nothing
2.2. API内容 2.2.1 采购管理
? 功能介绍
为了支持U8二次开发对业务单据的开发,本功能提供了实现采购业务单据各种操作功能的编程接口。使用采购管理的API开发接口,可以对库存管理中的采购到货单、采购普通发票、采购专用发票、采购订单、请购单、采购运费发票等单据进行审核、弃审、获取(或装载)、新增、修改、删除。
? 使用环境
必须安装.NET FrameWork 2.0; 必须安装U8-872版本的采购管理产品; 必须安装API适配器组件PUAPIConcrete.dll
? 接口说明
采购管理二次开发接口说明:
? 审核单据-ConfirmPO方法
参数:
domHead —— 单据表头,DOM对象,必输 API上下文:
VoucherType —— 单据类型,具体类型参看API上下文描述 bPositive —— 红蓝标识:True,蓝字 ;False,红字 sBillType —— 为空串
sBusType —— 业务类型:普通采购,直运采购,受托代销
? 弃审单据- CancelconfirmPO方法
参数:
domHead —— 单据表头,DOM对象,必输 API上下文:
VoucherType —— 单据类型,具体类型参看API上下文描述 bPositive —— 红蓝标识:True,蓝字 ;False,红字 sBillType —— 为空串
sBusType —— 业务类型:普通采购,直运采购,受托代销
? 装载单据-Load方法
参数:
DomHead —— 表头DOM对象 domBody —— 表体DOM对象 strWhere —— 过滤条件串 varVoucherID —— 单据主表ID strLocateWhere —— 定位条件串 API上下文:
VoucherType —— 单据类型,具体类型参看API上下文描述 bPositive —— 红蓝标识:True,蓝字 ;False,红字 sBillType —— 为空串
sBusType —— 业务类型:普通采购,直运采购,受托代销
? 删除单据-Delete方法
参数:
DomHead —— 表头DOM对象 domBody —— 表体DOM对象
CurDom —— 返回DOM格式错误信息 API上下文:
VoucherType —— 单据类型,具体类型参看API上下文描述 bPositive —— 红蓝标识:True,蓝字 ;False,红字 sBillType —— 为空串
sBusType —— 业务类型:普通采购,直运采购,受托代销
? 新增或修改新单据- VoucherSave方法
参数:
DomHead —— 单据表头,DOM对象,必输 domBody —— 单据表体,DOM对象,必输
VoucherState —— 保存状态,必输。2增加;1修改 ;0非编辑 curID —— 返回单据头ID
CurDom —— 返回DOM格式错误信息 UserMode —— 使用模式,0:CS;1:BS API上下文:
VoucherType —— 单据类型,具体类型参看API上下文描述 bPositive —— 红蓝标识:True,蓝字 ;False,红字 sBillType —— 为空串
sBusType —— 业务类型:普通采购,直运采购,受托代销
? 开发步骤
调用采购单据某一API,主要有以下六个步骤: 1. 构造u8login对象并登陆
声明和创建u8login类对象前应该先引用U8API类库中的Integererop.U8Login.dll,
代码示例如下:
Dim ologin As Object
Set ologin = CreateObject(\U8Login.clsLogin\ '声明u8login对象 '登陆
If Not ologin.login(\, \, \, \, \, \, \) Then
MsgBox ologin.ShareString
注意:如果当前环境中有login对象则可以省去第一步。
2. 构造环境上下文对象,传入login,并按需设置其它上下文参数
Dim u8EnvCtx As New U8EnvContext Set u8EnvCtx.U8Login = ologin
'设置上下文参数
u8EnvCtx.SetApiContext \, \上下文值\上下文数据类型:int,含义:单据类型,采购订单 u8EnvCtx.SetApiContext \, \上下文值\上下文数据类型:bool,含义:红蓝标识:True,蓝字 u8EnvCtx.SetApiContext \, \上下文值\上下文数据类型:string,含义:为空串
u8EnvCtx.SetApiContext \, \上下文值\上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销
'构造环境上下文对象 '传入login
注意:如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction设置为true:
Set u8EnvCtx.BizDbConnection = new ADO.Connection() u8EnvCtx.IsIndependenceTransaction = true
3. 构造ApiBroker对象,调用Connect,传入API的地址标识(Url)和环境上下文
Dim u8apiBroker As New U8ApiComBroker
u8apiBroker.Connect \U8API/PurchaseOrder/VoucherSave\
4. API对象参数赋值
1) 给BO表头参数DomHead或表体参数domBody赋值有两种方法,如下: 方法一是直接传入MSXML2.DOMDocumentClass对象,代码如下:
Dim domHead As New MSXML2.DOMDocument domHead.load \
u8apiBroker.AssignNormalValue \DomHead\
方法二是构造BusinessObject对象,具体方法如下:
'首先通过GetBoParam方法获取表头或表体参数
Dim DomHead As BusinessObject
Set DomHead = u8apiBroker.GetBoParam(\DomHead\DomHead.RowCount = 1 '设置行数
'给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串 '以下代码示例只设置第一行值。各字段定义详见API服务接口定义
注意:表体的行数只能为一行,可以对表体设置多行。当设置行数为某个值时,行数并不限定为该最大值,可以一直顺序添加至任意行,但有一个规则:例如当设置为10时,可以对第0、1、??9行赋值,当对第10行赋值时候,则会顺序添加一个新行,但此时是不能对第11行赋值的,当添加一个新行(第10行)后,又可以对第11行进行赋值。
'****************************** 以下是必输字段 *****************************' ??
'***************************** 以下是非必输字段 ****************************'
DomHead(0).SetValue \字段值\现存量,String类型 DomHead(0).SetValue \字段值\制单时间,Date类型 DomHead(0).SetValue \字段值\修改时间,Date类型 DomHead(0).SetValue \字段值\主关键字段,Integer类型 DomHead(0).SetValue \字段值\业务类型,String类型 DomHead(0).SetValue \字段值\日期,Date类型 DomHead(0).SetValue \字段值\订单编号,String类型
??
2) 给普通参数赋值 例如,
'给普通参数VoucherState(参数名)赋值。此参数的数据类型为Integer,此参数按值传递,具体请参考服务接口定义
u8apiBroker.AssignNormalValue \VoucherState\参数值\ '参数类型:Integer 注意:所有参数名不限大小写。
3) 给“OUT型”参数赋值
为方便用户使用U8API,如果参数数据类型为一般值类型,如String、Integer、Long、Double、Boolean、Date等,则不必传入一个参数变量(传入也可);否则,则必须一个参数变量。
如: ??
'该参数curID为OUT型参数,由于其数据类型为String,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult(\获取
'该参数CurDom为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
Dim CurDom As New MSXML2.IXMLDOMDocument2
u8apiBroker.AssignNormalValue \CurDom\'参数类型:MSXML2.IXMLDOMDocument2
??