如何从报表设计器调用Acumatica函数?
我有一个用Acumatica编写的常用函数,我们在各种Acumatica屏幕上使用它,我们希望在报表设计器中使用此函数,以便打印值。 示例:CheckBday()如果我们传递客户代码,它将检查此客户生日字段,如果是今天,它将返回“生日快乐”如何从报表设计器调用Acumatica函数?,acumatica,Acumatica,我有一个用Acumatica编写的常用函数,我们在各种Acumatica屏幕上使用它,我们希望在报表设计器中使用此函数,以便打印值。 示例:CheckBday()如果我们传递客户代码,它将检查此客户生日字段,如果是今天,它将返回“生日快乐” 是否可以在报表设计器中调用此公用函数进行处理?如果是这样,如何在报表设计器中实现这一点,任何洞察都会有所帮助。您可以使用用户定义函数(UDF)在报表设计器上使用扩展函数。 你可以: 创建一个名为ReportUDF的新插件项目。添加一个名为UtilFuncti
是否可以在报表设计器中调用此公用函数进行处理?如果是这样,如何在报表设计器中实现这一点,任何洞察都会有所帮助。您可以使用用户定义函数(UDF)在报表设计器上使用扩展函数。 你可以:
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;
}
}
}
}
- 在Visual Studio中打开ReportLauncher.aspx.cs文件(网站文件夹>框架)
- 将以下代码行添加到静态构造函数页面的底部\u ReportLauncer:
Type DemoReportFunctionsType = System.Web.Compilation.BuildManager.GetType("ReportUDF.UtilFunctions", false); if(DemoReportFunctionsType != null) { ExpressionContext.RegisterExternalObject("ReportUDF",Activator.CreateInstance(DemoReportFunctionsType)); }
= ReportUDF.YOURFUNCTION([DAC.UsrSomeField])
观察:定制ReportLauncher.aspx.cs不是标准做法,升级过程中的更改应重新应用。您始终可以将这些更改编译为自定义包的一部分;但是,您应该确保在升级期间保留此代码文件的增强功能(如果有)。否则,报表可能无法按预期运行。您可以使用用户定义函数(UDF)在报表设计器上使用扩展函数。 你可以:
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;
}
}
}
}
- 在Visual Studio中打开ReportLauncher.aspx.cs文件(网站文件夹>框架)
- 将以下代码行添加到静态构造函数页面的底部\u ReportLauncer:
Type DemoReportFunctionsType = System.Web.Compilation.BuildManager.GetType("ReportUDF.UtilFunctions", false); if(DemoReportFunctionsType != null) { ExpressionContext.RegisterExternalObject("ReportUDF",Activator.CreateInstance(DemoReportFunctionsType)); }
= ReportUDF.YOURFUNCTION([DAC.UsrSomeField])
观察:定制ReportLauncher.aspx.cs不是标准做法,升级过程中的更改应重新应用。您始终可以将这些更改编译为自定义包的一部分;但是,您应该确保在升级期间保留此代码文件的增强功能(如果有)。否则报告可能无法按预期运行。正如@cbetabeta提到的,使用
报告用户定义功能(UDF)
是一种可能的方法。但是维护定制的ReportLauncher.aspx.cs
版本到版本将是一个挑战
另一种可能的方法是通过具有
PXFormula
/PXDBScalar
/PXDBCalced
属性的未绑定DAC字段。您也可以使用自定义BQL函数(源自BqlFormulaEvaluator
),您可以参考PX.Objects
源代码的公式子文件夹中提供的开箱即用自定义BQL函数。或者您可以参考使用这种自定义BQL函数的地方。正如@cbetabeta提到的,使用报告用户定义函数(UDF)
是一种可能的方法。但是维护定制的ReportLauncher.aspx.cs
版本到版本将是一个挑战
另一种可能的方法是通过具有PXFormula
/PXDBScalar
/PXDBCalced
属性的未绑定DAC字段。您也可以使用自定义BQL函数(源自BqlFormulaEvaluator
),您可以参考PX.Objects
源代码的公式子文件夹中提供的开箱即用自定义BQL函数。或者,您可以参考使用此类自定义BQL函数的位置HierarchySorting