想象一下,您想要向案例添加电子邮件。将打开电子邮件表单,并使用案例的客户帐户自动填充“收件人”字段。
我想更改行为,以便使用相关案例的自定义属性自动填充“收件人”的内容。
我的第一种方法是为表单的OnLoad事件注册一个JavaScript,让脚本更改字段。这可行,但我想知道是否有更聪明的方法来实现这一目标。已经存在一些填充“To”字段的逻辑。 是否可以配置此现有功能?
任何提示都表示赞赏。
答案 0 :(得分:2)
我不相信这个特定场景可以比你已经解决的方式更有效地完成。我建议查看数据映射(在实体的自定义中弹出关系时的左导航项,与此Dynamics CRM 4.0文章http://www.dynamicscare.com/blog/index.php/modifying-mapping-behavior-between-parent-child-records-in-microsoft-dynamics-crm/中讨论的概念相同),但它似乎不是适用于这种关系。
答案 1 :(得分:1)
这可能会对您有所帮助:
DataService.EntityReference toEntityRef = new DataService.EntityReference();
toEntityRef.LogicalName = "contact";
toEntityRef.Id = Guid.Parse(to_id);
Entity toParty = new Entity();
toParty["partyid"] = toEntityRef;
toParty.LogicalName = "activityparty";
Entity emailEntity = new Entity();
emailEntity.LogicalName = "email";
EntityCollection toCollection = new EntityCollection();
toCollection.Entities = new ObservableCollection<Entity>();
toCollection.Entities.Add(toParty);
emailEntity["to"] = toCollection;
IOrganizationService soapService = ServerUtility.GetSoapService();
IAsyncResult res = soapService.BeginCreate(emailEntity, OnCreateComplete, soapService);
回拨方法:
private void OnCreateComplete(IAsyncResult result)
{
Guid emailId = (IOrganizationService)result.AsyncState).EndCreate(result);
}
答案 2 :(得分:0)
另一种方法是替换功能区中的添加电子邮件按钮,以便调用自定义JavaScript函数。此功能可以使用window.open
打开邮件窗口,并按setting the extraqs
parameter初始化 To:字段,为即将创建的电子邮件配置ActivityParty。这可以通过设置:
partyid
到允许实体的实例的ID partyname
到实体实例的名称partytype
至2(对于recipent字段,请参阅here for details)但是extraqs
参数是有限的:您只能设置一个接收器而不能设置其他字段(来自,cc,bcc,...)。此外,更换按钮会绕过内置功能,这可能会在将来的版本中发生变化,
所以我更喜欢处理表单的OnLoad事件。