Fun in dynamics ax

Description:-


Here is a job I wrote that demonstrates a bunch of different ways of doing what you're wanting:
Code:-

static void Job79(Args _args)
{
  TreeNode treeNode = TreeNode::findNode(@'\Classes\Activities');
  SysDictClass sysDictClass = new SysDictClass(treeNode.applObjectId());
  FormRun formRun = new FormRun(new Args(formStr(AifAction)));
  Form            form = new Form(formStr(AifAction));
  ClassBuild classBuild;
  SysDictTable sysDictTable = new SysDictTable(tableNum(AccountSumMap)); // Maps are treated like tables
  SysDictMethod sysDictMethod;
  int             i;
  MemberFunction  method;
  strmethodSource = 'public static strgetTime()\n{\n\treturn "3/3/2015";\n}'; 
 
  // Find if class has a method
  if (sysDictClass.hasObjectMethod('delete'))
  {
    info("Found object method delete");
  }
 
  if(sysDictClass.hasStaticMethod('main'))
  {
    info("Found static method main");
  }
 
  // Find if form has a method
  if (formHasMethod(formRun, 'init'))
  {
    info("Found form method 'init'");
  }
  
  if (form.AOTfindChild('methods').AOTfindChild('refreshGrid') != null)
  {
    info("Found 'refreshGrid' method on AifAction");
  } 
 
  if (sysDictClass.hasStaticMethod('getTime') == false)
  {
    classBuild = new ClassBuild(sysDictClass.name()); 
    treeNode = classBuild.addMethod('getTime', methodSource); 

    if (classBuild.classNode().AOTcompile())
    {
      classBuild.classNode().AOTsave();
      info("Added method getTime, compiled, and saved");
    }
    else
    {
      info(strFmt("Unable to compile method 'getTime' with source code '%1', restoring class...", treeNode.AOTgetSource()));
      //Delete the non-compiling method
      if (treeNode)
          treeNode.AOTdelete(); 
          classBuild.classNode().AOTsave();
    } 
  }
  else
  {
    info("Method 'getTime' already exists");
  }
 
  if (sysDictTable.isMap())
  {
    if (sysDictTable.doesMethodExist('getTime') == false)
    {
      treeNode = sysDictTable.treeNode().AOTfindChild('methods').AOTadd('getTime');
      method = sysDictTable.treeNode().AOTfindChild('methods').AOTfindChild('getTime');
      method.AOTsave();
      method.AOTsetSource(methodSource, true);
      method.AOTsave();
      if (sysDictTable.treeNode().AOTcompile())
      {
        sysDictTable.treeNode().AOTsave();
        info(strFmt("Added 'getTime' to AccountSumMap"));
      }
      else
      {
        info(strFmt("Unable to compile method 'getTime' with source code '%1', restoring class...", treeNode.AOTgetSource()));
        // Delete the non-compiling method
        if (treeNode)
            treeNode.AOTdelete();
 
            sysDictTable.treeNode().AOTsave();
      }
    }
  }
}

Related Posts

Previous
Next Post »

Thanks for comments.....