【问题标题】:Delete or Remove Calendar Rule "Time Off Rule" through a plugin or simple console application in C# for CRM 2015通过 C# for CRM 2015 中的插件或简单控制台应用程序删除或删除日历规则“Time Off Rule”
【发布时间】:2016-09-27 21:59:32
【问题描述】:

我有以下问题:

我需要从属于“设备”的特定日历的日历规则中删除或移除“休假规则”。需要这样做,以便设备可用于服务日历上的计划。

不知怎的,我不明白该怎么做。

我能够检索需要删除的日历规则对象,但下一步我无法完成。

请告诉我:

  1. 能否通过C#(SDK)实现

  2. 执行类似操作的任何网络资源或代码部分。

下面的代码给了我错误

您尝试删除的对象与另一个对象相关联,并且 无法删除。

//equip is of Equipment type and is already initialized 
CrmEarlyBound.Calendar cal = (CrmEarlyBound.Calendar)svc.Retrieve("calendar", equip.CalendarId.Id, new ColumnSet(true));
Console.WriteLine("Got the user calendar");
List<CalendarRule> calendarRules = cal.CalendarRules.ToList();
Console.WriteLine("Got the calendar rules " +  cal.CalendarRules.ToList().Count);
foreach (CalendarRule cr in cal.CalendarRules)
{
   if (cr.Description == "Time Off Rule" && cr.StartTime.Value>=DateTime.Now)
   {
       Console.WriteLine(cr.StartTime);
       Calendar calI = (Calendar)svc.Retrieve(cr.InnerCalendarId.LogicalName, cr.InnerCalendarId.Id, new ColumnSet(true));
       //svc.Delete(cr.InnerCalendarId.LogicalName, cr.InnerCalendarId.Id);
    }
 }

【问题讨论】:

    标签: c# dynamics-crm dynamics-crm-2015


    【解决方案1】:

    你快到了。必须删除 calendarrules 集合并更新 calendar 实体。

    public static void ClearCalenderRules(IOrganizationService service, Guid bookableResourceId, DateTime startDate, DateTime endDate)
    {
        using (var context = new CrmServiceContext(service))
        {
            var bookableResource = context.BookableResourceSet.Where(b => b.Id == bookableResourceId).FirstOrDefault();
    
            if (bookableResource?.CalendarId != null)
            {
    
                Entity entity = service.Retrieve("calendar", bookableResource.CalendarId.Id, new ColumnSet(true));
                EntityCollection entityCollection = (EntityCollection)entity.Attributes["calendarrules"];
    
                int num = 0;
                List<int> list = new List<int>();
                foreach (Entity current in entityCollection.Entities)
                {
                    DateTime dateTime2 = Convert.ToDateTime(current["starttime"]);
                    if (dateTime2 >= startDate && dateTime2 <= endDate)
                    {
                        list.Add(num);
                    }
    
                    num++;
                }
    
                list.Sort();
                list.Reverse();
    
                for (int i = 0; i < list.Count; i++)
                {
                    entityCollection.Entities.Remove(entityCollection.Entities[list[i]]);
                }
    
                entity.Attributes["calendarrules"] = entityCollection;
                service.Update(entity);
            }
        }
    } 
    

    source

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 2016-03-27
      • 2012-08-10
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多