账表套打数据源取数自定义设置【分享】
金蝶云社区-云社区用户4u731234
云社区用户4u731234
6人赞赏了该文章 4482次浏览 未经作者许可,禁止转载编辑于2017年02月21日 11:30:52

在单据或基础资料上我们可以新建套打模板,对于单据及基础资料的套打干预
如果我们做过的小伙伴,相信有参看过这篇帖子
【分享】 套打:通过插件来对打印数据进行处理
https://vip.kingdee.com/article/18476

那么现在问题来了, 基于账表 数据源建立的套打是否支持此功能呢?

有检查了下代码的功能实现时间,其实从2016-03-04 PT102021 5.0补丁版本开始,账表的套打就有支持此功能

实现也是类似的,
本帖子的原始问题需求
K3CLOUD5.1明细账打印二次开发,求命名空间。
https://vip.kingdee.com/article/15981

下面把实现的过程分享给大家。
直接给示例,
基于【明细分类账】分页账表进行的实例效果。
针对5.0目前的补丁版本,
运行效果:

从截图中可以看出,
【明细分类账】,当表体方向字段获取到的数据为“平”时,余额字段进行自定义的显示“哈哈 是平的”
相关配置:


插件代码:

附上代码:
[code]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Orm.DataEntity;

namespace ClassLibrary.Business.PlugIn
{
[Description("账表-表单插件 【明细分类账】 当“方向”是平的 “余额”字段格式化进行需要的数据处理显示 ")]
public class ReportPlugIn : AbstractSysReportPlugIn
{

public override void OnPrepareNotePrintData(PreparePrintDataEventArgs e)
{
base.OnPrepareNotePrintData(e);

if (this.View.BillBusinessInfo.GetForm().Id != "GL_RPT_SubLedger") return; //GL_RPT_SubLedger【明细分类账】标识

if (e.DataSourceId == "FList") //FBillHead账表头的DataSourceId FList账表表格数据的DataSourceId
{
if (e.DataObjects.Length > 0 //账表表格有获取到数据 并且字段标识有 FDC 方向,FBALANCES 余额
&& e.DataObjects[0].DynamicObjectType.Properties.Contains("FDC")
&& e.DataObjects[0].DynamicObjectType.Properties.Contains("FBALANCES"))
{
DynamicObject[] objs = e.DataObjects;
foreach (DynamicObject obj in objs)
{
if (obj["FDC"].ToString() == "平")
{
obj["FBALANCES"] = "哈哈 是平的";
}
}
}
}
}
}
}
[/code]

针对6.0版本 有更好消息
我们不仅可以写组件进行账表套打的取数干预,而且也可以支持更方便的Python脚本
配置:
直接注册一个Python脚本,无需写.net 组件及重启iis。

通过给的Python脚本,我们比较容易想到,套的界面的显示效果。
套的的数据源,账表头及账表表格数据第二个字段都会进行了“*#*#*#”显示。

直接查看效果,正式我们预期的效果。

附上Python脚本:
[code]#Report 账表套打数据处理
#对数据源的第二个字段设置为“*#*#*#”显示
#by wanghl 2017-2-20
def OnPrepareNotePrintData(e):
for obj in e.DataObjects:
obj[1] = '*#*#*#'[/code]

我们可以看到Python脚本的方便性,对于5.0版本,账表套打数据的自定义Python脚本的干预,会在下个补丁中进行支持。


谢谢。