Dynamics crm 2011 删除注释';通过添加其他实体自动保存功能';s关于CRM 2011中表格的注释
Dynamics crm 2011 删除注释';通过添加其他实体自动保存功能';s关于CRM 2011中表格的注释,dynamics-crm-2011,crm,autosave,Dynamics Crm 2011,Crm,Autosave,在CRM 2011中,注释会自动创建并附加到失焦事件的主记录。要求删除此自动保存功能。只有在主窗体打开之前,用户才能编辑注释。新添加的注释只应在主窗体保存后保存。例如,如果用户添加一个注释并关闭浏览器或不保存主窗体,则该注释不应附加到主记录,新注释应被丢弃
我在考虑以下解决方案:
创建新的自定义实体TempNotesHolder
与我们想要此功能的实体创建1:N关系,例如案例实体
将实际案例的注释部分设置为只读(这是必需的,用户不希望在创建注释后编辑/删除注释的功能)
为案例的创建事件编写插件,
在CRM 2011中,注释会自动创建并附加到失焦事件的主记录。要求删除此自动保存功能。只有在主窗体打开之前,用户才能编辑注释。新添加的注释只应在主窗体保存后保存。例如,如果用户添加一个注释并关闭浏览器或不保存主窗体,则该注释不应附加到主记录,新注释应被丢弃
我在考虑以下解决方案:
创建新的自定义实体TempNotesHolder
与我们想要此功能的实体创建1:N关系,例如案例实体
将实际案例的注释部分设置为只读(这是必需的,用户不希望在创建注释后编辑/删除注释的功能)
为案例的创建事件编写插件,为TempNotesHolder创建一条记录,并将其与案例关联(根据TempNotesHolder=incidentId中的ID字段),这将确保一个案例始终只有一条关联的TempNotesHolder记录。在CRM 2011中,无法确保一个实体记录在关联实体中只有一个记录,即1:1关系。至少我不知道路。如果有人知道,请告诉我
在案例表单中,在案例注释部分下方添加一个IFrame
在案例表单加载事件上,使用fetchXml获取与案例关联的TempNotesHolderId。(案例实体中没有引用关联TempNotesHolder的实际字段,因此需要使用fetchXml。我们可以如何将关联的TempNotesHolderId添加到案例实体中,并将该字段放置在案例表单上,使其隐藏,以避免fetchXml)
准备url以仅显示TempNotesHolder记录的注释。(/_controls/notes/notesdata.aspx?EnableInlineEdit=false&EnableInsert=true&id=&ParentEntity)=
将此url设置为新添加的IFrame,以便在IFrame中显示相关TempNotesHolder的注释。它还将具有“添加新注释”链接
用户可以将注释添加到TempNotesHolder中,而不会直接添加到案例记录中
接下来,在案例的预保存事件上开发插件,检查是否有任何注释添加到TempNoteHolder,如果有,将这些注释移动到案例记录,并删除TempNoteHolderId的注释。这样,注释将仅在主表单保存时保存到主记录
要在向TempNotesHolder添加少量注释后处理浏览器关闭事件,请在Case pre Retrieve事件上编写插件,检查是否存在关联TempNotesHolderId的注释,如果存在,则删除这些注释。(由于TempNotesHolder ID上存在注释,这意味着由于某些原因,这些注释不会移动到实际案例记录中,我们不再需要它们,因此请删除它们。这将确保在案例加载时,TempNotesHolder注释部分始终为空)
在第8步之前,上述解决方案还可以。当我尝试在TempNotesHolder中添加注释时,它给了我错误,“TempNotesHolder中不存在记录”。然后我检查了该GUID,当我为TempNotesHolder创建便笺时,我很失望地知道CRM正在使用IncidentId。然后我跟踪了创建便笺的实际代码,以找出为什么它使用IncidentId而不是TempNotesHolderId。我在“\u static/\u controls/notes/notes.htc”函数名“UpdateNote”中发现了以下代码
xml=“0”+CrmEncodeDecode.CrmXmlEncode(值)+++\u parentCrmFormSubmit.crmFormSubmitId.value+++this.parentEntityType+++CrmEncodeDecode.CrmXmlEncode(当前标题)++this.userId++”
CRM在创建便笺时将_parentCrmFormSubmit.crmFormSubmitId.value作为objectid
现在我坚持这个问题。任何克服这个问题的想法都是值得赞赏的。另外,对于主要需求的任何其他替代解决方案也是受欢迎的
Pravin Pujari(Microsoft Dynamics CRM 2011开发者)我建议将解决方案简化如下:
在案例中添加一个名为new_notetext的字段
根据案例实体上的预创建和预更新消息创建插件
在插件中,将任何输入到new_notetext中的内容添加到使用该文本的Case实体中。然后清除new_notetext字段,这样记录中就不会保存任何内容
应该可以很好地工作,并且实现起来更简单