套打.二开案例.修改套打数据行中分组的输出顺序
套打的排序设置配置比较多,包括套打设置器套打模板上的数据表格的排序字段,运行时套打设置中的高级设置,套打分组管理的分组自带排序、插件排序。
<1>常规排序
<2>分组排序
套打用的比较多的小伙伴,如果留心发现,会注意到套打的分组设置是默认升序的。
<3>实现分组降序排序
暂时是没有支持,不过我们还有一种很强大的排序方法——插件排序能够实现这个功能,如果逻辑简单直接能够通过python插件实现(如果需要在列表上生效则挂设在列表插件中,同理于表单)。
下面上效果图和代码:
from System import *
def OnPrepareNotePrintData(e):
if e.NotePrintTplId.Equals("107c8554-7790-4c72-81f3-7291534771c3"):
if e.DataSourceId.Equals("FPOOrderEntry",StringComparison.OrdinalIgnoreCase):
tempList = sorted(e.DataObjects,key =lambda x:(x["FMaterialId_FNumber"]),reverse=True);
for index in range(len(tempList)):
e.DataObjects[index] = tempList[index];
说明:
<1>第一个标红处“107c8554-7790-4c72-81f3-7291534771c3”,这个是套打模板的标识,可以在套打模板的属性栏看到,如果你当前插件只想在这个套打模板生效,则应该加入这个判断
<2>第二个标红处"FPOOrderEntry",这个就是对应的需要修改的数据表格的数据源标识,这里我举例的是采购订单的明细信息,因此它的标识就是FPOOrderEntry。
<3>第三、四标红处为使用排序,排序字段为物料编码FMaterialId_FNumber(这里明确一点,正常的物料编码应该为FMaterialId.FNumber,但是套打进行了转义,如果需要对基础资料下的字段时,应当使用下划线替代点,当然,如果你仅为普通字段如采购数量FQty这种就不会有这类问题,同时这里的这个标识必须为数据表格上存在的字段,如果需要使用这个字段排序但是不打印这个字段则尝试使用0宽度列隐藏该字段,这个章节后续开帖子讲),倒序排序则需要启用选项reverse=True。
补充说明:
排序字段支持多字段排序,如
tempList = sorted(e.DataObjects,key =lambda x:(x["FSTAFFS"],x["FPAYGROUP"]));
这个就是可以支持先按照FSTAFFS升序后按照FPAYGROUP升序。
套打.二开案例.修改套打数据行中分组的输出顺序
本文2024-09-23 04:13:02发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163879.html