JanKjeldsen

AX 2012 start form from outside

Jan 23rd, 2014
482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.87 KB | None | 0 0
  1. Exportfile for AOT version 1.0 or later
  2. Formatversion: 1
  3.  
  4. ***Element: CLS
  5.  
  6. ; Microsoft Dynamics AX Class: EventDrillDownPoller unloaded
  7. ; --------------------------------------------------------------------------------
  8. CLSVERSION 1
  9.  
  10. CLASS #EventDrillDownPoller
  11. PROPERTIES
  12. Name #EventDrillDownPoller
  13. LegacyId #2677
  14. ENDPROPERTIES
  15.  
  16. METHODS
  17. SOURCE #main
  18. #static void main(Args args)
  19. #{
  20. # info(#externalDrillDownNamedPipeNamePrefix + EventDrillDownPoller::currentDrillDownNavigationMark());
  21. #}
  22. ENDSOURCE
  23. SOURCE #parseDrillDownNavigationMark
  24. #static str parseDrillDownNavigationMark(str parm)
  25. #{
  26. # str navigationMark;
  27. # int delimiter = strFind(parm, '?', 1, strlen(parm)); // 00968 - Start AX with command : 09 Jan 2014 by janb
  28. # int del2 = strFind(parm, '?', delimiter+1, strlen(parm)); // 00968 - Start AX with command : 09 Jan 2014 by janb
  29. #
  30. #;
  31. # if (delimiter)
  32. # {
  33. # navigationMark = substr(parm, delimiter + 1, del2 ? del2-delimiter-1 : strlen(parm)); // 00968 - Start AX with command : 09 Jan 2014 by janb
  34. # }
  35. #
  36. # return navigationMark;
  37. #}
  38. ENDSOURCE
  39. ENDMETHODS
  40. ENDCLASS
  41.  
  42. ***Element: CLS
  43.  
  44. ; Microsoft Dynamics AX Class: SysStartUpCmdDrillDown unloaded
  45. ; --------------------------------------------------------------------------------
  46. CLSVERSION 1
  47.  
  48. CLASS #SysStartUpCmdDrillDown
  49. PROPERTIES
  50. Name #SysStartUpCmdDrillDown
  51. Extends #SysStartupCmd
  52. RunOn #Client
  53. LegacyId #6027
  54. ENDPROPERTIES
  55.  
  56. METHODS
  57. SOURCE #canRun
  58. #// 00968 - Start AX with command : 09 Jan 2014 by janb
  59. #protected boolean canRun()
  60. #{
  61. # return true; //hasMenuItemAccess(menuitemactionstr(EventContextDrilldown), MenuItemType::Action);
  62. #}
  63. ENDSOURCE
  64. SOURCE #infoRun
  65. #void infoRun()
  66. #{
  67. # #WinApi
  68. # Args args = new Args();
  69. # MenuFunction inboxFunction;
  70. # EventInbox alertRecord;
  71. # // A record may have been soft-deleted - which is quite OK for drill-down.
  72. # str navigationMark = EventDrillDownPoller::parseDrillDownNavigationMark(parm);
  73. # str alertId = EventDrillDownPoller::parseAlertId(parm);
  74. #;
  75. # WinAPI::flashWindowEx(infolog.hWnd(), #FLASHW_ALL | #FLASHW_TIMERNOFG, 3, 0);
  76. #
  77. # // 00968 - Start AX with command : 09 Jan 2014 by janb -->
  78. # if (alertId == '0')
  79. # {
  80. # new SysStartupCmdRecordForm('',navigationMark).infoRun();
  81. # return;
  82. # }
  83. # // 00968 - Start AX with command : 09 Jan 2014 by janb <--
  84. # if (!EventDrillDownPoller::checkDrillDownNavigationMark(navigationMark))
  85. # return;
  86. #
  87. # alertRecord = EventInbox::find(str2int64(alertId));
  88. # if (!alertRecord)
  89. # {
  90. # checkFailed(strfmt("@SYS94927", alertId));
  91. # return;
  92. # }
  93. #
  94. # if (hasMenuItemAccess(menuitemactionstr(EventContextDrilldown), MenuItemType::Action)) // 00968 - Start AX with command : 09 Jan 2014 by janb
  95. # {
  96. # inboxFunction = new MenuFunction(menuitemactionstr(EventContextDrilldown), MenuItemType::Action);
  97. # args.record(alertRecord);
  98. # inboxFunction.run(args);
  99. # }
  100. #}
  101. #
  102. ENDSOURCE
  103. ENDMETHODS
  104. ENDCLASS
  105.  
  106. ***Element: CLS
  107.  
  108. ; Microsoft Dynamics AX Class: SysStartupCmdRecordForm unloaded
  109. ; --------------------------------------------------------------------------------
  110. CLSVERSION 1
  111.  
  112. CLASS #SysStartupCmdRecordForm
  113. PROPERTIES
  114. Name #SysStartupCmdRecordForm
  115. Extends #SysStartupCmd
  116. ENDPROPERTIES
  117.  
  118. METHODS
  119. SOURCE #canRun
  120. #protected boolean canRun()
  121. #{
  122. # return true;
  123. #}
  124. ENDSOURCE
  125. SOURCE #classDeclaration
  126. #// This is a framework class. Customizing this class may cause problems with future upgrades to the software.
  127. #class SysStartupCmdRecordForm extends SysStartupCmd
  128. #{
  129. #}
  130. ENDSOURCE
  131. SOURCE #infoRun
  132. #void infoRun()
  133. #{
  134. # Map q = SysStartupCmdRecordForm::parm2map(parm);
  135. # CompanyId compId = q.exists('company') ? any2str(q.lookup('company')) : curext();
  136. # TableId tableId = q.exists('table') ? tableName2Id(q.lookup('table')) : 0;
  137. # FieldId fieldId = q.exists('field') ? fieldName2Id(tableId, q.lookup('field')) : new DictTable(tableId).primaryKeyField();
  138. # Range value = q.exists('value') ? any2str(q.lookup('value')) : '';
  139. # Common record;
  140. # changeCompany (compId)
  141. # {
  142. # if (tableId)
  143. # {
  144. # record = SysDictTable::newTableId(tableId).makeRecord();
  145. # }
  146. # if (fieldId && value)
  147. # {
  148. # switch (new DictField(tableId,fieldId).type())
  149. # {
  150. # case Types::Integer:
  151. # select record where record.(fieldId) == str2int(value);
  152. # break;
  153. # case Types::Int64:
  154. # select record where record.(fieldId) == str2int64(value);
  155. # break;
  156. # case Types::Date:
  157. # select record where record.(fieldId) == str2date(value, 321);
  158. # break;
  159. # default:
  160. # select record where record.(fieldId) == value;
  161. # }
  162. # }
  163. # if (fieldId)
  164. # {
  165. # SysInfoAction_TableField::newBufferField(record, fieldId).run();
  166. # }
  167. # }
  168. #}
  169. ENDSOURCE
  170. SOURCE #parm2map
  171. #static Map parm2map(str parm)
  172. #{
  173. # Map map = new Map(Types::String, Types::String);
  174. # container con = str2con(parm,'&',false);
  175. # int n = conLen(con);
  176. # int i, c;
  177. # str subp;
  178. #
  179. # for (c = 1; c <= n; c++)
  180. # {
  181. # subp = conPeek(con,c);
  182. # i = strFind(subp,'=',1,9999);
  183. # if (i > 1)
  184. # map.insert(subStr(subp,1,i-1), subStr(subp,i+1,9999));
  185. # }
  186. # return map;
  187. #}
  188. ENDSOURCE
  189. ENDMETHODS
  190. ENDCLASS
  191.  
  192. ***Element: END
Advertisement
Add Comment
Please, Sign In to add comment