金蝶K3二次开发之WEBSERVICE导入凭证
2016-12-24 09:05阅读:
金蝶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.代码文件