Python表单插件-可实现多种形式、多种效果弹出动态表单原创
金蝶云社区-CQ周玉立
CQ周玉立
148人赞赏了该文章 9,008次浏览 未经作者许可,禁止转载编辑于2022年05月24日 10:56:42

大家好,在金蝶云·星空产品开发中,经常遇到需要做界面交互的场景,为了方便用户实现此功能,往往需要通过点击按钮或者超链接,弹出另一个单据或者表单界面.......  

     

今天分享一个小知识点:通过Python表单插件,实现以各种形式弹出动态表单的业务场景,通过对弹出参数做不同的设置,可以实现不同的弹出效果。


本文以弹出一个自定义过滤动态表单为例,为大家演示其实现步骤和效果。

  • 注:弹出其他业务对象(单据、列表、报表等)也是类似的,构造的ShowParameter类可能会有点差异,但是用法是类似的,大家可以灵活应用。


插件打开其他业务对象社区案例很多,大家也可以自行搜索哈:

1、四种ShowParameter示例
2、插件打开各种界面
3、打开指定业务对象的单据详情界面
......

文后有完整的本案例Python表单插件示例代码,如有需要,请下载附件!




效果一:直接弹出,悬浮显示

TT1.gif

应用场景:通过弹出界面的方式录入数据,然后返回父页面。

具体案例可以参考作者往期文章↓↓↓:
1、Python表单插件-点击菜单弹出动态表单传递参数到子页面
2、Python动态表单插件-子页面关闭返回数据到父页面

关键代码:

def ShowFilterForm():
    global orgId,year,month,guid;
    dic={};
    dic["orgId"]=orgId;
    dic["year"]=year;
    dic["month"]=month;
    dynamicFormShowParameter = DynamicFormShowParameter();
    guid = str(Guid.NewGuid());
    dynamicFormShowParameter.PageId=guid;
    dynamicFormShowParameter.FormId="ora_MDLRZBGL";#动态表单标识
   dynamicFormShowParameter.OpenStyle.ShowType =ShowType.Floating;
    dynamicFormShowParameter.CustomComplexParams.Add("DIC", dic);
    this.View.ShowForm(dynamicFormShowParameter, Action[FormResult](ChildFromClosed));


效果二:主控台弹出新页签显示子页面

TT2.gif

应用场景:通过当前页面超链接跳转到某个单据、报表双击行穿透查询...等

关键代码:

def ShowFilterForm():
    global orgId,year,month,guid;
    dic={};
    dic["orgId"]=orgId;
    dic["year"]=year;
    dic["month"]=month;
    dynamicFormShowParameter = DynamicFormShowParameter();
    guid = str(Guid.NewGuid());
    dynamicFormShowParameter.PageId=guid;
    dynamicFormShowParameter.FormId="ora_MDLRZBGL";#动态表单标识                        

   dynamicFormShowParameter.OpenStyle.ShowType = ShowType.MainNewTabPage;
    dynamicFormShowParameter.CustomComplexParams.Add("DIC", dic);
    this.View.ShowForm(dynamicFormShowParameter, Action[FormResult](ChildFromClosed));


效果三:直接覆盖当前整个表单界面内容,显示子页面信息

TTT3.gif

应用场景:报表双击行穿透查询的另一种效果...大家可以想象其他应用场景....

关键代码:

def ShowFilterForm():
    global orgId,year,month,guid;
    dic={};
    dic["orgId"]=orgId;
    dic["year"]=year;
    dic["month"]=month;
    dynamicFormShowParameter = DynamicFormShowParameter();
    guid = str(Guid.NewGuid());
    dynamicFormShowParameter.PageId=guid;
    dynamicFormShowParameter.FormId="ora_MDLRZBGL";#动态表单标识           

    dynamicFormShowParameter.OpenStyle.ShowType = ShowType.InCurrentForm;
    dynamicFormShowParameter.CustomComplexParams.Add("DIC", dic);
    this.View.ShowForm(dynamicFormShowParameter, Action[FormResult](ChildFromClosed));


效果四:在界面内指定某个页签控件上弹出新页签

TTT4.gif

应用场景快捷的弹出当前页面的某个单据信息,进行展示,并可以对弹出的单据进行操作...

关键代码

def ShowFilterForm():
    global orgId,year,month,guid;
    dic={};
    dic["orgId"]=orgId;
    dic["year"]=year;
    dic["month"]=month;
    dynamicFormShowParameter = DynamicFormShowParameter();
    guid = str(Guid.NewGuid());
    dynamicFormShowParameter.PageId=guid;
    dynamicFormShowParameter.FormId="ora_MDLRZBGL";
#如果TagetKey 为页签控件标识,则ShowType只能为NewTabPage

    dynamicFormShowParameter.OpenStyle.ShowType = ShowType.NewTabPage;
    dynamicFormShowParameter.OpenStyle.TagetKey = "F_ora_Tab";#页签控件标识
    dynamicFormShowParameter.CustomComplexParams.Add("DIC", dic);
    this.View.ShowForm(dynamicFormShowParameter, Action[FormResult](ChildFromClosed));


效果五:弹出到指定页签控件的某个已存在页签内,覆盖该页签原有内容

TTT5.gif

应用场景在界面上用一个页签来切换展示不同的单据或者动态表单界面(页签标题也会随之变化)...等

关键代码

def ShowFilterForm():
    global orgId,year,month,guid;
    dic={};
    dic["orgId"]=orgId;
    dic["year"]=year;
    dic["month"]=month;
    dynamicFormShowParameter = DynamicFormShowParameter();
    guid = str(Guid.NewGuid());
    dynamicFormShowParameter.PageId=guid;
    dynamicFormShowParameter.FormId="ora_MDLRZBGL";
    dynamicFormShowParameter.OpenStyle.ShowType = ShowType.InContainer;
    dynamicFormShowParameter.OpenStyle.TagetKey = "F_ora_Tab_P0";#指定页签标识
    dynamicFormShowParameter.CustomComplexParams.Add("DIC", dic);
    this.View.ShowForm(dynamicFormShowParameter, Action[FormResult](ChildFromClosed));


效果六:弹出到指定面板中,覆盖界面原有内容,(例如,覆盖显示到分割容器某一半布局中)

TTT6.gif

应用场景在界面上用一块区域来加载不同的单据或者弹出某个操作的动态表单...等等

例如,做一个批量维护生产订单用料清单的功能,左边单据体切换不同的生产订单,右边展示对应的生产用料清单,就不需要在生产订单列表逐行关联查询啦!

关键代码

def ShowFilterForm():
    global orgId,year,month,guid;
    dic={};
    dic["orgId"]=orgId;
    dic["year"]=year;
    dic["month"]=month;
    dynamicFormShowParameter = DynamicFormShowParameter();
    guid = str(Guid.NewGuid());
    dynamicFormShowParameter.PageId=guid;
    dynamicFormShowParameter.FormId="ora_MDLRZBGL";
    dynamicFormShowParameter.OpenStyle.ShowType = ShowType.InContainer;
    dynamicFormShowParameter.OpenStyle.TagetKey = "F_ora_Panel";#指定的面板标识
    dynamicFormShowParameter.CustomComplexParams.Add("DIC", dic);
    this.View.ShowForm(dynamicFormShowParameter, Action[FormResult](ChildFromClosed));



#=========================分享到此结束,欢迎大家指正!=======================#



发布于 金蝶云星空BOS开发交流圈 社群

赞 148