如何从类ID中识别Axapta类名?

时间:2008-10-07 04:47:56

标签: axapta microsoft-dynamics

有人可以帮助我理解Batch疯狂吗?

我正在尝试调试具有大约50个批处理作业的Axapta 3.0实现。大多数批处理类都没有实现 description() 方法,因此当您查看批处理列表表单时(基本>>查询>>批处理列表) )描述字段为空白。您可以看到批处理组开始时间等,但您无法确定实际调用的是哪个类。

Batch 表包含一个名为 ClassNum 的隐藏字段,用于标识类的 ID 属性。谁能告诉我如何从ID中找到相应的类?一旦我确定了罪犯,我就可以添加说明。

我尝试在AOT上使用标准查找功能,但它没有接收它们。

欢迎任何建议!

非常感谢, 麦克

3 个答案:

答案 0 :(得分:7)

杰伊的回答提供了两个全面的解决方案。

我刚刚发现全局类 ClassId2Name 做同样的事情,所以你可以简单地拥有:

display str Classname()
{
   return ClassId2Name(this.ClassNum);    
}

答案 1 :(得分:2)

至少有两种方法可以使用DictClass类:

display ClassName className()
{
    DictClass dictClass = new DictClass(this.ClassNum);
    ;
    if(dictClass!=null)
        return dictClass.name();
    return '';
}

或使用UtilIdElements表:

display ClassName className()
{
    UtilIdElements utilIdElements;
    ;
    select utilIdElements where utilIdElements.id==this.ClassNum && utilIdElements.recordType==UtilElementType::Class;
    if(utilIdElements)
        return utilIdElements.name;
    return '';
}

答案 2 :(得分:0)

如果 ClassNum 不可用,则替代获取 ClassName。

display str Classname()
{
   return classId2Name(ClassIdGet(this));  
}