微软动态CRM专家罗勇 ,回复328或者20190429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

Dynamics 365 Customer Engagement可以通过使用FetchXML执行如下的聚合运算,如果你还只知道循环记录来计算的话你就OUT了,当然一次参与计算的记录默认不能超过5万行,若超过的话会报错。

  • sum (求和)
  • avg (求平均值)
  • min (求最小值)
  • max (求最大值)
  • count(*) (记录计数)
  • count(attribute name) (字段计数)

下面这个代码是一个例子,根据其关联的父记录,获取父记录的主属性的值,在后面加上序号来作为子记录主字段的值:

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System;
using System.ServiceModel; namespace Plugins
{
public class PreLuoYontDemoEntityCreate : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity currentEntity = (Entity)context.InputParameters["Target"];
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
try
{
int detailsCount = ;
var returnRequestEF = currentEntity.GetAttributeValue<EntityReference>("new_returnrequest");
if(returnRequestEF == null)
{
throw new InvalidPluginExecutionException("Field - Return Request is required!");
}
string LuoYontDemoEntity_count = string.Format(@"<fetch aggregate='true' mapping='logical' distinct='false'>
<entity name='new_luoyongdemoentity'>
<attribute name='new_luoyongdemoentityid' alias='luoyongdemoentityid_count' aggregate='count' />
<filter type='and'>
<condition attribute='new_returnrequest' operator='eq' value='{0}' />
<condition attribute='statecode' operator='eq' value='0' />
</filter>
</entity>
</fetch>", returnRequestEF.Id);
EntityCollection LuoYontDemoEntity_count_result = service.RetrieveMultiple(new FetchExpression(LuoYontDemoEntity_count));
if(if (LuoYontDemoEntity_count_result.Entities.Count >= 1 && LuoYontDemoEntity_count_result.Entities[0].Contains("LuoYontDemoEntity_count") && LuoYontDemoEntity_count_result.Entities[0]["LuoYontDemoEntity_count"] != null && ((AliasedValue)LuoYontDemoEntity_count_result.Entities[0]["LuoYontDemoEntity_count"]).Value != null))
{
detailsCount = (Int32)((AliasedValue)LuoYontDemoEntity_count_result.Entities[]["luoyongdemoentityid_count"]).Value;
}
currentEntity["new_name"] = service.Retrieve(returnRequestEF.LogicalName, returnRequestEF.Id, new ColumnSet("new_name")).GetAttributeValue<string>("new_name") + "-" + (detailsCount + ).ToString("");
}
catch (FaultException<OrganizationServiceFault> ex)
{
throw new InvalidPluginExecutionException("An error occurred in PreLuoYontDemoEntityCreate.", ex);
}
catch (Exception ex)
{
tracingService.Trace("PreLuoYontDemoEntityCreate unexpected exception: {0}", ex.Message);
throw;
}
}
}
}
}

值得提一句的是,如果是对货币字段进行计算,其结果是货币类型,获得货币的数值需要先强制转换为货币,再获取其Value。

更多的详情请参考官方文档:Use FetchXML aggregation

Dynamics 365 CE中使用FetchXML进行聚合运算的更多相关文章

  1. Dynamics 365 CE中AsyncOperationBase表记录太多,影响系统性能怎么办?

    微软动态CRM专家罗勇 ,回复311或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文主要是根据微软官 ...

  2. Dynamics 365 CE Update消息PostOperation阶段Image的尝试

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  3. Use SQL to Query Data from CDS and Dynamics 365 CE

    from : https://powerobjects.com/2020/05/20/use-sql-to-query-data-from-cds-and-dynamics-365-ce/ Have ...

  4. 使用Dynamics 365 CE Web API查询数据加点料及选项集字段常用查询

    微软动态CRM专家罗勇 ,回复336或者20190516可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 紧接上文:配置Postman通过OAuth 2 implicit ...

  5. Dynamics 365 marketing中添加自定义渠道磁贴

    Dynamics 365 marketing中默认的渠道只有Marketing Email和Marketing Activity,想要添加其他渠道必须自定义磁贴,自定义磁贴的步骤如下: 1.创建实体 ...

  6. Dynamics 365 CE将自定义工作流活动程序集注册到磁盘并引用其他类库

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  7. Dynamics 365 CE命令栏按钮点击后刷新表单页面方法

    微软动态CRM专家罗勇 ,回复326或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...

  8. 启用WCF压缩提升Dynamics 365 CE的网络性能

    摘要: 微软动态CRM专家罗勇 ,回复307或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文系根据微 ...

  9. 做了面向互联网部署的Dynamics 365 CE更改AD FS的登录页面

    摘要: 微软动态CRM专家罗勇 ,回复306或者20190307可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 默认情况下A ...

随机推荐

  1. Django中数据库表的关联与创建(语言:python)

    首先选择选用的数据库,(本人选用django(1.11.8版本)) 在主项目settings中操作如下: DATABASES = { 'default': { 'ENGINE': 'django.db ...

  2. jq slideToggle()坑

    jQuery slideToggle() 方法 jQuery slideToggle() 方法可以在 slideDown() 与 slideUp() 方法之间进行切换. 如果元素向下滑动,则 slid ...

  3. 19.QT-事件发送函数sendEvent()、postEvent()

    Qt发送事件分为两种 -阻塞型事件发送 需要重写接收对象的event()事件处理函数 当事件发送后,将会立即进入event()事件处理函数进行事件处理 通过sendEvent()静态函数实现阻塞发送: ...

  4. Exchanger兄弟线程间数据信息交换

    一.简述 Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据.当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用 ...

  5. java中判断文件及所在文件夹是否存在

    File file=new File(filePath);if (file.exists()) {}else { File fileParent =new File(file.getParent()) ...

  6. SpringCloud微框架系列整体模块梳理

    以下为Spring Cloud的核心功能: 分布式/版本化配置服务注册和发现路由服务和服务之间的调用负载均衡断路器分布式消息传递 通过这张图,我们来了解一下各组件配置使用运行流程: 1.请求统一通过A ...

  7. 关于局域网 手机连接apache服务器报403forbidden错误参考如下2017.6.6

    http://www.glbwl.com/wampServer-403-forbidden.html

  8. Latex 公式换行问题,(换行,等号对齐)

    1. 换行后等式对齐 \begin{equation} \begin{aligned} R(S_2)&= p_2\cdot S_2=\sum_{i\in \mathcal{I}^+(p_2)} ...

  9. 映射内网ftp服务器到公网报错问题解决

    这两天公司测试环境有个需求要让合作方通过ftp推送数据,一般内网环境是不会对公网开放ftp服务的,但是因为是临时需求就帮着搭了ftp服务,并且做了公网映射.ftp服务搭好之后在内网访问正常,但是在公网 ...

  10. BZOJ_4870_[Shoi2017]组合数问题_矩阵乘法

    BZOJ_4870_[Shoi2017]组合数问题_矩阵乘法 Description Input 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ ...