【问题标题】:CRM2011 How to get object type code by entity name in Javascript?CRM2011 如何在Javascript中通过实体名称获取对象类型代码?
【发布时间】:2013-05-07 15:47:14
【问题描述】:

我在表单中有一个查找字段,在选择相关实体进行查找之前,我检查了一些条件,如果不通过,我会覆盖查找onclick事件以提醒用户;否则,我需要覆盖 onclick 事件以显示查找窗口以允许用户选择实体。

所以我需要这个查找的对象类型代码,但是在选择之前没有值然后我不能通过使用这个代码来获取对象类型代码:var objecttypecode = Xrm.Page.getAttribute("field id").getValue()[0].type;

如何通过实体名称获取对象类型代码?

【问题讨论】:

  • 我找到路了:function GetObjectTypeCode(entityName) { try { var lookupService = new RemoteCommand("LookupService", "RetrieveTypeCode"); lookupService.SetParameter("entityName", entityName); var result = lookupService.Execute(); if (result.Success && typeof result.ReturnValue == "number") { return result.ReturnValue; } else { return null; } } catch (ex) { throw ex; } }
  • 请回答您自己的问题并接受。

标签: dynamics-crm-2011


【解决方案1】:

我找到路了:

function GetObjectTypeCode(entityName) {
    try {
        var lookupService = new RemoteCommand("LookupService", "RetrieveTypeCode");
        lookupService.SetParameter("entityName", entityName);
        var result = lookupService.Execute();

        if (result.Success && typeof result.ReturnValue == "number") {
            return result.ReturnValue;
        }
        else {
            return null;
        }
    }
    catch (ex) {
        throw ex;
    }
}

【讨论】:

  • 虽然这现在可能有效,但据我所知,在自定义代码中使用 RemoteCommand 始终不受支持,并且不能保证始终有效。
  • 上面提到的 GetObjectTypeCode(entityName) 方法在 HTML Web 资源中不起作用,因为 HTML Web 资源总是包含在 IFrame 中并且调用 CRM 方法成为一个挑战.
  • @GCATNM:虽然您说的完全正确,但我认为 RemoteCommand 的简单性和轻量性证明了这种方法优于 RetrieveEntityMetaData 方法
  • @Arsenal:使用不受支持和未记录的 API 的理由值得商榷。如果简单性比让自己(和潜在客户)冒着被未来 CRM 更新破坏代码的风险更重要,那么这可能对个人来说是“合理的”。如果您关心质量和可靠性,我非常怀疑它是否可以称为良好实践。
【解决方案2】:

执行此操作的一种受支持方式是使用元数据服务,然后检索对象类型代码等(实体类型代码)。

【讨论】:

    猜你喜欢
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2012-07-03
    • 2015-06-06
    • 2019-08-29
    • 2019-05-14
    相关资源
    最近更新 更多