不少客户二开是需要获取类似科目余额表展示的维度编码和名称的场景,如图:
目前总账提供两种接口可供二开使用
维度服务Kingdee.K3.FIN.GL.App.Core.FlexItemDetailService.GetFlexItemDetailData 方法,传入上下文和科目维度临时表(需包含facctid,fdetailid两列),返回一个临时表,字段说明(faccountid科目内码,fid维度内码,fdetailnumber维度编码,fdetailname维度名称),代码段示例如下:
使用快照的维度服务Kingdee.K3.FIN.GL.App.Core.AnalysisDetailIdService.GetFlexNumberName方法,参数和返回值同1完全相同,使用时需确认快照是否启用,建议执行如下sql启用快照:
MERGE INTO T_BAS_USERPARAMETER UP USING (SELECT 'SNAPSHOTENABLE' FKEY,'GL_RPT_MultiSubLedger' FPARAMETEROBJID, 'true' FPARAMETERS ) TM ON TM.FKEY=UP.FKEY AND TM.FPARAMETEROBJID=UP.FPARAMETEROBJID WHEN MATCHED THEN UPDATE SET UP.FPARAMETERS=TM.FPARAMETERS WHEN NOT MATCHED THEN INSERT(FID, FKEY, FUSERID, FPARAMETEROBJID, FPARAMETERS) VALUES (NEWID(), TM.FKEY, -1, TM.FPARAMETEROBJID, TM.FPARAMETERS);注:快照保存在”T_GL_DETAILSNAPSHOT_多语言编码“,如简体中文为T_GL_DETAILSNAPSHOT_2052,英文T_GL_DETAILSNAPSHOT_1033,可truncate,系统在下次调用时会自动刷新快照
另有维度分列需求的,展示效果如图:
目前仅提供实时取数的方式,后续会完善快照模式,使用方法:调用Tuple<List<string>, string> FlexObject = Kingdee.K3.FIN.GL.App.Core.FlexItemDetailService.GetFlexItemDetailDataByCol(ctx, tempTable, filter.CustomParams["FlexByColName"] as Dictionary<string, int>)
输入参数ctx, tempTable和上面1保持一致,另增加额外显示列参数Dictionary<string, int>,string为核算维度列表中的维度列标识(可在维核算维度列表的显示隐藏列中找到),int为1。返回值为元组,其中List<string>为实际存在的维度列标识,string为维度临时表表结构为(faccountid科目内码,fid维度内码,维度1列标识_number,维度1列标识_name ,维度2列标识_number,维度2列标识_name...)
推荐阅读