​【二开指导】凭证上取对方科目的方法原创
金蝶云社区-战斗的凯文
战斗的凯文
10人赞赏了该文章 226次浏览 未经作者许可,禁止转载编辑于2024年02月27日 14:45:25

        二开取凭证上对方科目的方法非常复杂,二开人员自己实现的方法很难保证和官方一致,为确保二开应用上的结果和官方一致,建议直接调用官方的取对方科目方法实现。
        调用官方方法实现取对方科目的方法如下:

1, 创建待取对方科目凭证分录临时表,该临时表作为传入参数使用。

Create Table VoucherEntryTableName(
   FVOUCHERID           int                  not null default 0,
   FENTRYID             int                  not null default 0,
   FAccountID           int                  not null default 0,
   FAMOUNT              decimal(28,10)       not null default 0,
   FAMOUNTFOR           decimal(28,10)       not null default 0,
   FExchangeRate        decimal(26,15)       not null default 0,
   FDC                  int                  not null default 0
)

2, 向上述临时表插入待取对方科目的分录数据,示例脚本如下:

INSERT INTO VoucherEntryTableName
(FVOUCHERID, FENTRYID, FAMOUNT, FACCOUNTID, FAMOUNTFOR, FEXCHANGERATE, FDC)
SELECT A.FVOUCHERID, A.FENTRYID, A.FAMOUNT, A.FACCOUNTID, A.FAMOUNTFOR, A.FEXCHANGERATE, A.FDC FROM T_GL_VOUCHER V
INNER JOIN T_GL_VOUCHERENTRY A ON V.FVOUCHERID=A.FVOUCHERID
WHERE V.FACCOUNTBOOKID=@FACCOUNTBOOKID AND V.FYEAR=@FYEAR AND V.FPERIOD=@FPERIOD...;

3, 调用取对方科目方法,传入上述已有数据的临时表作为参数,得到对方科目结果临时表

VchOtherSideEntryInfor acct = new VchOtherSideEntryInfor(this.Context, VoucherEntryTableName);
sideTmpTbl = acct.GetVoucherOtherSideEntryInfor();

返回的临时表包含的字段如下:

FVOUCHERID,FENTRYID,FDC,FACCOUNTID,FAMOUNT,FAMOUNTFOR,FEXCHANGERATE,FSIDEENTRYID,FSIDEDC,FSIDEACCOUNTID, FSIDEAMOUNT,FSIDEAMOUNTFOR,FSIDEEXCHANGERATE

其中带SIDE前缀的就是对方科目相关字段,和本方科目相关字段一一对应。
注:对方科目类(VchOtherSideEntryInfor)需要引用组件:Kingdee.K3.FIN.GL.App.Core.dll
4,临时表用完之后,记得及时删除过程中用到的临时表

赞 10