Подсетка, содержащая действия, возвращаемые запросом FetchXML, не всегда обновляется

Я создал вложенную сетку в форме для объекта контакта в Dynamics CRM 2015, которая возвращает все действия электронной почты, задачи, встречи и телефонного звонка, где либо действие относится к контакту, для которого была загружена форма, либо где этот контакт является участник действия (т. е. в полях «Отправитель» или «Кому/Копия/Скрытая копия» для сообщения электронной почты или в списке участников для встречи).

Я добавил новую вложенную сетку (пока называемую «Новые действия») в свою контактную форму, которая использует специальное представление действий, которое я создал (и разработан с критериями, которые «никогда» не вернут никаких результатов - DateCreated >= 01/01/ 2050), а затем создал функцию javascript, которую я включил в качестве веб-ресурса в свое решение и вызываю в событии OnLoad формы:

function DisplaySubGrid() {

  var subgrid = document.getElementById("NewActivities");
  if (subgrid == null) {
    setTimeout('DisplaySubGrid()', 1000);
    return;
  }

  var fetchXml =   
  "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>"
+    "<entity name='activitypointer'>"
+      "<attribute name='activityid' />"
+      "<attribute name='activitytypecode' />"
+      "<attribute name='subject' />"
+      "<attribute name='statecode' />"
+      "<attribute name='regardingobjectid' />"
+      "<attribute name='ownerid' />"
+      "<attribute name='scheduledend' />"
+      "<attribute name='createdby' />"
+      "<attribute name='createdon' />"
+      "<order attribute='scheduledend' descending='false' />"
+      "<order attribute='subject' descending='false' />"
+      "<filter>"
+        "<condition attribute='activitytypecode' operator='in'>"
+          "<value>4201</value>"
+          "<value>4202</value>"
+          "<value>4210</value>"
+          "<value>4212</value>"
+        "</condition>"
+      "</filter>"
+      "<link-entity name='activityparty' from='activityid' to='activityid' alias='ae'>"
+        "<filter>"
+          "<condition attribute='partyid' operator='eq' uiname='" + Xrm.Page.getAttribute("fullname").getValue() + "' uitype='contact' value='" + Xrm.Page.data.entity.getId() + "' />"
+        "</filter>"
+      "</link-entity>"
+    "</entity>"
+  "</fetch>"
    
  subgrid.control.SetParameter("fetchXml", fetchXml);
  subgrid.control.refresh();

}

Надеюсь, вышеизложенное имеет смысл, я возвращаю атрибуты, которые соответствуют атрибутам представления действий, которое используется в подсетке, которую я настроил, а затем фильтрую нужные мне типы действий и только то, где сторона действия является контактом на страница. Это работает нормально, за исключением одного странного поведения.

Проблема в том, что иногда при переходе к этой контактной форме вложенная сетка не обновляется, хотя мой javascript (включая вызов subgrid.control.refresh()) определенно работает, и поэтому во вложенной сетке нет записей об активности. Если я обновляю подсетку вручную (щелчок правой кнопкой мыши -> Обновить список) после загрузки страницы, отображаются правильные результаты - я не понимаю, почему это происходит. Кажется, это происходит при переходе от контактной формы, а затем с помощью кнопки «Назад» в моем браузере для возврата, но у меня также случалось это при обновлении страницы.


person 3N1GM4    schedule 14.03.2016    source источник
comment
Не поддерживается установка представления, используемого во вложенной сетке из JS. Почему вы не создаете системное представление и не выбираете его в пользовательском интерфейсе (с фильтрацией связанных записей)?   -  person Henrik H    schedule 14.03.2016
comment
Это то, что я изначально пытался сделать, но не смог заставить фильтрацию «Только связанные записи» работать так, как я хотел (чтобы результаты включали все, где контакт участвовал в любом виде деятельности), он будет показывать только те записи, где Контакт был связан с действием - если есть способ добиться этого через пользовательский интерфейс, как вы описали, сообщите мне, как это сделать!   -  person 3N1GM4    schedule 15.03.2016
comment
Я понимаю. Один из способов — указать пользователям, что это отображается в представлении «Связанные действия». В качестве альтернативы, если вам нужна информация непосредственно в форме, как насчет использования панели социальных сетей (и, например, настройки по умолчанию для отображения действий)? Насколько мне известно, не существует поддерживаемого способа получения эквивалентной информации в подсетке. Microsoft знает об этом: dynamicscrmpros.com/   -  person Henrik H    schedule 15.03.2016
comment
Также см. следующее предложение по подключению: connect.microsoft.com/dynamicssuggestions/feedback/details/   -  person Henrik H    schedule 15.03.2016
comment
Да, я вижу, что связанное представление «Все действия» действительно возвращает все соответствующие записи, о которых мы уже сообщали в качестве возможного обходного пути, но мы действительно хотим, чтобы эти действия отображались на самой странице контактов. Мы не можем использовать социальную панель, так как есть дополнительные (настраиваемые) поля активности, которые мы хотим отображать, и, насколько мне известно, мы не можем настроить социальную панель для их отображения. Мне просто кажется странным, что я могу получить правильные записи для возврата и вести себя по желанию, используя это решение fetchXML, но просто не могу заставить подсетку обновляться каждый раз...   -  person 3N1GM4    schedule 15.03.2016
comment
Должен ли я иметь доступ к этой ссылке connect.microsoft.com из любой учетной записи Microsoft? В настоящее время я получаю страницу не найдена.   -  person 3N1GM4    schedule 15.03.2016
comment
К сожалению, у меня нет сведений о приведенном выше коде, и я позволю кому-то другому внести свой вклад. Вам необходимо войти в систему, чтобы получить доступ к Connect: crmanswers.net/2014/02/how-to-use-microsoft-connect-site.html   -  person Henrik H    schedule 15.03.2016