通过表单进行跳转到其它单据,并扩展管理维度页签的实现方法原创
金蝶云社区-Tick
Tick
26人赞赏了该文章 2,156次浏览 未经作者许可,禁止转载编辑于2021年05月11日 19:13:48
summary-icon摘要由AI智能服务提供

本文概述了在项目管理系统中嵌入与项目相关单据的步骤,以实现多维度信息管理。步骤包括:1) 创建并关联项目基础资料的管理维度单据;2) 创建动态表单,根据项目ID跳转至相应单据的编辑或新增界面;3) 添加扩展页签,将动态表单嵌入项目页签中。文中提供了关键代码段和具体步骤指引,确保实现预期功能。

我们例子的目标:

在项目页签中嵌入一个与项目相关的单据,来维护项目管理其它维度的信息。


Step1:创建一个管理维度的单据

Step2:创建一个用于跳转的普通动态表单

Step3:添加扩展页签



Step1:创建一个管理维度的单据


并关联项目的基础资料 如单据名为:PLM_PROJECT_RES_REPROT (这里PLM请使用二次开发代码缩写字符)


图片.png

添加一个关联的基础资料

图片.png设置单据头表名为:T_EX_PROJECTRES_REPORT   (EX为二开代码缩写字符)


图片.png图片.png


添加一个菜单按钮,绑定保存操作;


添加一个插件,把当前的对象加载到基础资料字段中。


图片.png

#-----Code Start-----


import clr
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.K3.PLM.CFG.Common.BusinessEntity")
clr.AddReference("Kingdee.K3.PLM.Common.Core")
from Kingdee.BOS.Core.Metadata import OperationStatus
from Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager import BaseObjectManager
from Kingdee.K3.PLM.Common.Core.BOSBridge import PLMContext
def AfterBindData(e):
    if this.View.OpenParameter.Status==OperationStatus.ADDNEW:  #如果是新增视图,需要初始化基础资料字段     
        projectId = this.View.OpenParameter.GetCustomParameter("SourceId");   

        plmctx=PLMContext(this.Context);    
        project=BaseObjectManager.Instance(plmctx).Get(plmctx,projectId);    #查找基础资料对象
        this.Model.SetValue("F_PLM_PROJECT",project);#设置该对象到基础资料字段


#-----Code End-----



Step2、创建用于跳转的动态表单


跳转单据的目的是根据项目id,查找上面的单据是否已经创建,如果已经创建,显示维护界面;如果没有创建显示新增界面


图片.png




图片.png

#----Code start----

import clr
clr.AddReference("Kingdee.K3.PLM.Common.BusinessEntity")
clr.AddReference("Kingdee.K3.PLM.Common.Core")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.Web.Core")
from Kingdee.BOS.Core.Metadata import OperationStatus
from Kingdee.BOS.Core.Metadata import CreateFrom
from Kingdee.BOS.Core.DynamicForm import ShowType
from Kingdee.BOS.Web.Core import CommonSession
from Kingdee.K3.PLM.Common.BusinessEntity.View import PageManager
from Kingdee.K3.PLM.Common.Core.BOSBridge import PLMView
from Kingdee.K3.PLM.Common.Core.BOSBridge import PLMContext
from Kingdee.K3.PLM.Common.Core.Utility import PLMDBUtils

def PreOpenForm(e):
    e.Cancel = True; #取消原有的打开方式,进行跳转到所需的单据(主要是为了进行相关业务转换)
    source=e.OpenParameter.GetCustomParameter("SourceId");#获了传过来的项目标识
    ctx=PLMContext(e.Context);#转PLM用的上下文
    parentView=PageManager.Instance.GetView(ctx, e.OpenParameter.ParentPageId);#还没有View,取父View
    toId=0;
    if source==None:
        source="0";
    oid=PLMDBUtils.Instance.ExecuteScalar(ctx, "SELECT FID FROM T_EX_PROJECTRES_REPORT WHERE FPLMPROJECT="+ source.ToString(),None,None);#通过基础资料字段查询单据的标识
    ed=OperationStatus.ADDNEW;#初始化创建单据视图
    if oid!=None:
        toId=oid;
        ed=OperationStatus.EDIT#数据存在,改为编辑维护单据视图

 PageManager.Instance.ShowBillPage(parentView,"PLM_PROJECT_RES_REPROT",toId,e.OpenParameter.GetCustomParameters(),ed, ShowType.InContainer,None,CreateFrom.Default,"FTab_ResReport")#跳转,注意显示的容器标识为相应页签的Key

#----Code end----

(注,请使用 2020年8月13日以后的补丁)




Step3 添加扩展页签


然后参考https://vip.kingdee.com/article/48864840634185728   帖中的 Step3 将这个跳转的动态表单,嵌入到项目页签中。


图片.png


注意这里的页签标识要与跳转代码中的目标容器标识一致,如这里的 : FTab_ResReport


附:运行的效果


图片.png




--------END----------

图标赞 26
26人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!