2014-01-23 5 views
5

URL (dynamics://0?myfunction_123456)이 내 자신의 코드를 실행하는 내 자신의 사용자 지정 드릴 다운 기능을 만들려고합니다. C\SysStartupCmd\construct에서dynamics : // URL을 처리 할 대상은 무엇입니까?

이 기본 코드 :

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을 해고 :

  • 역학 : // 0/DrillDown_382576
  • 역학 : // 0 /? ViewAlert_382576
  • 다이나믹 : // 0 /? ViewAlertRule_382576
나는 모든 시스템을 통해 발굴 한

case 'myFunction': 
     sysStartupCmd = new SysStartUpCmdDrillDown(s,parm); 
     break; 

을하고 알아낼 수 없습니다 : 나도 같은 다른 모든 코드를 떠나, 내 자신의 경우를 추가하는 경우

그러나, 나는 불에 URL을 얻을 수 없다 이 세 가지 경우에만 dynamics:// URL이 실행됩니다. 레지스트리 항목이 있습니까? 아마 들어오는 것을 처리하기 위해 PipeServer를 생성하는 것처럼 보이는 C\EventDrillDownPoller을 찾았습니까?

답변

6

물론 stackoverflow 질문을 입력 할 때마다 내 자신의 대답을 알아낼 수 있지만 정보가 정말 유용하다고 생각합니다.

이 스택 질문 led me to find out thatC:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\AxHLink.exe %1은 Dynamics : // URL을 처리합니다.

누가 나를으로 이끌었습니다. 다른 사람은 저와 비슷한 문제에 직면했습니다.

그래서 해결책은 될 것이다하려면 다음 중 하나를

  • AX (Similar to this)
  • 하이 잭 통신 사용자 정의 C# 또는 다른 언어와 URI 핸들러를 만들기는 3 중 하나는 기존 케이스를 처리 일부 사용자 정의 X + + 코드 시도하고 그것의 포크. 아마도 URL에서 드릴 다운 대상을 변경하고 그런 식으로 처리하거나 문자열에 특수 문자를 추가하는 방법 일 수 있습니다.
  • "c:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\Ax32.exe" -startupcmd=myfunction_myParams으로 전화하여 클릭 가능한 링크로 만드십시오.

    이 항목 03310511에 AX를 시작합니다 : 특정 양식을 시작 AX를 사용자 정의 표준 드릴 다운 코드에 후크하는 (당신이 방법을 알고있는 경우)와 같은

+1

물론 당신은 자신의 문제 http : // en을 알아 냈습니다.wikipedia.org/wiki/Rubber_duck_debugging – AnthonyBlake

+0

정말 멋진 디버깅 방법입니다! –

6

당신은 당신의 자신의 질문에 대답했지만, 그것은 아주 간단합니다 회사 내 XXX

start dynamics://TEST/?DrillDown_0?table=InventTable&field=itemId&value=03310511&company=XXX 

합리적인 기본값으로 간주됩니다.

start dynamics://TEST/?DrillDown_0?table=CustTable&value=113545 

AX는 리시버에 AX 클라이언트가 있다고 가정하면 HTML 전자 메일에서 호출 할 수 있습니다!

<a href="dynamics://TEST/?DrillDown_0?table=CustTable&value=113545">113545</a> 

사용자 정의가 my pastebin 인 것을 발견했습니다.

+0

환상적입니다. 아주 좋은 코드와 시간의 무리를 저장! 귀하의 코드에 대한 한가지 우려 사항은 사용자 정의 SysStartupCmd *에 연결하면 귀하의 경우 ** 실제 ** 네비게이션 마크 인'TEST'가 제거되어 SalesTable과 같은 변수에 문제가 발생할 수 있거나 누군가가 코드를 사용하여 실행합니다. 매우 유용합니다! –

+0

아마도'TEST'가 매개 변수에 저장된 값과 일치하는지 테스트해야합니다 (일반 DrillDown 코드 경로에서와 동일). –

+0

예. 나는 당신의 코드를'parseDrillDownNavigationMark'에 새로운 정적 메소드'parseDrillDownCustomParam'로 옮긴 후,'parseDrillDownNavigationMark'의 코드를 base로 바꾸고, 그 다음에 구분자 줄을'int delimiter = strscan (parm, '?', strlen (parm), -strlen (parm));'('-' 기호에주의하십시오). 그런 다음 C \ SysStartUpCmdDrillDown \ infoRun에서 사용자 정의 코드 위에'if (! EventDrillDownPoller :: checkDrillDownNavigationMark (navigationMark)) '를 다시 이동했습니다. 쉬운 수정. –