2011-08-24 29 views
4

我需要在創建新約會時更改約會記錄的所有者。我使用的創建消息的插件,我發現這個代碼到一個新的所有者分配給預約:將新所有者分配給預約。 「應該只有一個所有者參與某個活動」

entity = context.PostEntityImages["PostImage"]; 

...... 

AssignRequest request = new AssignRequest(); 

//request.RequestName 
request.Assignee = new EntityReference("systemuser", owners.ToList()[0].Id); 
request.Target = new EntityReference(Appointment.EntityLogicalName, entity.Id); 
service.Execute(request); 

但是當我測試這一點,我得到以下錯誤:無效的參數:應該有隻有一個業主方爲一項活動

我想我必須先刪除當前所有者,然後分配新的所有者。但是我怎麼能做到這一點?

感謝您的幫助!

回答

4

我正在做一些類似的任務(將它們重新分配到一個插件中)。作爲「更新」插件它沒有任何問題,但作爲「創建」它會失敗,並顯示消息「應該只有一個活動的所有者方」

要修復此更改「創建」插件簡單地設置ownerid(而不是執行AssignRequest)。

targetEntity.Attributes["ownerid"] = new EntityReference(SystemUser.EntityLogicalName, assignTo.Id); 

此代碼進入預操作階段。

+0

我想我將來仍然需要這個。感謝回覆,即使前一個問題被問到。額外的信息總是歡迎:) – ThdK

+0

這是否適用於自定義工作流程活動?我有類似的問題,但它是在WF http://stackoverflow.com/questions/8529535/setting-ownerid-of-a-custom-activity –

1

看起來有可能某些數據可能損壞。在此線程的人推人使用SQL直接刪除一些業主斷活動 - http://social.microsoft.com/Forums/en/crmdeployment/thread/d82cedee-e24e-4abc-9ec6-41306b89ed3b

這僅僅是如果你使用動態的預置模式的可能性CRM 2011

+0

感謝您的回覆,但我們正在運行IFD。有沒有辦法做到這一點,而不需要直接修改數據庫? – ThdK

+0

我會建議您打開一個支持票與微軟。如果您設置爲IFD,則取決於誰擁有服務器。如果您有合作伙伴在共享環境中託管IFD解決方案,則他們可能不希望直接針對數據庫運行不受支持的SQL。如果您正在託管您的IFD解決方案,這將取決於您的IT部門是否願意這樣做。我肯定會讓微軟參與其中。 – cchamberlain

+0

週一我會通知我們的團隊。謝謝:) – ThdK

0
Guid id= new Guid("{33011A68-D311-E211-A429-005056820002}");  
switch (context.MessageName) 
       { 
        case "Update": 
         { 
          try 
          { 
           if (ent.Contains("fieldname") == true) 
           { 

            AssignRequest assign = new AssignRequest 
            { 
             Assignee = new EntityReference("systemuser", id), 
             Target = new EntityReference(ent.LogicalName, ent.Id) 
            }; 
            _service.Execute(assign); 
           } 
          } 
          catch (Exception ex) 
          { 
           throw new InvalidPluginExecutionException("Error" + Environment.NewLine + "Details: " + ex.Message); 
          } 
         } 
         break; 
       } 
+0

這是否真的回答了這個問題?請檢查此:http://stackoverflow.com/help –

相關問題