U8API开发手册(VB版) 下载本文

当不传入一个参数变量时,在API调用返回时,可以通过GetResult(参数名)获取其值;当不必传入一个参数变量时,在API调用返回时,可以直接引用该参数。

4) 给“INOUT型”参数赋值 对“INOUT型”型参数,则不论是否是一般值类型,都需要传入参数变量。其他与“OUT型”参数一样。

5. 调用API

If u8apiBroker.InvokeApi() = False Then

'错误处理

MsgBox u8apiBroker.GetLastError()

If u8apiBroker.ErrorType = ExceptionType_Business Then

'处理API业务错误 '处理系统错误

ElseIf u8apiBroker.ErrorType = ExceptionType_System Then End If

注意:对调用失败,可以获取出错信息,如果是API框架的原因,则报告MomSysException异常,如果是业务组件的原因,则报告MomBizException异常。

6. 获取返回结果

1) 获取BO对象

在“装载单据”时,通过GetBoParam方法获取表头或表体参数 Dim DomHeadRet As BusinessObject

Set DomHeadRet = u8apiBroker.GetBoParam(\) MsgBox DomHeadRet.RowCount '获取返回BO对象的行数 注意:

如果要取原始的XMLDOM对象结果,请使用GetResult(\Dim DomHeadRet As New MSXML2.DOMDocument

Set DomHeadRet = u8apiBroker. GetResult(\) 以上获取的行数是BO对象的实际行数。

'获取BO对象各字段的值。以下代码示例只取第一行。字段定义详见API服务接口定义

'****************************** 以下是必输字段 *****************************' Dim poidRet As Integer

poidRet = CInt(DomHeadRet(0).GetValue(\主关键字段,Integer类型 Dim cbustypeRet As String

cbustypeRet = CStr(DomHeadRet(0).GetValue(\业务类型,String类型 Dim dpodateRet As Date

dpodateRet = CDate(DomHeadRet(0).GetValue(\日期,Date类型 ??

'***************************** 以下是非必输字段 ****************************' Dim ipresentRet As String

ipresentRet = CStr(DomHeadRet(0).GetValue(\现存量,String类型 Dim cmaketimeRet As Date

cmaketimeRet = CDate(DomHeadRet(0).GetValue(\制单时间,Date类型 Dim cmodifytimeRet As Date

cmodifytimeRet = CDate(DomHeadRet(0).GetValue(\修改时间,Date类型 ??

2)

获取普通返回值

代码如下:

'获取普通返回值。此返回值数据类型为String,此参数按值传递,具体请参考服务接口定义 Dim result As String

3)

获取普通“OUT型”或“INOUT型”返回值

如前所述,对普通“OUT型”或“INOUT型”参数,如果是一般值类型,则通过GetResult方法获取其返回值,否则直接使用该引用。

如,

'获取普通OUT参数curID。此返回值数据类型为String,在使用该参数之前,请判断是否为空

'获取普通OUT参数CurDom。此返回值数据类型为MSXML2.IXMLDOMDocument2,前面已定义该参数,请直接使用 ??

Dim curIDRet As String

curIDRet = CStr(u8apiBroker.GetResult(\)) result = CStr(u8apiBroker.GetReturnValue())

2.2.2 销售管理

? 功能介绍

为了支持U8二次开发对业务单据的开发,本功能提供了实现销售业务单据各种操作功能的编程接口。使用销售管理API开发接口,可以完成销售管理的销售报价单、销售订单、销售发货单、销售退货单、销售普通发票、销售专用发票、委托代销发货单、委托代销结算单、销售调拨单等单据的审核、弃审、获取、新增、修改、删除。

? 使用环境

必须安装.NET FrameWork 2.0; 必须安装U8-872版本的销售管理产品; 必须安装API适配器组件SAAPIConcrete.dll;

? 接口说明

销售管理二次开发接口及参数说明: ? 审核或弃审单据-Audit方法

参数:

domHead —— 单据表头,DOM对象,必输 bVerify —— 审核/弃审标志,必输。true表审核;false表弃审 API上下文:

VoucherType —— 单据类型,必输。具体类型参看API上下文描述

? 删除单据-Delete方法

参数:

domHead —— 单据表头,DOM对象,必输 API上下文:

VoucherType —— 单据类型,必输。具体类型参看API上下文描述

? 装载单据-Load方法

参数:

domHead —— 单据表头,DOM对象,必输 domBody —— 单据表体,DOM对象,必输 VouchID —— 需要装载的单据号,可选 blnAuth —— 是否控制权限:true

API上下文:

VoucherType —— 单据类型,必输。具体类型参看API上下文描述

? 新增或修改单据-Save方法

参数:

domHead —— 单据表头,DOM对象,必输 domBody —— 单据表体,DOM对象,必输 VoucherState —— 保存状态,必输。0增加;1修改 VNewID —— 单据的id,可选 DomConfig —— ATO,PTO选配配置,必输,可设置为nothing API上下文:

VoucherType —— 单据类型,必输。具体类型参看API上下文描述

? 开发步骤

调用销售单据某一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

'构造环境上下文对象 '传入login

'设置上下文参数

u8EnvCtx.SetApiContext \, \上下文值\ '上下文数据类型:int,含义:单据类型:12

注意:如果是外部事务,则需要传递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/SaleOrder/Save\

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 \字段值\主关键字段,Integer类型 domHead(0).SetValue \字段值\订 单 号,String类型 domHead(0).SetValue \字段值\订单日期,Date类型 ??

'***************************** 以下是非必输字段 ****************************' domHead(0).SetValue \字段值\现存件数,Double类型 domHead(0).SetValue \字段值\可用件数,Double类型 domHead(0).SetValue \字段值\,String类型

??

2) 给普通参数赋值 例如,

'给普通参数VoucherState(参数名)赋值。此参数的数据类型为Integer,此参数按值传递,具体请参考服务接口定义

u8apiBroker.AssignNormalValue \VoucherState\参数值\ '参数类型:Integer 注意:所有参数名不限大小写。

3) 给“OUT型”参数赋值

为方便用户使用U8API,如果参数数据类型为一般值类型,如String、Integer、Long、