问题
根据用户在Dynamics AX 2012 R2中的当前DataAreaId执行不同逻辑的最佳实践方法是什么?
背景和背景
我们有一份SSRS报告,该报告已经过定制,因此对于一个法人实体(dataareaid),我们看到的设计与其他法律实体不同。
main
类的CustCollectionJourController
方法已修改如下:
public static void main(Args _args)
{
CustCollectionJourController controller = CustCollectionJourController::construct();
controller.parmReportName(ssrsReportStr (CustomCustCollJourReport, OurNewDesignName));
controller.parmArgs(_args);
controller.startOperation();
}
我不是AX或SSRS开发人员,但在尝试帮助解决与此报告在我们的测试环境中的行为相关的问题时发现此代码(我使用其他几种语言开发,包括C#,所以阅读代码相当舒服)。
我相信这段代码有问题;即所有法律实体都将收到OurNewDesignName
,因为没有逻辑可以确定何时使用OurOriginalDesignName
。
我已经将这个问题传达给了我们的开发人员,但我很谨慎地说"将设计基于数据区id"如果它被错误解释(我们历史上有问题)会产生非动态解决方案,例如:
switch (currentDataAreaid)
{
case 'DAT': //the dataareaid of the legal entity wanting the new report
controller.parmReportName(ssrsReportStr(CCICustCollJourReport, OurNewDesignName));
break;
default:
controller.parmReportName(ssrsReportStr(CCICustCollJourReport, OurOriginalDesignName));
break;
}
而是具有与数据区id相关联的功能,例如:
switch (GetCompanyPreference(currentDataAreaid, 'CustomCustCollJourReportDesignPreference'))
{
case 'OurNewDesignName':
controller.parmReportName(ssrsReportStr(CCICustCollJourReport, OurNewDesignName));
break;
default:
controller.parmReportName(ssrsReportStr(CCICustCollJourReport, OurOriginalDesignName));
break;
}
我怀疑这是最佳实践版本(即一些现有的功能取代我上面使用的GetCompanyPreference
),但我无法找到任何代码示例或文档在此/不知道要搜索的正确术语。