U890 产成品入库单Api调用 未将对象引用设置到对象的实例
U890 产成品入库单当执行到: if (!broker.Invoke()) 这句时报错信息如下:未将对象引用设置到对象的实例,请问各位大虾,该如何解决?
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using UFIDA.U8.MomServiceCommon;
using UFIDA.U8.U8MOMAPIFramework;
using UFIDA.U8.U8APIFramework;
using UFIDA.U8.U8APIFramework.Meta;
using UFIDA.U8.U8APIFramework.Parameter;
using MSXML2;
namespace QTN.DAL
{
class U8API
{
public Boolean ProductIn(out string msg)
{
//第一步:构造u8login对象并登陆(引用U8API类库中的Interop.U8Login.dll)
//如果当前环境中有login对象则可以省去第一步
U8Login.clsLogin u8Login = new U8Login.clsLogin();
String sSubId = "AS";
String sAccID = "(default)@999";
String sYear = "2010";
String sUserID = "demo";
String sPassword = "";
String sDate = "2010-07-11";
String sServer = "ericshu3";
String sSerial = "";
if (!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial))
{
msg = "登陆失败,原因:" + u8Login.ShareString;
Marshal.FinalReleaseComObject(u8Login);
return false;
}
//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
U8EnvContext envContext = new U8EnvContext();
envContext.U8Login = u8Login;
//第三步:设置API地址标识(Url)
//当前API:添加新单据的地址标识为:U8API/ProductIn/Add
U8ApiAddress myApiAddress = new U8ApiAddress("U8API/ProductIn/Add");
//第四步:构造APIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);
//第五步:API参数赋值
//给普通参数sVouchType赋值。此参数的数据类型为System.String,此参数按值传递,表示单据类型:10
broker.AssignNormalValue("sVouchType", "10");
//给BO表头参数DomHead赋值,此BO参数的业务类型为产成品入库单,属表头参数。BO参数均按引用传递
//提示:给BO表头参数DomHead赋值有两种方法
//方法一是直接传入MSXML2.DOMDocumentClass对象
//broker.AssignNormalValue("DomHead", new MSXML2.DOMDocumentClass())
//方法二是构造BusinessObject对象,具体方法如下:
BusinessObject DomHead = broker.GetBoParam("DomHead");
DomHead.RowCount = 1; //设置BO对象(表头)行数,只能为一行
//给BO对象(表头)的字段赋值,值可以是真实类型,也可以是无类型字符串
//以下代码示例只设置第一行值。各字段定义详见API服务接口定义
/****************************** 以下是必输字段 ****************************/
DomHead["id"] = 1; //主关键字段,int类型
DomHead["ccode"] = "0000000001"; //入库单号,string类型
DomHead["ddate"] = "2010-07-01"; //入库日期,DateTime类型
DomHead["cwhname"] = ""; //仓库,string类型
/***************************** 以下是非必输字段 ****************************/
DomHead["cmodifyperson"] = ""; //修改人,string类型
DomHead["dmodifydate"] = ""; //修改日期,DateTime类型
DomHead["dnmaketime"] = ""; //制单时间,DateTime类型
DomHead["dnmodifytime"] = ""; //修改时间,DateTime类型
DomHead["dnverifytime"] = ""; //审核时间,DateTime类型
DomHead["dchkdate"] = ""; //检验日期,DateTime类型
DomHead["iavaquantity"] = ""; //可用量,string类型
DomHead["iavanum"] = ""; //可用件数,string类型
DomHead["ipresentnum"] = ""; //现存件数,string类型
DomHead["ufts"] = ""; //时间戳,string类型
DomHead["cpspcode"] = ""; //产品,string类型
DomHead["iproorderid"] = ""; //生产订单ID,string类型
DomHead["cmpocode"] = "0000000025"; //生产订单号,string类型
DomHead["cprobatch"] = ""; //生产批号,string类型
DomHead["iverifystate"] = ""; //iverifystate,string类型
DomHead["iswfcontrolled"] = ""; //iswfcontrolled,string类型
DomHead["ireturncount"] = ""; //ireturncount,string类型
DomHead["cdepname"] = ""; //部门,string类型
DomHead["crdname"] = ""; //入库类别,string类型
DomHead["dveridate"] = ""; //审核日期,DateTime类型
DomHead["cmemo"] = ""; //备注,string类型
DomHead["cchkperson"] = ""; //检验员,string类型
DomHead["cmaker"] = "demo"; //制单人,string类型
DomHead["chandler"] = ""; //审核人,string类型
DomHead["itopsum"] = ""; //最高库存量,string类型
DomHead["caccounter"] = ""; //记账人,string类型
DomHead["ilowsum"] = ""; //最低库存量,string类型
DomHead["ipresent"] = ""; //现存量,string类型
DomHead["isafesum"] = ""; //安全库存量,string类型
DomHead["cbustype"] = "成品入库"; //业务类型,int类型
DomHead["cpersonname"] = ""; //业务员,string类型
DomHead["cdefine1"] = ""; //表头自定义项1,string类型
DomHead["cdefine11"] = ""; //表头自定义项11,string类型
DomHead["cdefine12"] = ""; //表头自定义项12,string类型
DomHead["cdefine13"] = ""; //表头自定义项13,string类型
DomHead["cdefine14"] = ""; //表头自定义项14,string类型
DomHead["cdefine2"] = ""; //表头自定义项2,string类型
DomHead["cdefine3"] = ""; //表头自定义项3,string类型
DomHead["csource"] = "生产订单"; //单据来源,int类型
DomHead["cdefine5"] = ""; //表头自定义项5,int类型
DomHead["cdefine15"] = ""; //表头自定义项15,int类型
DomHead["cdefine6"] = ""; //表头自定义项6,DateTime类型
DomHead["brdflag"] = "1"; //收发标志,string类型
DomHead["cdefine7"] = ""; //表头自定义项7,double类型
DomHead["cdefine16"] = ""; //表头自定义项16,double类型
DomHead["cdefine8"] = ""; //表头自定义项8,string类型
DomHead["cdefine9"] = ""; //表头自定义项9,string类型
DomHead["cdefine10"] = ""; //表头自定义项10,string类型
DomHead["cvouchtype"] = "10"; //单据类型,string类型
DomHead["cwhcode"] = "01"; //仓库编码,string类型
DomHead["crdcode"] = "12"; //入库类别编码,string类型
DomHead["cdepcode"] = "0503"; //部门编码,string类型
DomHead["cpersoncode"] = ""; //业务员编码,string类型
DomHead["vt_id"] = 63; //模版号,int类型
DomHead["cdefine4"] = ""; //表头自定义项4,DateTime类型
//给BO表体参数domBody赋值,此BO参数的业务类型为产成品入库单,属表体参数。BO参数均按引用传递
//提示:给BO表体参数domBody赋值有两种方法
//方法一是直接传入MSXML2.DOMDocumentClass对象 //broker.AssignNormalValue("domBody", new MSXML2.DOMDocumentClass()) //方法二是构造BusinessObject对象,具体方法如下: BusinessObject domBody = broker.GetBoParam("domBody"); domBody.RowCount = 10; //设置BO对象行数 //可以自由设置BO对象行数为大于零的整数,也可以不设置而自动增加行数 //给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串 //以下代码示例只设置第一行值。各字段定义详见API服务接口定义 /****************************** 以下是必输字段 ****************************/ domBody["autoid"] = 1; //主关键字段,int类型 domBody["cinvcode"] = "F010-998000-001"; //产品编码,string类型 domBody["editprop"] = "A"; //编辑属性:A表新增,M表修改,D表删除,string类型 /***************************** 以下是非必输字段 ****************************/ domBody["id"] = ""; //与主表关联项,int类型 domBody["cinvaddcode"] = ""; //产品代码,string类型 domBody["cinvname"] = ""; //产品名称,string类型 domBody["cinvstd"] = ""; //规格型号,string类型 domBody["cinvm_unit"] = ""; //主计量单位,string类型 domBody["cinva_unit"] = ""; //库存单位,string类型 domBody["creplaceitem"] = ""; //替换件,string类型 domBody["cposition"] = ""; //货位编码,string类型 domBody["cinvdefine1"] = ""; //存货自定义项1,string类型 domBody["cinvdefine2"] = ""; //存货自定义项2,string类型 domBody["cinvdefine3"] = ""; //存货自定义项3,string类型 domBody["cfree1"] = ""; //存货自由项1,string类型 domBody["cbatchproperty1"] = ""; //批次属性1,double类型 domBody["cbatchproperty2"] = ""; //批次属性2,double类型 domBody["cfree2"] = ""; //存货自由项2,string类型 domBody["cbatch"] = ""; //批号,string类型 domBody["iinvexchrate"] = ""; //换算率,double类型 domBody["inum"] = ""; //件数,double类型 domBody["iquantity"] = "1"; //数量,double类型 domBody["iunitcost"] = ""; //单价,double类型 domBody["iprice"] = ""; //金额,double类型 domBody["ipunitcost"] = ""; //计划单价,double类型 domBody["ipprice"] = ""; //计划金额,double类型 domBody["dvdate"] = ""; //失效日期,DateTime类型 domBody["isoutquantity"] = ""; //累计出库数量,double类型 domBody["isoutnum"] = ""; //累计出库件数,double类型 domBody["dsdate"] = ""; //结算日期,DateTime类型 domBody["ifquantity"] = ""; //实际数量,double类型 domBody["ifnum"] = ""; //实际件数,double类型 domBody["cvouchcode"] = ""; //对应入库单id,string类型 domBody["cfree3"] = ""; //存货自由项3,string类型 domBody["cbatchproperty3"] = ""; //批次属性3,double类型 domBody["cbatchproperty4"] = ""; //批次属性4,double类型 domBody["cfree4"] = ""; //存货自由项4,string类型 domBody["cfree5"] = ""; //存货自由项5,string类型 domBody["cbatchproperty5"] = ""; //批次属性5,double类型 domBody["cbatchproperty6"] = ""; //批次属性6,string类型 domBody["cfree6"] = ""; //存货自由项6,string类型 domBody["cfree7"] = ""; //存货自由项7,string类型 domBody["cbatchproperty7"] = ""; //批次属性7,string类型 domBody["cbatchproperty8"] = ""; //批次属性8,string类型 domBody["cfree8"] = ""; //存货自由项8,string类型 domBody["cfree9"] = ""; //存货自由项9,string类型 domBody["cbatchproperty9"] = ""; //批次属性9,string类型 domBody["cbatchproperty10"] = ""; //批次属性10,DateTime类型 domBody["cfree10"] = ""; //存货自由项10,string类型 domBody["cdefine36"] = ""; //表体自定义项15,DateTime类型 domBody["cdefine37"] = ""; //表体自定义项16,DateTime类型 domBody["cinvdefine13"] = ""; //存货自定义项13,string类型 domBody["cinvdefine14"] = ""; //存货自定义项14,string类型 domBody["cinvdefine15"] = ""; //存货自定义项15,string类型 domBody["cinvdefine16"] = ""; //存货自定义项16,string类型 domBody["inquantity"] = ""; //应收数量,double类型 domBody["innum"] = ""; //应收件数,double类型 domBody["dmadedate"] = ""; //生产日期,DateTime类型 domBody["impoids"] = ""; //生产订单子表ID,int类型 domBody["icheckids"] = ""; //检验单子表ID,int类型 domBody["isodid"] = ""; //销售订单子表ID,string类型 domBody["brelated"] = ""; //是否联副产品,int类型 domBody["cbvencode"] = ""; //供应商编码,string类型 domBody["cinvouchcode"] = ""; //对应入库单号,string类型 domBody["cvenname"] = ""; //供应商,string类型 domBody["imassdate"] = ""; //保质期,int类型 domBody["cassunit"] = ""; //库存单位码,string类型 domBody["corufts"] = ""; //对应单据时间戳,string类型 domBody["cposname"] = ""; //货位,string类型 domBody["cmolotcode"] = ""; //生产批号,string类型 domBody["cmassunit"] = ""; //保质期单位,int类型 domBody["csocode"] = ""; //需求跟踪号,string类型 domBody["cmocode"] = ""; //生产订单号,string类型 domBody["cvmivencode"] = ""; //代管商代码,string类型 domBody["cvmivenname"] = ""; //代管商,string类型 domBody["bvmiused"] = ""; //代管消耗标识,int类型 domBody["ivmisettlequantity"] = ""; //代管挂账确认单数量,double类型 domBody["ivmisettlenum"] = ""; //代管挂账确认单件数,double类型 domBody["cdemandmemo"] = ""; //需求分类代号说明,string类型 domBody["iordertype"] = ""; //销售订单类别,int类型 domBody["iorderdid"] = ""; //iorderdid,int类型 domBody["iordercode"] = ""; //销售订单号,string类型 domBody["iorderseq"] = ""; //销售订单行号,string类型 domBody["iexpiratdatecalcu"] = ""; //有效期推算方式,int类型 domBody["cexpirationdate"] = ""; //有效期至,string类型 domBody["dexpirationdate"] = ""; //有效期计算项,string类型 domBody["cciqbookcode"] = ""; //手册号,string类型 domBody["ibondedsumqty"] = ""; //累计保税处理抽取数量,string类型 domBody["copdesc"] = ""; //工序说明,string类型 domBody["cmworkcentercode"] = ""; //工作中心编码,string类型 domBody["cmworkcenter"] = ""; //工作中心,string类型 domBody["isotype"] = ""; //需求跟踪方式,int类型 domBody["cbaccounter"] = ""; //记账人,string类型 domBody["bcosting"] = ""; //是否核算,string类型 domBody["isoseq"] = ""; //需求跟踪行号,string类型 domBody["imoseq"] = ""; //生产订单行号,string类型 domBody["iopseq"] = ""; //工序行号,string类型 domBody["cdefine34"] = ""; //表体自定义项13,int类型 domBody["cdefine35"] = ""; //表体自定义项14,int类型 domBody["cdefine22"] = ""; //表体自定义项1,string类型 domBody["cdefine28"] = ""; //表体自定义项7,string类型 domBody["cdefine29"] = ""; //表体自定义项8,string类型 domBody["cdefine30"] = ""; //表体自定义项9,string类型 domBody["cdefine31"] = ""; //表体自定义项10,string类型 domBody["cdefine32"] = ""; //表体自定义项11,string类型 domBody["cdefine33"] = ""; //表体自定义项12,string类型 domBody["cinvdefine4"] = ""; //存货自定义项4,string类型 domBody["cinvdefine5"] = ""; //存货自定义项5,string类型 domBody["cinvdefine6"] = ""; //存货自定义项6,string类型 domBody["cinvdefine7"] = ""; //存货自定义项7,string类型 domBody["cinvdefine8"] = ""; //存货自定义项8,string类型 domBody["cinvdefine9"] = ""; //存货自定义项9,string类型 domBody["cinvdefine10"] = ""; //存货自定义项10,string类型 domBody["cinvdefine11"] = ""; //存货自定义项11,string类型 domBody["cinvdefine12"] = ""; //存货自定义项12,string类型 domBody["cbarcode"] = ""; //条形码,string类型 domBody["cdefine23"] = ""; //表体自定义项2,string类型 domBody["cdefine24"] = ""; //表体自定义项3,string类型 domBody["cdefine25"] = ""; //表体自定义项4,string类型 domBody["itrids"] = ""; //特殊单据子表标识,double类型 domBody["cdefine26"] = ""; //表体自定义项5,double类型 domBody["cdefine27"] = ""; //表体自定义项6,double类型 domBody["citemcode"] = ""; //项目编码,string类型 domBody["cname"] = ""; //项目,string类型 domBody["citem_class"] = ""; //项目大类编码,string类型 domBody["citemcname"] = ""; //项目大类名称,string类型 //给普通参数domPosition赋值。此参数的数据类型为System.Object,此参数按引用传递,表示货位:传空 broker.AssignNormalValue("domPosition", ""); //该参数errMsg为OUT型参数,由于其数据类型为System.String,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult("errMsg")获取其值 //给普通参数cnnFrom赋值。此参数的数据类型为ADODB.Connection,此参数按引用传递,表示连接对象,如果由调用方控制事务,则需要设置此连接对象,否则传空 broker.AssignNormalValue("cnnFrom", null); //该参数VouchId为INOUT型普通参数。此参数的数据类型为System.String,此参数按值传递。在API调用返回时,可以通过GetResult("VouchId")获取其值 broker.AssignNormalValue("VouchId", ""); //该参数domMsg为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数 MSXML2.IXMLDOMDocument2 domMsg = new MSXML2.DOMDocumentClass(); broker.AssignNormalValue("domMsg", domMsg); //给普通参数bCheck赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否控制可用量。 broker.AssignNormalValue("bCheck", true); //给普通参数bBeforCheckStock赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示检查可用量 broker.AssignNormalValue("bBeforCheckStock", true); //给普通参数bIsRedVouch赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否红字单据 broker.AssignNormalValue("bIsRedVouch", false); //给普通参数sAddedState赋值。此参数的数据类型为System.String,此参数按值传递,表示传空字符串 broker.AssignNormalValue("sAddedState", ""); //给普通参数bReMote赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否远程:转入false broker.AssignNormalValue("bReMote", false); //第六步:调用API try { 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; } } catch (Exception ex) { string msgs = ex.ToString(); } //第七步:获取返回结果 //获取返回值 //获取普通返回值。此返回值数据类型为System.Boolean,此参数按值传递,表示返回值:true:成功,false:失败 System.Boolean result = Convert.ToBoolean(broker.GetReturnValue()); //获取out/inout参数值 //获取普通OUT参数errMsg。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 System.String errMsgRet = broker.GetResult("errMsg") as System.String; //获取普通INOUT参数VouchId。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 System.String VouchIdRet = broker.GetResult("VouchId") as System.String; //获取普通OUT参数domMsg。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空 //MSXML2.IXMLDOMDocument2 domMsgRet = Convert.ToObject(broker.GetResult("domMsg")); //结束本次调用,释放API资源 //broker.Release(); msg = errMsgRet; return result; } } } //方法一是直接传入MSXML2.DOMDocumentClass对象
//broker.AssignNormalValue("domBody", new MSXML2.DOMDocumentClass())
//方法二是构造BusinessObject对象,具体方法如下:
BusinessObject domBody = broker.GetBoParam("domBody");
domBody.RowCount = 10; //设置BO对象行数
//可以自由设置BO对象行数为大于零的整数,也可以不设置而自动增加行数
//给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串
//以下代码示例只设置第一行值。各字段定义详见API服务接口定义
/****************************** 以下是必输字段 ****************************/
domBody["autoid"] = 1; //主关键字段,int类型
domBody["cinvcode"] = "F010-998000-001"; //产品编码,string类型
domBody["editprop"] = "A"; //编辑属性:A表新增,M表修改,D表删除,string类型
/***************************** 以下是非必输字段 ****************************/
domBody["id"] = ""; //与主表关联项,int类型
domBody["cinvaddcode"] = ""; //产品代码,string类型
domBody["cinvname"] = ""; //产品名称,string类型
domBody["cinvstd"] = ""; //规格型号,string类型
domBody["cinvm_unit"] = ""; //主计量单位,string类型
domBody["cinva_unit"] = ""; //库存单位,string类型
domBody["creplaceitem"] = ""; //替换件,string类型
domBody["cposition"] = ""; //货位编码,string类型
domBody["cinvdefine1"] = ""; //存货自定义项1,string类型
domBody["cinvdefine2"] = ""; //存货自定义项2,string类型
domBody["cinvdefine3"] = ""; //存货自定义项3,string类型
domBody["cfree1"] = ""; //存货自由项1,string类型
domBody["cbatchproperty1"] = ""; //批次属性1,double类型
domBody["cbatchproperty2"] = ""; //批次属性2,double类型
domBody["cfree2"] = ""; //存货自由项2,string类型
domBody["cbatch"] = ""; //批号,string类型
domBody["iinvexchrate"] = ""; //换算率,double类型
domBody["inum"] = ""; //件数,double类型
domBody["iquantity"] = "1"; //数量,double类型
domBody["iunitcost"] = ""; //单价,double类型
domBody["iprice"] = ""; //金额,double类型
domBody["ipunitcost"] = ""; //计划单价,double类型
domBody["ipprice"] = ""; //计划金额,double类型
domBody["dvdate"] = ""; //失效日期,DateTime类型
domBody["isoutquantity"] = ""; //累计出库数量,double类型
domBody["isoutnum"] = ""; //累计出库件数,double类型
domBody["dsdate"] = ""; //结算日期,DateTime类型
domBody["ifquantity"] = ""; //实际数量,double类型
domBody["ifnum"] = ""; //实际件数,double类型
domBody["cvouchcode"] = ""; //对应入库单id,string类型
domBody["cfree3"] = ""; //存货自由项3,string类型
domBody["cbatchproperty3"] = ""; //批次属性3,double类型
domBody["cbatchproperty4"] = ""; //批次属性4,double类型
domBody["cfree4"] = ""; //存货自由项4,string类型
domBody["cfree5"] = ""; //存货自由项5,string类型
domBody["cbatchproperty5"] = ""; //批次属性5,double类型
domBody["cbatchproperty6"] = ""; //批次属性6,string类型
domBody["cfree6"] = ""; //存货自由项6,string类型
domBody["cfree7"] = ""; //存货自由项7,string类型
domBody["cbatchproperty7"] = ""; //批次属性7,string类型
domBody["cbatchproperty8"] = ""; //批次属性8,string类型
domBody["cfree8"] = ""; //存货自由项8,string类型
domBody["cfree9"] = ""; //存货自由项9,string类型
domBody["cbatchproperty9"] = ""; //批次属性9,string类型
domBody["cbatchproperty10"] = ""; //批次属性10,DateTime类型
domBody["cfree10"] = ""; //存货自由项10,string类型
domBody["cdefine36"] = ""; //表体自定义项15,DateTime类型
domBody["cdefine37"] = ""; //表体自定义项16,DateTime类型
domBody["cinvdefine13"] = ""; //存货自定义项13,string类型
domBody["cinvdefine14"] = ""; //存货自定义项14,string类型
domBody["cinvdefine15"] = ""; //存货自定义项15,string类型
domBody["cinvdefine16"] = ""; //存货自定义项16,string类型
domBody["inquantity"] = ""; //应收数量,double类型
domBody["innum"] = ""; //应收件数,double类型
domBody["dmadedate"] = ""; //生产日期,DateTime类型
domBody["impoids"] = ""; //生产订单子表ID,int类型
domBody["icheckids"] = ""; //检验单子表ID,int类型
domBody["isodid"] = ""; //销售订单子表ID,string类型
domBody["brelated"] = ""; //是否联副产品,int类型
domBody["cbvencode"] = ""; //供应商编码,string类型
domBody["cinvouchcode"] = ""; //对应入库单号,string类型
domBody["cvenname"] = ""; //供应商,string类型
domBody["imassdate"] = ""; //保质期,int类型
domBody["cassunit"] = ""; //库存单位码,string类型
domBody["corufts"] = ""; //对应单据时间戳,string类型
domBody["cposname"] = ""; //货位,string类型
domBody["cmolotcode"] = ""; //生产批号,string类型
domBody["cmassunit"] = ""; //保质期单位,int类型
domBody["csocode"] = ""; //需求跟踪号,string类型
domBody["cmocode"] = ""; //生产订单号,string类型
domBody["cvmivencode"] = ""; //代管商代码,string类型
domBody["cvmivenname"] = ""; //代管商,string类型
domBody["bvmiused"] = ""; //代管消耗标识,int类型
domBody["ivmisettlequantity"] = ""; //代管挂账确认单数量,double类型
domBody["ivmisettlenum"] = ""; //代管挂账确认单件数,double类型
domBody["cdemandmemo"] = ""; //需求分类代号说明,string类型
domBody["iordertype"] = ""; //销售订单类别,int类型
domBody["iorderdid"] = ""; //iorderdid,int类型
domBody["iordercode"] = ""; //销售订单号,string类型
domBody["iorderseq"] = ""; //销售订单行号,string类型
domBody["iexpiratdatecalcu"] = ""; //有效期推算方式,int类型
domBody["cexpirationdate"] = ""; //有效期至,string类型
domBody["dexpirationdate"] = ""; //有效期计算项,string类型
domBody["cciqbookcode"] = ""; //手册号,string类型
domBody["ibondedsumqty"] = ""; //累计保税处理抽取数量,string类型
domBody["copdesc"] = ""; //工序说明,string类型
domBody["cmworkcentercode"] = ""; //工作中心编码,string类型
domBody["cmworkcenter"] = ""; //工作中心,string类型
domBody["isotype"] = ""; //需求跟踪方式,int类型
domBody["cbaccounter"] = ""; //记账人,string类型
domBody["bcosting"] = ""; //是否核算,string类型
domBody["isoseq"] = ""; //需求跟踪行号,string类型
domBody["imoseq"] = ""; //生产订单行号,string类型
domBody["iopseq"] = ""; //工序行号,string类型
domBody["cdefine34"] = ""; //表体自定义项13,int类型
domBody["cdefine35"] = ""; //表体自定义项14,int类型
domBody["cdefine22"] = ""; //表体自定义项1,string类型
domBody["cdefine28"] = ""; //表体自定义项7,string类型
domBody["cdefine29"] = ""; //表体自定义项8,string类型
domBody["cdefine30"] = ""; //表体自定义项9,string类型
domBody["cdefine31"] = ""; //表体自定义项10,string类型
domBody["cdefine32"] = ""; //表体自定义项11,string类型
domBody["cdefine33"] = ""; //表体自定义项12,string类型
domBody["cinvdefine4"] = ""; //存货自定义项4,string类型
domBody["cinvdefine5"] = ""; //存货自定义项5,string类型
domBody["cinvdefine6"] = ""; //存货自定义项6,string类型
domBody["cinvdefine7"] = ""; //存货自定义项7,string类型
domBody["cinvdefine8"] = ""; //存货自定义项8,string类型
domBody["cinvdefine9"] = ""; //存货自定义项9,string类型
domBody["cinvdefine10"] = ""; //存货自定义项10,string类型
domBody["cinvdefine11"] = ""; //存货自定义项11,string类型
domBody["cinvdefine12"] = ""; //存货自定义项12,string类型
domBody["cbarcode"] = ""; //条形码,string类型
domBody["cdefine23"] = ""; //表体自定义项2,string类型
domBody["cdefine24"] = ""; //表体自定义项3,string类型
domBody["cdefine25"] = ""; //表体自定义项4,string类型
domBody["itrids"] = ""; //特殊单据子表标识,double类型
domBody["cdefine26"] = ""; //表体自定义项5,double类型
domBody["cdefine27"] = ""; //表体自定义项6,double类型
domBody["citemcode"] = ""; //项目编码,string类型
domBody["cname"] = ""; //项目,string类型
domBody["citem_class"] = ""; //项目大类编码,string类型
domBody["citemcname"] = ""; //项目大类名称,string类型
//给普通参数domPosition赋值。此参数的数据类型为System.Object,此参数按引用传递,表示货位:传空
broker.AssignNormalValue("domPosition", "");
//该参数errMsg为OUT型参数,由于其数据类型为System.String,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult("errMsg")获取其值
//给普通参数cnnFrom赋值。此参数的数据类型为ADODB.Connection,此参数按引用传递,表示连接对象,如果由调用方控制事务,则需要设置此连接对象,否则传空
broker.AssignNormalValue("cnnFrom", null);
//该参数VouchId为INOUT型普通参数。此参数的数据类型为System.String,此参数按值传递。在API调用返回时,可以通过GetResult("VouchId")获取其值
broker.AssignNormalValue("VouchId", "");
//该参数domMsg为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
MSXML2.IXMLDOMDocument2 domMsg = new MSXML2.DOMDocumentClass();
broker.AssignNormalValue("domMsg", domMsg);
//给普通参数bCheck赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否控制可用量。
broker.AssignNormalValue("bCheck", true);
//给普通参数bBeforCheckStock赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示检查可用量
broker.AssignNormalValue("bBeforCheckStock", true);
//给普通参数bIsRedVouch赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否红字单据
broker.AssignNormalValue("bIsRedVouch", false);
//给普通参数sAddedState赋值。此参数的数据类型为System.String,此参数按值传递,表示传空字符串
broker.AssignNormalValue("sAddedState", "");
//给普通参数bReMote赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否远程:转入false
broker.AssignNormalValue("bReMote", false);
//第六步:调用API
try
{
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;
}
}
catch (Exception ex)
{
string msgs = ex.ToString();
}
//第七步:获取返回结果
//获取返回值
//获取普通返回值。此返回值数据类型为System.Boolean,此参数按值传递,表示返回值:true:成功,false:失败
System.Boolean result = Convert.ToBoolean(broker.GetReturnValue());
//获取out/inout参数值
//获取普通OUT参数errMsg。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空
System.String errMsgRet = broker.GetResult("errMsg") as System.String;
//获取普通INOUT参数VouchId。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空
System.String VouchIdRet = broker.GetResult("VouchId") as System.String;
//获取普通OUT参数domMsg。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空
//MSXML2.IXMLDOMDocument2 domMsgRet = Convert.ToObject(broker.GetResult("domMsg"));
//结束本次调用,释放API资源
//broker.Release();
msg = errMsgRet;
return result;
}
}
}
页:
[1]