using System;

    using System.Linq;

    using Microsoft.Xrm.Sdk;

    using Microsoft.Xrm.Sdk.Query;

    using Microsoft.Crm.Sdk.Messages;

    using Microsoft.Xrm.Sdk.Messages;

    using System.Collections.Generic;

/// <summary>

    /// 审核历史记录

    /// </summary>

    public class AuditHistory

    {

        /// <summary>

        /// 检索对特定属性所做的所有更改

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="Target">记录对象</param>

        /// <param name="attrName">字段名称</param>

        /// 特别说明:字段必须开启审核

        public void RetrieveAttributeHistory(IOrganizationService service, EntityReference target,string attrName)


        {

             RetrieveAttributeChangeHistoryRequest request = new RetrieveAttributeChangeHistoryRequest();

             request.AttributeLogicalName = attrName;

             request.Target = target;

             request.PagingInfo = new PagingInfo() { Count = 1000,PageNumber = 1 };

             RetrieveAttributeChangeHistoryResponse response = (RetrieveAttributeChangeHistoryResponse)service.Execute(request);

             //结果

             AuditDetailCollection auditDetailCollection = response.AuditDetailCollection;

        }

/// <summary>

        /// 索对特定实体所做的所有更改

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="target">目标记录</param>

        public void RetrieveEntityHistory(IOrganizationService service, EntityReference target)


        {

            RetrieveRecordChangeHistoryRequest request = new RetrieveRecordChangeHistoryRequest();

            request.Target = target;

            request.PagingInfo = new PagingInfo() { Count = 1000,PageNumber = 1 };

            RetrieveRecordChangeHistoryResponse response = (RetrieveRecordChangeHistoryResponse)service.Execute(request);

            //结果

            AuditDetailCollection auditDetailCollection = response.AuditDetailCollection;

        }

/// <summary>

        /// 删除包括在给定结束日期之前创建的审核数据的全部分区

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="endDate">结束日期</param>

        public void DeleteAudit(IOrganizationService service, DateTime endDate)

        {

            DeleteAuditDataRequest request = new DeleteAuditDataRequest();

            request.EndDate = endDate;

            DeleteAuditDataResponse response = (DeleteAuditDataResponse)service.Execute(request);

        }

/// <summary>

        /// 删除审核记录

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="auditDetailCollection">记录集合</param>

        public void DeleteAudit(IOrganizationService service, AuditDetailCollection auditDetailCollection)


        {

            if (auditDetailCollection.AuditDetails != null && auditDetailCollection.AuditDetails.Count > 0)


            {

                ExecuteMultiple multiple = new ExecuteMultiple();

                multiple.AddDelete(auditDetailCollection.AuditDetails.Select(a => a.AuditRecord));

                multiple.Execute(service);

            }

        }

/// <summary>

    /// 批量操作

    /// </summary>

    public class ExecuteMultiple

    {

        private int len = 1500;

        private List<ExecuteMultipleRequest> list = new List<ExecuteMultipleRequest>();

public ExecuteMultiple()

        {

            New();

        }

public void New()

        {

            ExecuteMultipleRequest multiple = new ExecuteMultipleRequest()

            {

                Settings = new ExecuteMultipleSettings()

                {

                    ContinueOnError = false,

                    ReturnResponses = true

                },

                Requests = new OrganizationRequestCollection()

            };

            list.Add(multiple);

        }

public void Add(OrganizationRequest request)

        {

            ExecuteMultipleRequest multiple = list.LastOrDefault();

            if (multiple.Requests.Count >= len)

            {

                New();

                multiple = list.LastOrDefault();

                multiple.Requests.Add(request);

            }

            else

            {

                multiple.Requests.Add(request);

            }

        }

public void AddCreate(Entity en)

        {

            CreateRequest request = new CreateRequest() { Target = en };

            Add(request);

        }

public void AddUpdate(Entity en)

        {

            UpdateRequest request = new UpdateRequest() { Target = en };

            Add(request);

        }

public void AddDelete(EntityReference er)

        {

            DeleteRequest request = new DeleteRequest() { Target = er };

            Add(request);

        }

public void AddDelete(Entity en)

        {

            AddDelete(new EntityReference() { LogicalName = en.LogicalName, Id = en.Id });

        }

public void AddDelete(EntityCollection ec)

        {

            if (ec != null && ec.Entities.Count > 0)

            {

                AddDelete(ec.Entities);

            }

        }

public void AddDelete(DataCollection<Entity> list)

        {

            if (list != null && list.Count > 0)

            {

                foreach (Entity en in list)

                {

                    AddDelete(en);

                }

            }

        }

public void AddDelete(IEnumerable<Entity> list)

        {

            if (list != null && list.Count() > 0)

            {

                foreach (Entity en in list)

                {

                    AddDelete(en);

                }

            }

        }

public void Execute(IOrganizationService service)

            {

                foreach (ExecuteMultipleRequest request in list)

                {

                    service.Execute(request);

                }

            }

    }

}

crm查询和删除审核历史记录的更多相关文章

  1. TODO:MongoDB的查询更新删除总结

    TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...

  2. [SQL]查询及删除重复记录的SQL语句

    一:查询及删除重复记录的SQL语句1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select ...

  3. MySQL查询及删除重复记录的方法

    查询及删除重复记录的方法(一)1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select p ...

  4. Oracle 查询并删除重复记录的SQL语句

    查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select  ...

  5. JBPM4入门——5.流程定义的发布、查询、删除

    本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...

  6. oracle_SQL 实验查询及删除重复记录 依据条件 (row)

    除数据库表中的重复记录 根据条件 ① 创建表准备数据 创建表 tab_test -- Create table create table TAB_TEST ( ID NUMBER, NAME NVAR ...

  7. Hadoop权威指南:HDFS-目录,查询文件系统,删除文件

    Hadoop权威指南:HDFS-目录,查询文件系统,删除文件 [TOC] 目录 FileSystem实例提供了创建目录的方法 public boolean mkdirs(Path f) throws ...

  8. SQL查询和删除重复字段的内容

    --例如: id NAME VALUE 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii --id是主键 --要求得到这样的结果 id ...

  9. 64、django之模型层(model)--建表、查询、删除基础

    要说一个项目最重要的部分是什么那铁定数据了,也就是数据库,这篇就开始带大家走进django关于模型层model的使用,model主要就是操纵数据库不使用sql语句的情况下完成数据库的增删改查.本篇仅带 ...

随机推荐

  1. java callable future futuretask

    Runnbale封装一个异步运行的任务,可以把它想象成一个没有任何参数和返回值的异步方法.Callable和Runnable相似,但是它有返回值.Callable接口是参数化的类型,只有一个方法cal ...

  2. [BZOJ1494][NOI2007]生成树计数 状压dp 并查集

    1494: [NOI2007]生成树计数 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 793  Solved: 451[Submit][Status][ ...

  3. LCA【SP913】Qtree - Query on a tree II

    Description 给定一棵n个点的树,边具有边权.要求作以下操作: DIST a b 询问点a至点b路径上的边权之和 KTH a b k 询问点a至点b有向路径上的第k个点的编号 有多组测试数据 ...

  4. 洛谷——P1604 B进制星球

    P1604 B进制星球 题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球.因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2 ...

  5. 火狐浏览器信息提取工具Dumpzilla

    火狐浏览器信息提取工具Dumpzilla   浏览器会自动保存用户访问网站的各项信息,如Cookie.网址.下载记录.书签等.通过分析这些信息,可以获取使用者的诸多个人信息和行为习惯.Kali Lin ...

  6. bzoj 2660: [Beijing wc2012]最多的方案

                       Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 617  Solved: 361[Submit][Status][ ...

  7. Codechef REBXOR

    Read problems statements in Mandarin and Russian. Translations in Vietnamese to be uploaded soon. Ni ...

  8. 【Treap】BZOJ1588-[HNOI2002]营业额统计

    [题目大意][借用别人的概括]给出一个n个数的数列a,对于第i个元素ai定义fi=min(abs(ai-aj)),(1<=j<i),其中f1=a1.输出sum(fi) (1<=i&l ...

  9. python3 中 and 和 or 运算规律

    一.包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 True 呢? 在Python中,None.任何数值类型中的0.空字符串“”.空元组().空列 ...

  10. UITextField增加textDidChange回调功能

    在使用UITextField来判断登陆按钮状态时只有 shouldChangeCharactersInRange函数,是在文件还没有改变前就调用了,而不是在改变后调用,要想实现改变后调用的功能,导致登 ...