Удалите функцию автосохранения заметок, добавив заметки других сущностей в форму в CRM 2011.

В CRM 2011 заметки автоматически создаются и прикрепляются к основной записи при потере фокуса. Требуется удалить эту функцию автоматического сохранения. Только до тех пор, пока не будет открыта основная форма, пользователь сможет редактировать заметки. И вновь добавленные заметки должны быть сохранены только после сохранения основной формы. Например, если пользователь добавляет одну заметку и закрывает браузер или не сохраняет основную форму, то эта заметка не должна прикрепляться к основной записи, новая заметка должна быть отброшена.

Я думал о следующем решении:

  1. создать новую настраиваемую сущность TempNotesHolder

  2. Создайте отношение 1: N с сущностью, в которой нам нужна эта функциональность, например, с сущностью дела.

  3. Сделать раздел заметок фактического дела только для чтения (это требование, пользователь не хочет редактировать / удалять функции заметок после создания заметки)

  4. Напишите плагин для создания события Case и создайте одну запись для TempNotesHolder и свяжите ее с case (поле RegardingId в TempNotesHolder = IncidentId). Это гарантирует, что одно дело всегда будет иметь только одну связанную запись TempNotesHolder. В CRM 2011 нет способа гарантировать, что одна запись сущности будет иметь только одну запись в связанной сущности, то есть отношение 1: 1. По крайней мере, я не знаю дороги. Дайте мне знать, если кто-нибудь знает об этом.

  5. В форме обращения добавьте один IFrame под раздел примечаний к делу.

  6. в событии загрузки формы дела получить TempNotesHolderId, связанный с делом, с помощью fetchXml. (В сущности дела нет фактического поля, которое ссылается на связанный TempNotesHolder, поэтому необходимо использовать fetchXml. Как мы можем добавить связанный TempNotesHolderId в сущность дела и разместить это поле в форме дела сделайте его скрытым, чтобы избежать fetchXml)

  7. Подготовьте URL-адрес для отображения только примечаний к записи TempNotesHolder. (/ _ Controls / notes / notesdata.aspx? EnableInlineEdit = false & EnableInsert = true & id = & ParentEntity =

  8. Задайте этот URL-адрес для недавно добавленного IFrame, чтобы примечания о связанном TempNotesHolder отображались в IFrame. Там же будет ссылка «Добавить новую заметку».

  9. Пользователь может добавить заметку в TempNotesHolder, которая не добавляется напрямую в запись дела.

  10. Затем разработайте плагин для события предварительного сохранения Case и проверьте, добавлены ли какие-либо заметки в TempNoteHolder, если да, переместите эти заметки в запись дела и удалите заметки для TempNoteHolderId. Таким образом, заметки будут сохраняться в основной записи только при сохранении основной формы.

  11. Чтобы обработать событие закрытия браузера после добавления нескольких заметок в 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)


person Pravin Pujari    schedule 03.01.2013    source источник


Ответы (1)


Я бы предложил упростить решение следующим образом:

  1. Добавьте в Case поле с именем new_notetext.

  2. Создайте подключаемый модуль для сообщений Pre-Create и Pre-Update в сущности Case.

  3. В плагине возьмите все, что введено в new_notetext, и добавьте примечание к сущности Case, используя этот текст. Затем очистите поле new_notetext, чтобы с записью ничего не сохранялось.

Должен работать нормально, и его намного проще реализовать.

person Nicknow    schedule 03.01.2013