В CRM 2011 заметки автоматически создаются и прикрепляются к основной записи при потере фокуса. Требуется удалить эту функцию автоматического сохранения. Только до тех пор, пока не будет открыта основная форма, пользователь сможет редактировать заметки. И вновь добавленные заметки должны быть сохранены только после сохранения основной формы. Например, если пользователь добавляет одну заметку и закрывает браузер или не сохраняет основную форму, то эта заметка не должна прикрепляться к основной записи, новая заметка должна быть отброшена.
Я думал о следующем решении:
создать новую настраиваемую сущность TempNotesHolder
Создайте отношение 1: N с сущностью, в которой нам нужна эта функциональность, например, с сущностью дела.
Сделать раздел заметок фактического дела только для чтения (это требование, пользователь не хочет редактировать / удалять функции заметок после создания заметки)
Напишите плагин для создания события Case и создайте одну запись для TempNotesHolder и свяжите ее с case (поле RegardingId в TempNotesHolder = IncidentId). Это гарантирует, что одно дело всегда будет иметь только одну связанную запись TempNotesHolder. В CRM 2011 нет способа гарантировать, что одна запись сущности будет иметь только одну запись в связанной сущности, то есть отношение 1: 1. По крайней мере, я не знаю дороги. Дайте мне знать, если кто-нибудь знает об этом.
В форме обращения добавьте один IFrame под раздел примечаний к делу.
в событии загрузки формы дела получить TempNotesHolderId, связанный с делом, с помощью fetchXml. (В сущности дела нет фактического поля, которое ссылается на связанный TempNotesHolder, поэтому необходимо использовать fetchXml. Как мы можем добавить связанный TempNotesHolderId в сущность дела и разместить это поле в форме дела сделайте его скрытым, чтобы избежать fetchXml)
Подготовьте URL-адрес для отображения только примечаний к записи TempNotesHolder. (/ _ Controls / notes / notesdata.aspx? EnableInlineEdit = false & EnableInsert = true & id = & ParentEntity =
Задайте этот URL-адрес для недавно добавленного IFrame, чтобы примечания о связанном TempNotesHolder отображались в IFrame. Там же будет ссылка «Добавить новую заметку».
Пользователь может добавить заметку в TempNotesHolder, которая не добавляется напрямую в запись дела.
Затем разработайте плагин для события предварительного сохранения Case и проверьте, добавлены ли какие-либо заметки в TempNoteHolder, если да, переместите эти заметки в запись дела и удалите заметки для TempNoteHolderId. Таким образом, заметки будут сохраняться в основной записи только при сохранении основной формы.
Чтобы обработать событие закрытия браузера после добавления нескольких заметок в TempNotesHolder, напишите плагин для события Case pre Retrieve, проверьте, присутствуют ли какие-либо заметки для связанного TempNotesHolderId, если они есть, удалите эти заметки. (Поскольку примечания присутствуют в TempNotesHolderId, это означает, что по какой-то причине эти примечания не перемещаются в фактическую запись дела и они нам больше не нужны, поэтому удалите их. Это обеспечит при загрузке случая, что раздел примечаний TempNotesHolder всегда будет пустым)
Вышеупомянутое решение было в порядке до шага 8. Когда я попытался добавить заметки в TempNotesHolder, он дал мне ошибку: «Запись с не существует в TempNotesHolder». Затем я проверил этот GUID и разочаровался, узнав, что CRM принимает IncidentId, когда я создаю заметку для TempNotesHolder. Затем я отследил фактический код для создания заметок, чтобы понять, почему он принимает IncidentId вместо TempNotesHolderId. Я нашел следующий код в "_static / _controls / notes / notes.htc", имя функции "UpdateNote"
xml = "0" + CrmEncodeDecode.CrmXmlEncode (значение) + "" + _ parentCrmFormSubmit.crmFormSubmitId.value + "" + this.parentEntityType + "" + CrmEncodeDecode.CrmXmlEncode (currentTitle.user) + "" + thisTitle.user + "" +
CRM принимает _parentCrmFormSubmit.crmFormSubmitId.value как objectid при создании заметки.
Теперь я застрял с этой проблемой. Приветствуются любые мысли по преодолению этой проблемы с ограничителем шоу. Также приветствуются любые другие альтернативные решения для основного требования.
Правин Пуджари (разработчик Microsoft Dynamics CRM 2011)