




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
U8知识库文档如何查找和使用U8的API摘要客户化开发中常常有将某些数据经过加工后存储至U8标准单据中的需求,通常客开人员是通过将数据插入物理表的方式进行,这时插入的数据未经系统的业务校验,为后续操作埋下诸多隐患。U8的API接口,则是提供给客开操作系统单据的一个接口,客开只需将数据组织好,系统校验、增、删、改等操作都有不同的API接口来实现,调用相应API就可以完成操作。如何使用APIa) API位置如下图所示:b) API接口描述选择服务接口,右键,可以查看该接口的描述、代码示例,如下图所示:c) API参考代码示例实际应用本文以C代码为例,数据源采用系统中已存在单据做为数据源进行讲解。调用API代码示例/ / 销售订单(业务类型报错) / / / public static void AddSO_SOMain(U8Login.clsLogin u8Login,String id, ref string vNewIDRet) /第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数 U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; /销售所有接口均支持内部独立事务和外部事务,默认内部事务 /如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false /envContext.BizDbConnection = new ADO.Connection(); /envContext.IsIndependenceTransaction = false; /设置上下文参数 envContext.SetApiContext(VoucherType, 12); /上下文数据类型:int,含义:单据类型:12 /第三步:设置API地址标识(Url) /当前API:新增或修改的地址标识为:U8API/SaleOrder/Save U8ApiAddress myApiAddress = new U8ApiAddress(U8API/SaleOrder/Save); /第四步:构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); /第五步:API参数赋值 /给BO表头参数domHead赋值,此BO参数的业务类型为销售订单,属表头参数。BO参数均按引用传递 /提示:给BO表头参数domHead赋值有两种方法 /方法一是直接传入MSXML2.DOMDocumentClass对象 /broker.AssignNormalValue(domHead, new MSXML2.DOMDocumentClass() ADODB.Connection conn = new ADODB.ConnectionClass(); ADODB.Recordset rs = new ADODB.RecordsetClass(); MSXML2.DOMDocument domhead = new MSXML2.DOMDocumentClass(); string strConn = string.Format(Provider=SQLOLEDB;Initial Catalog=0;Data Source=1;, UFData_ + u8Login.get_cAcc_Id() + _ + u8Login.cIYear, u8Login.dbServerName); conn.Open(strConn, sa, u8Login.SysPassword, 0); string sql = select top 1 * from SaleOrderQ where id= + id + ; rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic, -1); rs.Save(domhead, ADODB.PersistFormatEnum.adPersistXML); U8APIHelper.FormatDom(ref domhead, A); broker.AssignNormalValue(DomHead, domhead); domhead.selectSingleNode(/rs:data/z:row).attributes.getNamedItem(id).nodeValue = ; MSXML2.DOMDocument domBody = new MSXML2.DOMDocumentClass(); /domBody.RowCount = 1; ADODB.Connection conn1 = new ADODB.ConnectionClass(); ADODB.Recordset rs1 = new ADODB.RecordsetClass(); string strConn1 = string.Format(Provider=SQLOLEDB;Initial Catalog=0;Data Source=1;, UFData_ + u8Login.get_cAcc_Id() + _ + u8Login.cIYear, u8Login.dbServerName); conn1.Open(strConn, sa, u8Login.SysPassword, 0); sql = select top 1 * from SaleOrderSQ where id= + id + ; rs1.Open(sql, conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic, -1); rs1.Save(domBody, ADODB.PersistFormatEnum.adPersistXML); U8APIHelper.FormatDom(ref domBody, 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 = new MSXML2.DOMDocumentClass(); broker.AssignNormalValue(DomConfig, DomConfig); /第六步:调用API if (!broker.Invoke() /错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) if (apiEx is MomSysException) MomSysException sysEx = apiEx as MomSysException; Console.WriteLine(系统异常: + sysEx.Message); /todo:异常处理 else if (apiEx is MomBizException) MomBizException bizEx = apiEx as MomBizException; Console.WriteLine(API异常: + bizEx.Message); /todo:异常处理 /异常原因 String exReason = broker.GetExceptionString(); if (exReason.Length != 0) Console.WriteLine(异常原因: + exReason); /结束本次调用,释放API资源 broker.Release(); return; /第七步:获取返回结果 /获取返回值 /获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示成功为空串 string result = broker.GetReturnValue() as System.String; /获取out/inout参数值 /获取普通INOUT参数vNewID。此返回值数据类型为string,在使用该参数之前,请判断是否为空 vNewIDRet = broker.GetResult(vNewID) as string; /结束本次调用,释放API资源 broker.Release(); return; 参见附件:SO_SOMain.cs如何调用事件插件客户化开发如果需要在标准单据的保存前后、审核前后、弃审前后等按钮操作时加入个性化逻辑时,则可调用相应的按钮事件插件接口。a) 事件插件位置:事件分为同步插件和异步插件,所谓同步插件就是指插件接口逻辑包含在平台事件的事务中;所谓异步插件就是指插件接口逻辑不包含在平台事件的事务中,插件的逻辑执行情况不影响平台的事件操作。b) 插件事件描述选择事件,右键,可以查看插件事件描述,如下图所示:在事件描述中描述了事件接口方法名(例如:Save_Before),参数个数、参数名称(domhead、dombody、ermsg),参数类型。参考附件:U8apic) 如何调用事件插件以调用销售订单保存前同步插件为例:右键同步插件所有任务注册同步插件 输入插件编码、插件名称,进入插件绑定页签:勾选“修改”在下拉框中选择插件类型(本例以MSDCOM为例):选择dll路径、类名、方法名,如下图所示: 点击“自动匹配”按钮进行测试,如果测试成功则完成插件注册。实际应用本文以VB代码为例,注册销售订单保存前事件插件。销售订单保存前事件插件Public Function Audit_After(domh As DOMDocument, domb As DOMDocument, erstr As String) As BooleanMsgBox OKdomh.save E:ZYRXML付款单_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 县酒管办的工作方案模板
- 800个产粮大县名单
- 中国仿木瓷砖行业市场深度分析及发展趋势预测报告
- 公司部门工作方案模板
- 师德年终工作总结
- 临床技能操作笔试题库及答案2025版
- 临床基础医学知识试题及答案2025版
- 2025年中国厨卫电器电商行业市场运营现状及投资方向研究报告
- 总监办工程部年度工作总结
- 钳工说课课件教学
- 预防性人乳头瘤病毒疫苗中国临床应用指南(2025+版)解读
- 沉井施工难点及对策
- 中医骨伤科学脱位课件
- 2025福建福清市汇融创业投资集团有限公司(第一次)招聘8人笔试参考题库附带答案详解
- 2025年山东高考考试说明(各科均有)
- 中医儿科课题申报书
- 2025-2030全球及中国身份和访问管理即服务(IDaaS)行业市场现状供需分析及投资评估规划分析研究报告
- 野生菌中毒的护理查房
- 尾矿设施施工及验收规范
- 腕管综合征的护理
- 失能老人潜在心理需求识别与满足:定制化资源配置动态优化研究
评论
0/150
提交评论