博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、平常我们可以打开CRM2011一条已创建的记录,通过JScript方法获取实体英文名的方法是:按F12,输入contentIFrame.Xrm.Page.data.entity.getEntityName();也可以通过自定义实体里面查询实体的英文名称。

二、根据etc参数找到对应实体的英文名

  etc参数值怎么找?通过打开一个记录会发现http://192.168.1.9:5555/crm2011/main.aspx?etc=1&extraqs=%3f_gridType%3d1%26etc%3d1%26id%3d%257b1F811A3B-9F39-E311-9C7F-00155D890107%257d%26pagemode%3diframe%26preloadcache%3d1386861269163%26rskey%3d50544574&pagetype=entityrecord 这个url有很多参数.

 一般etc参数就是main.aspx后面。这里的etc参数为1。

  通过以下SQL语句::

select distinct t2.LogicalName --获取逻辑名称(就是实体英文名称)
from SystemForm t1 --系统表单 inner join EntityLogicalView t2 --实体逻辑视图 on t1.ObjectTypeCode = t2.ObjectTypeCode --通过对象类型代码关联 where t2.ObjectTypeCode = 10083 --10083为etc参数值

三、根据etc参数值或英文名称找到其实体中文名称

  通过以下SQL语句:

select l.Label --实体中文名称
from Entity as e --实体
join LocalizedLabel as l --本地化标签
on e.EntityId = l.ObjectId 
where e.ObjectTypeCode = 10083 --etc参数值
--and l.ObjectColumnName = 'Description' --这里要的值不一定为‘Description’,这个可以试试就知道了 
可以单独 查下 select * from LocalizedLabel 

select l.Label 
from Entity as e 
join LocalizedLabel as l 
on e.EntityId = l.ObjectId
wheree.LogicalName='实体英文名称'
and l.ObjectColumnName = 'Description'

当然可以可以自定义实体查对应的实体中文名称,但是对于刚接触一个别人搭建的CRM系统,很多实体名不太清楚,所以在自定义实体找到对应的中文名称比较费力,要一个

一个找,这种方法给大家推荐下,大家如果还有更好的方法,也可以通过留言告诉我,谢谢。

四、通过JS获取在Homepage页面获取过当前实体code(就是前面的etc值):

 Xrm.Page.context.getQueryStringParameters() 获取实体代码

 Mscrm.EntityPropUtil.EntityTypeName2CodeMap 获取实体与代码的对照表

 Xrm.Page.context.getQueryStringParameters().etc
 Mscrm.EntityPropUtil.EntityTypeName2CodeMap[实体名] 
 contentIFrame.location通过substring截取