#使用技巧# 单据列表勾选分录行打印原创
金蝶云社区-周立思
周立思
62人赞赏了该文章 1305次浏览 未经作者许可,禁止转载编辑于2023年02月02日 16:30:04

业务背景

业务需求:实现首营品种申请列表勾选过期证照分录行进行打印证照图片。平台单据列表勾选分录行在打印时实际是整单选择,无法满足仅打印勾选的分录行。

image.png

单据列表勾选单据编号 SYSP202302020001 分录行序号2 ,在打印插件中调试查询的数据是整单数据。

image.png

思路方案

核心思路:在打印插件 AbstractPrintPlugin 插件 afterLoadData() 方法过滤分录行数据。

要实现过滤勾选的分录行数据就需要在打印插件中获取到单据列表中勾选的分录行有哪些。查看打印插件基类 AbstractPrintPlugin 源码 getExtParam() 方法可用。调试跟踪【打印】操作,发现可在单据列表插件 beforeDoOperation() 方法 printpreview 操作代码 FormOperate.getParameter().put("extParam",勾选分录行) ,将列表勾选的分录行传入到打印插件中,对应 AbstractPrintPlugin.extParam。


实现步骤

1、编写单据列表插件,重写 beforeDoOperation() 。点击【打印】操作时列表勾选分录行参数赋值 FormOperate.getParameter() 对应的键 extParam。

image.png

列表勾选的分录行按照 单据ID+"#"+分录ID 拼接成key 用于打印插件筛选使用。

选择行获取单据ID:ListSelectedRow.getPrimaryKeyValue()

选择行获取分录行ID:ListSelectedRow.getEntryPrimaryKeyValue()


image.png


2、编写打印插件,重写 AbstractPrintPlugin.afterLoadData() 方法,主要目的筛选勾选分录行数据。AbstractPrintPlugin.getExtParam() 获取传入的列表勾选分录行参数。

image.png

筛选分录行采用的策略使用 单据ID+"#"+分录ID 拼接成key,进行匹配筛选。

image.png

筛选后的数据,只保留列表勾选的分录行数据。

image.png

实现效果

image.png

打印预览效果是勾选的两条分录数据。单据编号 SYSP202302020001 只打印勾选的分录行(到期日期 2023-02-11)。

image.png

开发环境版本

苍穹版本号 v5.0.011

注意事项

1、单据列表默认启用【分录行支持被选择】

新建页面,类型是【参数】,模版是【列表选项模版】

image.png

字段【分录行支持被选择】缺省值设置为打开。保存,发布。

image.png

在页面开发设计器,【列表】页签,修改【列表选项】为新创建的参数页面。

image.png

2、打印插件基类 AbstractPrintPlugin 是新打印的插件(对应新打印模板),AbstractPrintServicePlugin 是旧打印的插件。



赞 62