金蝶K3二次开发之WEBSERVICE导入凭证

金蝶K3二次开发之通过WEBSERVICE导入凭证
1.测试WEBSERVICE是否能正常使用。
WEBSERVICE安装完成后,在开始菜单-金蝶 K3
WISE创新管理平台-金蝶K/3工具下,打开“客户端工具包”,选择“Adapter适配器”下的“k/3
WebServices”,打开后即可启动K/3 Web
Services测试工具,可通过选择“服务类型”和“调用的方法”,在请求文件路径中修改测试的参数,点执行时会开展WebService的测试并获取测试结果,如下图。

2.在C#中调用凭证接口。
打开C#.NET新建一个winform项目,在解决方案资源管理器窗口点击右键添加服务引用。弹出对话框如下图。

3.调用代码如下(代码在K/3 14.2的环境下编写,其他环境如有错误请做适当修改)
增加引用
using WindowsFormsApplication1.Vos;

  private void VoucherUpdate()
     
  {
     
     
//特别注意,所有对象的属性都要按要求设置内容,切记不可图省事,否则提示下标越界错误。
     
     
VoucherServicesSoapClient VServices = new
VoucherServicesSoapClient();
     
      string
errstr = string.Empty;
     
      Voucher[]
voh2={new Voucher()};   
     
     
voh2[0].FNumber = 719;  //凭证号
     
     
voh2[0].FNumberSpecified = true;  
 //凭证号是否更改
     
     
voh2[0].FDate = “2015-09-01”;   //日期
     
     
voh2[0].FExplanation = “摘要”;  //摘要
     
     
voh2[0].FGroup = “记”;    
//凭证字
     
     
voh2[0].FPeriod = 9;    
  //期间 
     
     
voh2[0].FPeriodSpecified = true;  //期间是否更改
     
     
voh2[0].FYear = 2015;    
     
 //年
     
     
voh2[0].FYearSpecified = true;  
 //年是否更改
     
     
voh2[0].FSerialNum = 5058;    
   //凭证序号
 
     
     
voh2[0].FSerialNumSpecified = true; //凭证序号是否更改
     
     
voh2[0].FAttachments = 0;    
     
 //附件数量   
     
     
voh2[0].FAttachmentsSpecified = true; //附件数量是否更改
     
     
voh2[0].FReference = “”;  //参考信息
     
     
voh2[0].FCashier = “NONE”;  //出纳员
     
     
voh2[0].FHandler = “”;    
//会计主管
     
     
voh2[0].FTransDate = “2015-09-01”;  //
 发生日期
     
     
voh2[0].FPreparer = “Administrator”;   //制单人
     
     
voh2[0].FPoster = “NONE”;    
     
    //记账人

     
     
//增加两个凭证分录
     
      Entries[]
ents = { new Entries(), new Entries() };
     
     
//——-设置第一个凭证分录属性
     
     
//具体字段解释请查询  select * from t_FieldDescription
 where FTableID=1
     
     
ents[0].FExplanation = “凭证录入检测-分录1”;
     
     
ents[0].FAccountNumber = “1406”;
     
     
ents[0].FAccountName = “发出商品”;
     
     
ents[0].FCurrencyNumber = “RMB”;
     
     
ents[0].FCurrencyName = “人民币”;
     
     
ents[0].FAmount = 1000;
     
     
ents[0].FAmountSpecified = true;
     
     
ents[0].FAmountFor = 1000;
     
     
ents[0].FAmountForSpecified = true;
     
     
ents[0].FEntryID = 0;
     
     
ents[0].FEntryIDSpecified = true;
     
     
ents[0].FDC = 1;
     
     
ents[0].FDCSpecified = true;
     
     
ents[0].FSettleTypeName = “”;
     
     
ents[0].FTransNo = “”;
     
     
ents[0].FSettleNo = “”;
     
     
ents[0].FMeasureUnit = “”;
     
     
ents[0].FMeasureUnitUUID = “”;
     
     
ents[0].FExchangeRate = 1;
     
     
ents[0].FExchangeRateSpecified = true;
     
     
ents[0].FQuantitySpecified = true;
     
     
ents[0].FUnitPriceSpecified = true;

     
     
//——-设置第二个凭证分录属性
     
     
ents[1].FExplanation = “凭证录入检测-分录2”;
     
     
ents[1].FAccountNumber = “1601.04”;  
     
   
     
     
ents[1].FAccountName = “运输工具”;
     
     
ents[1].FCurrencyNumber = “RMB”;
     
     
ents[1].FCurrencyName = “人民币”;
     
     
ents[1].FAmount = 1000;
     
     
ents[1].FAmountForSpecified = true;
     
     
ents[1].FAmountFor = 1000;
     
     
ents[1].FAmountSpecified = true;
     
     
ents[1].FDC = 0;
     
     
ents[1].FDCSpecified = true;
     
     
ents[1].FEntryID = 1;
     
     
ents[1].FEntryIDSpecified = true;

     
     
ents[1].FSettleTypeName = “”;
     
     
ents[1].FTransNo = “”;
     
     
ents[1].FSettleNo = “”;
     
     
ents[1].FMeasureUnit = “”;
     
     
ents[1].FMeasureUnitUUID = “”;

     
     
ents[1].FExchangeRate = 1;
     
     
ents[1].FExchangeRateSpecified = true;
     
     
ents[1].FQuantitySpecified = true;
     
     
ents[1].FUnitPriceSpecified = true;  
     
   
     
     
voh2[0].Entries = ents;

     
     
//为第一个凭证分录增加两个核算科目
     
     
DetailEntries[] dets = { new DetailEntries(), new DetailEntries()
};
     
     
//设置核算科目数据
     
     
dets[0].FDetailNumber = “1.1.2.007”;
     
     
dets[0].FTypeNumber = “001”;
     
     
dets[0].FTypeName = “客户”;
     
     
dets[1].FDetailNumber = “00011”;
     
     
dets[1].FTypeNumber = “003”;
     
     
dets[1].FTypeName = “职员”;
     
     
voh2[0].Entries[0].DetailEntries = dets;
     
      //保存
     
     
VServices.Update(out errstr,6, “administrator”, “”, voh2, false,
true, 0);
     
   
  
     
     
//参数说明:
     
      //
 iAisID:账套ID,通过账套查询服务获取,类型:inteager
     
      //
 在 KDAcctDB 数据库中查询select * from t_ad_kdAccount_gl
的facctid字段
     
      //
 strUser:用户名称,必须为K/3中的合法用户,类型:string
     
      //
 strPassword:用户密码,目前通过明文传递,类型:string
     
      //
 Data:业务数据,符合Schema规范,类型:数组
     
      //
 bCheckByUUID:指明是否按UUID更新数据。True表示按UUID更新数据,False表示按Number,Name更新数据,类型:Boolean
     
      //
 bAddNewOnly:是否只增加记录,true表示只增加不覆盖记录,
     
      //
 false表示既增加又覆盖记录,类型:boolean

     
  }
}
4.代码文件