【发布时间】:2016-05-24 09:33:49
【问题描述】:
我想自定义标准的向下钻取功能并将文本参数添加到向下钻取 URL。然后,我将解析并使用 SysStartUpCmdDrillDown 或 EventDrillDownPoller 类中的参数,就像 Jan B. Kjeldsen 在this question 中提供的解决方案一样。
标准的向下钻取链接是dynamics://Target/?DrillDown_RecID/:
dynamics://0/?DrillDown_5637230378/
在以前的 AX 版本中,可以将 RecId 修改为自定义文本并在客户端启动后解析文本:
dynamics://0/?DrillDown_0MenuItemName=PurchTable&FieldName=PurchId&FieldValue=P000044
不幸的是,在 AX 2012 中,在启动客户端之前会检查 RecId,如果它不是有效的 int64,则不会将向下钻取事件发送到客户端。由于无法将 RecId 更改为整数以外的任何值,@Alex Kwitny 在 that same question 的 cmets 中建议您可以将自定义文本添加到向下钻取目标,如下所示:
dynamics://0MenuItemName=PurchTable/?DrillDown_5637230378/
我遇到的问题是链接现在对启动哪个实例感到困惑。
如果目标等于System Admin -> system parameters -> Alerts ->Drill-down target 中的值,则会启动具有正确服务器实例的客户端。当我使用自定义文本附加文本时,它总是启动默认实例(这可能与我打算启动的实例不同)。虽然这并不理想,但我可以解决这个问题。
更大的问题是它现在总是启动默认实例的新会话,即使客户端会话已经启动。据我所知,我无法编写 X++ 代码来解决这个问题,因为服务器实例是在客户端中的任何代码执行之前确定的。
我的问题是这样的 - 如何在保留客户端实例启动方式的同时将自定义文本添加到向下钻取链接:如果实例的客户端已经打开,它应该处理打开客户端中的链接,并没有启动默认实例的新客户端。
【问题讨论】:
-
对于 AX09,我认为它总是会启动默认配置,然后只需比较 URL 中的向下钻取目标以匹配配置。如果这是一场比赛,它将继续下去。这种行为在 AX12 中不一样吗?该代码似乎验证了向下钻取目标,所以我想它仍然依赖于默认配置?
标签: axapta dynamics-ax-2012 x++