Python实现报表联查单据原创
金蝶云社区-邱育华
邱育华
59人赞赏了该文章 2822次浏览 未经作者许可,禁止转载编辑于2020年12月08日 08:51:11

一、【使用场景】: 二开一张简单账表,双击明细行,通过python脚本实现联查单据


二、【代码示例】:

import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.ServiceHelper")
from System import *
from System.Collections.Generic import *
from System.ComponentModel import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.Metadata.FormElement import *
from Kingdee.BOS.Core.Permission import *
from Kingdee.BOS.Core.Report import *
from Kingdee.BOS.Core.Report.PlugIn import *
from Kingdee.BOS.Core.Report.PlugIn.Args import *
from Kingdee.BOS.Core.SqlBuilder import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.Resource import *

def CellDbClick(e):
    fbillNo = str(this.View.GetCurrentRowValue("FBILLNO"))
    formId = str(this.View.GetCurrentRowValue("FFORMID"))
    fm = MetaDataServiceHelper.GetFormMetaData(this.View.Context, formId)
    form = fm.BusinessInfo.GetForm()
    param = QueryBuilderParemeter()
    param.FormId = formId
    param.FilterClauseWihtKey = "FBILLNO = '" + fbillNo + "'"
    
    # 获取到单据内码
    param.BusinessInfo = fm.BusinessInfo
    tolist = List[SelectorItemInfo]()
    tolist.Add(SelectorItemInfo(form.PkFieldName))
    param.SelectItems = tolist
    dynObjs = QueryServiceHelper.GetDynamicObjectCollection(this.View.Context, param)
    
    # 联查单据展示
    para = BillShowParameter()
    para.OpenStyle.ShowType = ShowType.MainNewTabPage
    para.FormId = formId
    para.Status = OperationStatus.VIEW
    para.PKey = str(dynObjs[0]["FID"])
    this.View.ShowForm(para)


3.jpg


二、【实现效果】:

1.jpg



2.jpg





以上分析及处理方案是一些个人的理解,如有不对之处,还请指正。

赞 59