CRM 2016“创建”选项集指示所有实体

时间:2018-07-24 05:34:00

标签: dynamics-crm dynamics-crm-2016 dynamics-365

我已经创建了一个实体,我想要一个选项以创建形式显示所有实体,我该怎么做? 在流程表单中设置选项之类的东西:

enter image description here

3 个答案:

答案 0 :(得分:3)

这里有一些JavaScript代码可检索所有实体

以下是有关代码的一些关键点

  • 使用下划线(_)在top框架上可用,但在其他情况下可能不可用
  • 仅选择($selectEntityTypeCode个属性
  • 应用一系列过滤器以尝试减少结果数量。筛选器包括以下内容
    • 必须成为业务流程流实体
    • 不能必须是一个Intersect实体(即N:N关系中的联接表)
    • 必须成为活动
    • 必须成为ActivityParty
    • 必须在“高级查找”中可用
    • 必须能够触发工作流程

代码:

DisplayName

此代码返回一个var underscore = top["_"]; var entityMetadata = (function(_) { return { retrieve: queryMetadata }; function buildEntityList(data) { var entities = _.chain(data.entities) .map(function(entity) { return { "Name": entity.DisplayName.UserLocalizedLabel.Label, "ETC": entity.ObjectTypeCode }; }) .sortBy("Name") .value(); return entities; } function queryMetadata() { var select = "$select=DisplayName,ObjectTypeCode"; var filter = "$filter=" filter += "IsBPFEntity eq false"; filter += " and IsIntersect eq false"; filter += " and IsActivity eq false"; filter += " and IsActivityParty eq false"; filter += " and CanTriggerWorkflow eq true"; filter += " and IsValidForAdvancedFind eq true"; var p = Xrm.WebApi.retrieveMultipleRecords("EntityDefinitions", "?" + select + "&" + filter).then(buildEntityList); return p; } })(underscore); ,其中所有实体均符合上述条件。调用方法如下,并将结果写入浏览器控制台:

promise

这会将所有显示名称和实体类型代码输出到控制台,如下所示:

enter image description here

StackOverflow上的其他答案显示了如何使用entityMetadata.retrieve().then(console.log); 构建select控件,因此在此不再赘述。

答案 1 :(得分:0)

您可以创建包含所有实体的静态选项集,也可以使用动态填充onLoad的选项集创建自定义Web资源,然后在用户选择选项后,将实体名称存储在表单上的字段中。第二种选择通常是我要做的。

答案 2 :(得分:0)

您可以使用WebApi查询元数据。在这里,您可以检索实体及其包含的每个字段的列表。 https://msdn.microsoft.com/en-us/library/mt607522.aspx