【问题标题】:Add custom text to AX 2012 drill-down links将自定义文本添加到 AX 2012 向下钻取链接
【发布时间】: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++


【解决方案1】:

您可能应该想出另一个解决方案as mentioned in this post,但仍有办法。

URL 有两个可以修改的对象:

动态://[Drill-down target(str)]/?Drilldown_[Int64]

根据您的说法,如果您修改 [Drill-down target],那么它会使用默认客户端配置启动 AX,这是您不想要的行为。如果您有匹配的 [Drill-down target],它将在打开的客户端窗口中启动,这是我无法确认的行为,但我会从表面上看,并假设您是正确的。

这意味着您可以在 URL 中修改的唯一内容是 [int64]。这实际上是一个string,它通过str2int64(...) 转换为int64,而str2int64(...) 又对应于RecId这就是有趣的地方。

这项工作都发生在\Classes\SysStartUpCmdDrillDown\infoRun

好吧,幸运的是,对象的范围是:

  • RecId - 0 to 9223372036854775807
  • Int64 - -9223372036854775808 to 9223372036854775807

您可以致电minRecId()maxRecId() 进行确认。

这意味着您可以通过调用此范围内的 URL 来使用 -9223372036854775808 to -1 号码:

  • dynamics://0/?DrillDown_-1
  • dynamics://0/?DrillDown_-9223372036854775808

然后您将修改 \Classes\SysStartUpCmdDrillDown\infoRun 以查找负数,并派生到您的自定义代码。

如何您决定使用这些否定的 # 取决于您。您可以让第一个 n 位 为表 ID 或自定义表的查找值。从技术上讲,您不能将RecId 用作负数的一部分,因为理论上RecId 可能会上升到那么高(负1)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多