0

我想拨打存储在 Dynamics 中显示在 Outlook 中的约会。

假设用户打开一个带有所述约会的窗口(比如说“打电话给妈妈”)。我在功能区中添加了一个按钮,我希望它在单击时引起性别切换。如果用户点击按钮,我想

  1. 将约会更新为“打电话给爸爸”,然后
  2. 更新 Outlook 中未表示的某些字段。

第一部分,我认为可以通过更改打开窗口中的文本并允许用户以通常的方式存储新的、对爸爸友好的值来解决 - 通过在关闭框架时保存。

但是,第二部分需要“在后台”完成,因为 Outlook 客户端窗口的任何部分可能都不包含 CRM Dynamics 中相应字段的值。据我所知,我需要直接创建与 CRM 服务器的连接并写入那里的字段,我不确定如何获取该特定约会的 GUID 以便在 CRM 服务器上引用它。

编辑:

需要澄清一下。所描述的操作将在 Outlook中针对相关约会的额外开放框架内执行。如果用户双击日历中的约会,则会弹出一个窗口,其中包含有关它的所有信息。在窗口中,我需要参考当前打开/编辑的约会并获取GUID 以供 CRM 参考。如果它不像我头脑中那样清楚“在纸上”,我深表歉意。:)

4

2 回答 2

2

唯一的 CRM 信息作为自定义存储在 Outlook 项目中UserProperties。如果您遍历UserProperties任何跟踪的约会,您会发现一个名为 的属性crmid。假设您可以找到感兴趣的约会,您可以找到GUID以下内容:

var guid = Guid.Parse((string)appt.UserProperties["crmid"].Value);
于 2012-10-16T17:08:36.623 回答
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;
于 2012-10-17T08:56:51.043 回答