当前位置:首页 > 3U8API开发手册(C#版)1 - 图文
参数:DomHeaddomBodystrWherevarVoucherIDstrLocateWhereAPI上下文:VoucherTypebPositivesBillTypesBusType?删除单据-Delete方法参数:DomHeaddomBodyCurDomAPI上下文:VoucherTypebPositivesBillTypesBusType——————————————————表头DOM对象表体DOM对象过滤条件串单据主表ID定位条件串单据类型,具体类型参看API上下文描述红蓝标识:True,蓝字;False,红字为空串业务类型:普通采购,直运采购,受托代销——表头DOM对象——表体DOM对象——返回DOM格式错误信息————————单据类型,具体类型参看API上下文描述红蓝标识:True,蓝字;False,红字为空串业务类型:普通采购,直运采购,受托代销?新增或修改新单据-VoucherSave方法参数:DomHead——单据表头,DOM对象,必输domBody——单据表体,DOM对象,必输VoucherState——保存状态,必输。2增加;1修改;0非编辑curID——返回单据头IDCurDom——返回DOM格式错误信息UserMode——使用模式,0:CS;1:BSAPI上下文:VoucherType——单据类型,具体类型参看API上下文描述bPositive——红蓝标识:True,蓝字;False,红字sBillType——为空串sBusType——业务类型:普通采购,直运采购,受托代销?开发步骤
实现采购单据某一功能,主要有以下七个步骤:1.构造u8login对象并登陆声明和创建u8login类对象前应该先引用U8API类库中的Interop.U8Login.dll,代码示例如下:U8Login.clsLoginu8Login=newU8Login.clsLogin();StringsSubId=\StringsAccID=\StringsYear=\StringsUserID=\StringsPassword=\StringsDate=\StringsServer=\StringsSerial=\if(!u8Login.Login(refsSubId,refsAccID,refsYear,refsUserID,refsPassword,refsDate,refsServer,refsSerial)){Console.WriteLine(\+u8Login.ShareString);Marshal.FinalReleaseComObject(u8Login);return;}//声明u8login对象//登陆如果当前环境中有login对象则可以省去第一步。2.构造环境上下文对象,传入login,并按需设置其它上下文参数U8EnvContextenvContext=newU8EnvContext();envContext.U8Login=u8Login;//设置上下文参数envContext.SetApiContext(\newint());//上下文数据类型:int,含义:单据类型envContext.SetApiContext(\newbool());//上下文数据类型:bool,含义:红蓝标识:True,蓝字envContext.SetApiContext(\newstring());//上下文数据类型:string,含义:为空串envContext.SetApiContext(\newstring());//上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销//构造环境上下文对象//传入login如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction设置为true:envContext.BizDbConnection=newADO.Connection();envContext.IsIndependenceTransaction=true;3.设置API地址标识(Url)参数//如当前API“新增或修改”的地址标识为:U8API/PurchaseOrder/VoucherSaveU8ApiAddressmyApiAddress=newU8ApiAddress(\4.构造APIBrokerU8ApiBrokerbroker=newU8ApiBroker(myApiAddress,envContext);5.API对象参数赋值1)给BO表头参数DomHead和表体参数domBody赋值有两种方法,如下:方法一是直接传入MSXML2.DOMDocumentClass对象,代码如下MSXML2.DOMDocumentClassdomHead=newMSXML2.DOMDocumentClass();domHead.load(\);broker.AssignNormalValue(\,domHead);方法二是构造BusinessObject对象,具体方法如下://首先通过GetBoParam方法获取表头表体参数BusinessObjectDomHead=broker.GetBoParam(\DomHead.RowCount=10;//设置行数//其中,给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串//以下代码示例只设置第一行值。各字段定义详见API服务接口定义注意:设置行数为某个值,行数并不限定为该最大值,可以一直顺序添加至任意行,但有一个规则:例如当设置为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类型……2)给普通参数赋值例如,//给普通参数VoucherState(参数名)赋值。此参数的数据类型为int,此参数按值传递,具体请参考服务接口定义broker.AssignNormalValue(\newint());注意:所有参数名不限大小写。3)给“OUT型”参数赋值为方便用户使用U8API,如果参数数据类型为一般值类型,如String、Integer、Long、Single、Double、Boolean、Date,则不必传入一个参数变量(传入也可);否则,则必须一个参数变量。如:……//该参数curID为OUT型参数,由于其数据类型为string,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult(\//该参数CurDom为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数MSXML2.IXMLDOMDocument2CurDom=newMSXML2.IXMLDOMDocument2();broker.AssignNormalValue(\CurDom);……当不传入一个参数变量时,在API调用返回时,可以通过GetResult(参数名)获取其值;当不必传入一个参数变量时,在API调用返回时,可以直接引用该参数。4)给“INOUT型”参数赋值对“INOUT型”型参数,则不论是否是一般值类型,都需要传入参数变量。其他与“OUT型”参数一样。6.调用API//示例调用如下:if(!broker.Invoke()){//错误处理ExceptionapiEx=broker.GetException();if(apiEx!=null){if(apiExisMomSysException){MomSysExceptionsysEx=apiExasMomSysException;Console.WriteLine(\+sysEx.Message);//todo:异常处理}elseif(apiExisMomBizException){MomBizExceptionbizEx=apiExasMomBizException;Console.WriteLine(\+bizEx.Message);//todo:异常处理}
共分享92篇相关文档