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字段,这样记录中就不会保存任何内容

  • 应该可以很好地工作,并且实现起来更简单