U8API开发手册(C#版)

参数:

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 —— 业务类型:普通采购,直运采购,受托代销

? 开发步骤

实现采购单据某一功能,主要有以下七个步骤: 1. 构造u8login对象并登陆

声明和创建u8login类对象前应该先引用U8API类库中的Interop.U8Login.dll,代码

示例如下:

U8Login.clsLogin u8Login = new U8Login.clsLogin(); //声明u8login对象 String sSubId = \String sYear = \String sUserID = \String sPassword = \String sDate = \String sServer = \String sSerial = \

if(!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial))

{

}

Console.WriteLine(\登陆失败,原因:\Marshal.FinalReleaseComObject(u8Login); return;

//登陆

String sAccID = \

如果当前环境中有login对象则可以省去第一步。

2. 构造环境上下文对象,传入login,并按需设置其它上下文参数 U8EnvContext envContext = new U8EnvContext();

envContext.U8Login = u8Login; //设置上下文参数

envContext.SetApiContext(\new int()); //上下文数据类型:int,含义:单据类型 envContext.SetApiContext(\上下文数据类型:bool,含义:红蓝标

识:True,蓝字

envContext.SetApiContext(\new string()); //上下文数据类型:string,含义:为空

envContext.SetApiContext(\上下文数据类型:string,含义:业务

类型:普通采购,直运采购,受托代销

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

如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction设置为true:

envContext.BizDbConnection = new ADO.Connection(); envContext.IsIndependenceTransaction = true;

3. 设置API地址标识(Url)参数

//如当前API“新增或修改”的地址标识为:U8API/PurchaseOrder/VoucherSave

U8ApiAddress myApiAddress = new U8ApiAddress(\

4. 构造APIBroker

U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

5. API对象参数赋值

1) 给BO表头参数DomHead和表体参数domBody赋值有两种方法,如下: 方法一是直接传入MSXML2.DOMDocumentClass对象,代码如下

MSXML2.DOMDocumentClass domHead = new MSXML2.DOMDocumentClass(); domHead.load(\);

broker.AssignNormalValue(\, domHead);

方法二是构造BusinessObject对象,具体方法如下:

//首先通过GetBoParam方法获取表头表体参数

注意:设置行数为某个值,行数并不限定为该最大值,可以一直顺序添加至任意行,但有一个规则:例如当设置为10时,可以对第0、1、??9行赋值,当对第10行赋值时候,则会顺序添加一个新行,但此时是不能对第11行赋值的,当添加一个新行(第10行)后,又可以对第11行进行赋值。

/****************************** 以下是必输字段 ****************************/ DomHead[0][\主关键字段,int类型 DomHead[0][\日期,DateTime类型 DomHead[0][\订单编号,string类型 DomHead[0][\供货单位,string类型 DomHead[0][\币种,string类型 DomHead[0][\汇率,double类型 ??

/***************************** 以下是非必输字段 ****************************/ DomHead[0][\现存量,string类型 DomHead[0][\制单时间,DateTime类型 DomHead[0][\修改时间,DateTime类型 DomHead[0][\审核时间,DateTime类型 DomHead[0][\审核日期,DateTime类型 DomHead[0][\修改日期,DateTime类型 BusinessObject DomHead = broker.GetBoParam(\DomHead.RowCount = 10; //设置行数

//其中,给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串 //以下代码示例只设置第一行值。各字段定义详见API服务接口定义

??

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

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

broker.AssignNormalValue(\

注意:所有参数名不限大小写。

3) 给“OUT型”参数赋值

为方便用户使用U8API,如果参数数据类型为一般值类型,如String、Integer、Long、Single、Double、Boolean、Date,则不必传入一个参数变量(传入也可);否则,则必须一个参数变量。

如: ??

//该参数curID为OUT型参数,由于其数据类型为string,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult(\获取其值

//该参数CurDom为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必

须传入一个参数变量。在API调用返回时,可以直接使用该参数

MSXML2.IXMLDOMDocument2 CurDom = new MSXML2.IXMLDOMDocument2(); broker.AssignNormalValue(\

??

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

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

6. 调用API

//示例调用如下:

if (!broker.Invoke())

{

//错误处理

Exception apiEx = broker.GetException(); if (apiEx != null) {

if (apiEx is MomSysException) { }

else if (apiEx is MomBizException) { }

MomBizException bizEx = apiEx as MomBizException; Console.WriteLine(\异常:\//todo:异常处理

MomSysException sysEx = apiEx as MomSysException; Console.WriteLine(\系统异常:\//todo:异常处理

联系客服:779662525#qq.com(#替换为@)