1. 编写插件
登陆 BOS 找到帐表对应的服务器插件的类型,编写插件继承于该类型,并重写其
BuilderReportSqlAndTempTable和
GetReportHeaders
示例代码如下:
/// <summary>
/// 物料收发明细报表
/// </summary>
[Description("物料收发明细表扩展"), HotUpdate]
public class MaterialReceiveSendDetailsReport : StockDetailRpt
{
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
// 调用标准版本的查询数据
string middleTableName = "_" + tableName.Substring(1);
base.BuilderReportSqlAndTempTable(filter, middleTableName);
// 将需要扩展的字段查出,并写入账表关联的数据表
string strSql = $@"select A.*,
1 as FPurchaseAmount,
1 as FPurchasePrice,
1 as FTaxRate,
1 as FFactoryNo
into {tableName} from {middleTableName} as A";
DBServiceHelper.Execute(this.Context, strSql);
// 删除临时表
string dropSql = "DROP TABLE " + middleTableName;
DBServiceHelper.Execute(this.Context, dropSql);
}
public override ReportHeader GetReportHeaders(IRptParams filter)
{
ReportHeader header = base.GetReportHeaders(filter);
header.AddChild("FPurchaseAmount", new LocaleValue("采购金额"));
header.AddChild("FPurchasePrice", new LocaleValue("采购单价"));
header.AddChild("FTaxRate", new LocaleValue("采购税率"));
header.AddChild("FFactoryNo", new LocaleValue("工厂货号"));
return header;
}
}
}
需注意:
- 临时表的表名长度不能大于 30,默认表以 TMP 开头,长度为 30
- 在删除临时表前,可调试断点,查看临时表的数据
2. 扩展帐表
查找要添加字段的帐表,点击批量编辑属性,将插件注册到服务器插件,并反注册默认的插件,并保存。
3. 扩展过滤框
注册帐表的二开插件后,查询结果中仍然无法看到二开添加的字段,我们需要在扩展过滤框,在显示隐藏列中加入扩展的字段。点开字段集合,添加自定义字段,字段的标识与列名相匹配。
如果是查表里自带的字段,选择基本资料属性即可,该字段会默认加入到`SELECT`中。
如果字段为二开自行实现的取数查询,字段应根据实际情况选择:文本,金额,折扣率等。
4. 发布更新
将编译后的插件复制到应用户程序 bin 目录下,并重启 IIS.