我正在尝试创建自己的自定义钻取功能,其中url dynamics://0?myfunction_123456
将启动我自己的代码。
在CSysStartupCmdconstruct
中,此基本代码:
case 'viewalert':
sysStartupCmd = new SysStartUpCmdViewAlert(s,parm);
break;
case 'drilldown':
sysStartupCmd = new SysStartUpCmdDrillDown(s,parm);
break;
case 'viewalertrule':
sysStartupCmd = new SysStartUpCmdViewAlertRule(s,parm);
break;
我已经测试过,所有这些都被这些URL发射:
- Dynamics://0/?drilldown_382576
- Dynamics://0/?ViewAlert_382576
- Dynamics://0/?viewalertrule_382576
但是,如果我添加自己的案例,将所有其他代码保持不变,我将无法发射URL:
case 'myFunction':
sysStartupCmd = new SysStartUpCmdDrillDown(s,parm);
break;
我已经在整个系统上挖了,无法弄清楚是什么原因导致dynamics://
URL仅在这三种情况下开火。有注册表条目吗?我找到了CEventDrillDownPoller
,它似乎创建了一个管道服务器来处理传入的内容?
当然,我每次键入stackoverflow问题时都会找出自己的答案,但我认为信息确实很有用。
这个堆栈问题使我发现C:Program Files (x86)Microsoft Dynamics AX50ClientBinAxHLink.exe %1
处理动态://urls。
这导致我参加了微软社区论坛,其他人面临与我相似的问题。
因此,解决方案将是:
- 创建具有C#或其他语言的URI Handler,以与AX进行通信(类似于此)
- hi-jack 3个处理现有案例之一,其中有一些自定义X 代码,以尝试并从中分叉。也许通过更改URL中的钻取目标并以这种方式处理,或者将一些特殊字符附加到字符串中。
- 呼叫
"c:Program Files (x86)Microsoft Dynamics AX50ClientBinAx32.exe" -startupcmd=myfunction_myParams
并将该单击链接。
您已经回答了自己的问题,但是很容易(如果您知道如何)挂接标准钻取代码以自定义斧头以启动特定表单,例如:
在公司xxx
的项目03310511上启动AXstart dynamics://TEST/?DrillDown_0?table=InventTable&field=itemId&value=03310511&company=XXX
它将假设合理的默认值。
start dynamics://TEST/?DrillDown_0?table=CustTable&value=113545
和ax可以从HTML电子邮件调用,假设接收器具有斧头客户端!
<a href="dynamics://TEST/?DrillDown_0?table=CustTable&value=113545">113545</a>
您在我的Pastebin中找到了我的自定义。