Ax 2012组件存在于所有图层和模型中

Ax 2012 component existence in all layers and models

任何人都可以帮助我如何找到所有层中存在的组件以及该层中安装的模型。即找到特定组件(ax 2012)存在的所有层和模型。 例如,如何找到 CustTable 所在的所有层和模型。 是否有 class 或 table 存储此信息。 请帮我。提前致谢。

您可以尝试使用下一个查询在 _model 数据库中搜索(此搜索包含所有 code 引用 - table、class, 表格, 数据集, ...):

SELECT TOP 1000 [SourceHandle]
   , met.ElementTypeName
   , ro.Name object
   , me.Name method
   , l.Name Layer
   , mm.Name Model
   , cast([SourceText] as nvarchar(max)) sourceTxt
FROM [Sources] s
   join ModelElement me on me.ElementHandle=s.SourceHandle
      join ElementTypes met on met.ElementType=me.ElementType
   join ModelElement ro on ro.ElementHandle=me.RootHandle
   left join ModelElementData med on med.ElementHandle=s.SourceHandle and med.LayerId=s.LayerId and med.ElementHandle=me.ElementHandle
   left join Layer l on l.Id=s.LayerId
   left join ModelManifest mm on mm.ModelId=med.ModelId
WHERE cast([SourceText] as nvarchar(max)) like '%CustTable%'

如果您需要所有记录,请删除 TOP 1000

评论有限:(

您需要搜索源代码吗?您在寻找合并候选人吗?告诉我您的业务需求。

这是查询返回的元素,在所选模型中包含 CustTable

SELECT
   me.Name ElementName
   , Layer.Name Layer
   , mm.Name ModelName
   , ElementTypes.ElementTypeName
FROM ModelElement me
   JOIN ModelElementData med
      ON med.ElementHandle = me.ElementHandle
         AND me.ParentHandle = 0 -- only root elements
   JOIN ModelManifest mm
      ON mm.ModelId=med.ModelId
   JOIN Layer
      ON Layer.Id = med.LayerId
   JOIN ElementTypes
      ON me.ElementType = ElementTypes.ElementType
WHERE EXISTS (
   SELECT null
   FROM ModelElement child
      JOIN Sources s
         ON s.SourceHandle = child.ElementHandle
            AND s.LayerId = med.LayerId
            AND child.RootHandle = med.ElementHandle
   WHERE cast([SourceText] as nvarchar(max)) like '%CustTable%'
)
AND mm.Name IN ('Foundation','I4C')
SELECT DISTINCT
    ro.Name object,
    ro.ElementType type,
    l.Name  Layer,
    mm.Name Model
FROM Sources s
    join ModelElement me on 
        me.ElementHandle = s.SourceHandle
    join ElementTypes met 
        on met.ElementType = me.ElementType
    join ModelElement ro 
        on ro.ElementHandle = me.RootHandle
    left join ModelElementData med 
        on  med.ElementHandle = s.SourceHandle 
        and med.LayerId       = s.LayerId 
        and med.ElementHandle = me.ElementHandle
    left join Layer l 
        on l.Id = s.LayerId
    left join ModelManifest mm 
        on mm.ModelId = med.ModelId
            where ro.Name = 'InventDim' order by mm.Name, ro.ElementType

除了作者建议的查询外,根据我的要求做了一个小改动,给出了正确的结果。