我想在我的acumatica自定义设置屏幕上实现打开和关闭开关功能。
假设我要实施:
feature1
feature2
feature3
当我勾选Feature1时,具有该Feature的相应屏幕,如果它在站点地图上仍然可见,对我来说还是可以的,或者当用户进入该屏幕时,它将提示用户该模块不可用或未设置实例。
我正在使用与GraphName相同的ClassName的构造函数,
public MyGraphClassName()
{
throw new PXException("Error goes here for the Initialization method");
}
但是,当我这样做时,应用DAC的屏幕也出现了错误,但是它仍然必须继续,因为它只是该屏幕的一部分。我该怎么做?,我也使用_RowSelected()事件完成了,它似乎不起作用。我迷路了。
答案 0 :(得分:1)
我认为您正在寻找的是在构造函数中抛出PXSetupNotEnteredException
。我已经在各种屏幕上做到了这一点,Acumatica也是如此。典型用途是阻止用户使用需要首先配置设置记录的页面。您可能会因为未配置或未启用功能而被阻止。
此处的示例在仓库页面上。如果页面已加载且未填写“库存”首选项,则该页面将引发设置错误,这会使整个页面如下图所示。您可以根据需要更改消息,指示未设置或启用功能。
public class INSiteMaint : PXGraph<INSiteMaint, INSite>
{
//..
public PXSetup<INSetup> insetup;
//..
public INSiteMaint()
{
//Check for feature enabled or setup complete
if (insetup.Current == null)
{
throw new PXSetupNotEnteredException(ErrorMessages.SetupNotEntered, typeof(INSetup), PXMessages.LocalizeNoPrefix(IN.Messages.INSetup));
}
//..
//..
}
如果设置对象为空(未配置IN首选项),则以下仓库页面将变为:
还值得一提的是,在2019R1或更高版本中,您可以通过添加自己的条目来通过Acumatica启用/禁用功能来控制功能。如果实施正确,您可以让Acumatica自动从站点地图隐藏页面(无需实现PXSetupNotEnteredException)。目前尚无相关文档(测试版),但估计今年某个时候会有更多详细信息。