套打.二开案例.修改套打数据行中分组的输出顺序

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

套打.二开案例.修改套打数据行中分组的输出顺序

套打的排序设置配置比较多,包括套打设置器套打模板上的数据表格的排序字段,运行时套打设置中的高级设置,套打分组管理的分组自带排序、插件排序。

<1>常规排序

QQ图片20191224193808.webp

QQ图片20191224193812.webp


<2>分组排序

套打用的比较多的小伙伴,如果留心发现,会注意到套打的分组设置是默认升序的。

QQ图片20191224194011.webp

<3>实现分组降序排序

暂时是没有支持,不过我们还有一种很强大的排序方法——插件排序能够实现这个功能,如果逻辑简单直接能够通过python插件实现(如果需要在列表上生效则挂设在列表插件中,同理于表单)。

下面上效果图和代码:

QQ图片20191224195822.webp

QQ图片20191224195908.webp

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升序。


套打.二开案例.修改套打数据行中分组的输出顺序

套打的排序设置配置比较多,包括套打设置器套打模板上的数据表格的排序字段,运行时套打设置中的高级设置,套打分组管理的分组自带排序、插...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息