2016-05-30 10 views
5

Aşağıdaki sorun var:Sil veya Takvim Kural Kaldır CRM için C# bir eklenti veya basit konsol uygulaması üzerinden "Zaman Kapalı Kuralı" 2015

silen veya Takvim Kuralları "Zaman Kapalı Kural" kaldırmak gerekir Bir "Ekipman" a ait belirli bir takvim. Bu, ekipmanın Servis Takvimi'nde zaman planlaması için hazır olması için yapılmalıdır.

Nasılsa nasıl yapılacağını anlayamıyorum.

Silinmesi gereken Takvim kural nesnesini geri alabiliyorum, ancak sonraki adım beni çekiyor.

bana bildirin inceliği edin:

  1. C# (SDK)

  2. herhangi bir web kaynak veya benzer bir şey yapar kod bölümü boyunca Yapılabilir. Aşağıdaki kod bana hata

    başka nesne ile ilişkili ve silinemez silmeye çalıştı nesne verir

.

//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); 
    } 
} 

cevap

0

Neredeyse vardır. calendarrules koleksiyonu & topluluğunu calendar öğesinin güncelleştirmesi gerekiyor.

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

İlgili konular