2012-10-16 64 views
0

我想打電話給存儲在Dynamics 中的預約,但在Outlook中顯示如何獲取存儲在Outlook 2010中的CRM Dynamics 2011預約的GUID?

假設用戶使用所述約會打開一個窗口(讓我們說「call mom」)。我在功能區中添加了一個按鈕,我希望它在點擊時引起性別切換。如果用戶點擊該按鈕時,我想

  1. 更新的任命是「叫爸爸」,而是和
  2. 更新某些字段未在Outlook中表示。

第一部分,我認爲可以通過更改打開窗口中的文本並允許用戶以常用方式存儲新的,父親友好的值 - 通過在關閉框架時進行保存來解決。

但是,第二部分需要在「底層」完成,因爲可能沒有包含CRM Dynamics中相應字段值的Outlook客戶端窗口的一部分。據我所知,我需要直接創建一個連接到CRM服務器,並寫入該字段,但我不知道如何獲取該特定約會的GUID以便在CRM服務器上引用它。

編輯:

澄清是必要的。描述的操作將在執行時處於Outlook中額外的開放框架內。如果用戶在日曆中雙擊某個約會,會彈出一個窗口,顯示關於它的所有信息。在窗口中,我需要參考當前打開/編輯約會並獲得 GUID爲CRM參考。我很抱歉,如果它不像我的腦袋裏那樣清楚「在紙上」。 :)

+0

當用戶雙擊雙擊Outlook日曆中的約會時,該約會是否已在CRM中跟蹤? –

+0

@PeterMajeed什麼是「雙擊雙擊」?錯字?但是,您提出了一個有效的觀點。如果OP試圖做一些與未跟蹤CRM的約會(或者CRM未跟蹤的CRM)相關的CRM,那麼他將在'xxx.UserData [「crmid」 ] .Value'。使用if(xxx.UserData [「crmid」]!= null)DoTheCrmMagic();'是一個好習慣。 – 2012-10-17 17:45:12

回答

0

爲補充由@PeterMajeed一個答覆可以建立的代碼,用於訪問所有窗口如下。

foreach (Outlook.Inspector inspector in this.Application.Inspectors) 
{ 
    Outlook.AppointmentItem item 
    = inspector.CurrentItem as Outlook.AppointmentItem; 
    Outlook.UserProperty property = item.UserProperties["crmid"]; 
    String crmId = String.Empty; 
    if (property != null) 
    crmId = (String) item.UserProperties["crmid"].Value; 
} 

如果你有興趣在已觸發事件(基於這樣的假設,它是處於活動狀態)實際的一個,你可以使用下面的代碼。

Outlook.Inspector inspector 
    = this.Application.ActiveInspector().CurrentItem 
    as Outlook.Inspector; 
2

獨特的CRM信息存儲在Outlook項目中作爲自定義UserProperties。如果您通過UserProperties進行任何跟蹤約會,您會發現一個名爲crmid的屬性。假設你可以找到感興趣的約會,你可以找到GUID如下:

var guid = Guid.Parse((string)appt.UserProperties["crmid"].Value); 
+0

我會在早上第一件事。然而,一小撮煩惱已經刺激起來。爲什麼「假設你能找到」?畢竟,通話將在可編輯窗口中打開約會時進行。我無法想象有任何理由不能找到它。 **可能會出錯?請稍等,彼得。 :) –

+0

嘿,對不起。我沒有包含演示如何訪問Outlook約會的編程參考的代碼(假設您使用的是VSTO)。如果您需要幫助,那麼您可能應該編輯該問題或創建一個新問題,但是一些測試應該清除這些問題。 –

+0

按要求編輯。在60分鐘的工作中,我有很高的期望,嘿嘿。謝謝! –