我有一个用 Acumatica 编写的通用函数,我们在各种 Acumatica 屏幕上使用它,我们希望在报表设计器中使用此函数,以便我们可以打印该值。
示例:CheckBday() 如果我们传递客户代码,它应该检查此客户生日字段,如果是今天,则返回“生日快乐”
是否可以调用报表设计器中的这个常用函数来处理?如果是这样,如何在报表设计器中实现这一点,任何见解都会有所帮助。
您可以通过使用用户定义函数 (UDF) 在报表设计器上使用扩展函数。
你可以:
- 创建一个名为 ReportUDF 的新 AddOn 项目。添加一个名为 UtilFunctions.cs 的新类文件。
-
添加公共函数 YOURFUNCTION:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PX.Objects.AP;
namespace ReportUDF
{
public class UtilFunctions
{
public string YOURFUNCTION(string PARAM)
{
try
{
//function code
}
catch (Exception ex)
{
return ex.Message;
}
}
}
}
参数及其数据类型:类中的方法应始终包含字符串类型的参数,并始终返回字符串类型的值。处理参数和返回参数的最佳方法是将它们声明为 Object 类型。但是,您需要在使用或使用这些参数之前将它们转换为适当的数据类型,以确保您的方法正确运行。
编译此附加项目。编译成功后,确保程序集(ReportUDF.dll)放置在 Acumatica 网站的 Bin 文件夹中。
-
在 ReportLauncher.aspx.cs 中连接这个新程序集,如下所述:
- 在 Visual Studio 中打开 ReportLauncher.aspx.cs 文件(网站文件夹 > 框架)。
-
将以下代码行添加到静态构造函数 Pages_ReportLauncer 的底部:
Type DemoReportFunctionsType =
System.Web.Compilation.BuildManager.GetType("ReportUDF.UtilFunctions", false);
if(DemoReportFunctionsType != null)
{
ExpressionContext.RegisterExternalObject("ReportUDF",Activator.CreateInstance(DemoReportFunctionsType));
}
-
在报表设计器中打开表单报表并添加具有以下表达式的 TextBox 控件,如下所示:
= ReportUDF.YOURFUNCTION([DAC.UsrSomeField])
观察:UDF 不会显示在表达式编辑器中。
- 保存并运行报告。
观察:自定义 ReportLauncher.aspx.cs 不是标准做法,应重新应用升级期间的更改。您始终可以将这些更改编译为自定义包的一部分;但是,您应该确保在升级过程中保留此代码文件的增强功能(如果有)。否则,报告可能无法按预期运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)