
# 业务场景
星空报表开发中,遇到带百分号(%)的数据列,在进行分组汇总时会导致数据错乱,可通过报表的表单插件,对汇总行进行修改处理,具体效果如下:

可以看到,营业利用率列的数据是带%的,汇总行的数据也是正确的,而不是简单的合计。

# 实现步骤
### 1.在初始化方法中启用分组合计
在报表的服务插件里的初始化方法Initialize()设置分组汇总启用
```
public override void Initialize()
{ //初始化
base.Initialize();
//标识报表是否支持分组汇总
ReportProperty.IsGroupSummary = true;
}
```
### 2.字段类型设置为数值类型
如果是取数插件设置的字段,则使用SqlStorageType.SqlDecimal设置为数值类型
```
/// 设置标题
public override ReportHeader GetReportHeaders(IRptParams filter)
{
ReportHeader header = base.GetReportHeaders(filter);
//设置字段
header.AddChild("FYYLRL", new LocaleValue("营业利润率(%)"), SqlStorageType.SqlDecimal);
return header;
}
```
如果是在BOS里配置的字段,一样使用数值类型的字段,一般使用小数。

### 3.设置为合计列
方法一:报表服务插件GetSummaryColumnInfo()方法里设置。
营业利润率字段标识:FYYLRL,这里如果不是数值类型汇总会报错。
```language
var result = base.GetSummaryColumnInfo(filter);
// 设置报表合计列
result.Add(new SummaryField("FYYLRL", BOSEnums.Enu_SummaryType.SUM));
return result;
```
方法二:BOS字段设置汇总类型:合计

### 4.设置分组汇总
设置按客户分组汇总

设置默认分组

这里如果不设置按客户分组的话,汇总行就会在单据体下方,像这样

### 5.检查是否分组汇总成功

此时,数据行正常汇总。可是客户利润率这行的汇总数据是累加的,我需要的是营业利润/销售收入,也没有%号。这两个问题都需要表单插件做处理
### 6.报表表单插件
```language
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Core.Report.PlugIn.Args;
using System;
using System.ComponentModel;
namespace HNKD.K3.JinMoFang.App.ServicePlugin
{
[Kingdee.BOS.Util.HotUpdate]
[Description("【表单插件】客户利润表,自定义列合计")]
public class KHLRB_ReportEdit : AbstractSysReportPlugIn
{
//记录字段类型
static private string type = "";