Проблемы с использованием настраиваемого представления в подсетке для поиска в Dynamics 365 - PullRequest
0 голосов
/ 10 ноября 2018

Я работаю над формой, в которой видимость определенного раздела основана на определенном поле в форме. У рассматриваемого раздела также есть подсетка («WorkingDataRequestsGrid»). Логика для отображения поля работает нормально. Тем не менее, это не фильтрация, как ожидалось. Подсетка использует вид, который я настроил специально для этой функции. Он отображает записи из той же сущности, которые имеют определенный тип и статус.

Properties of the Subgrid

Помимо фильтрации по типу и статусу, результаты также должны фильтроваться по отношению к текущему случаю. Например, в системе 3500 документов. Из этих 3500 документов только 25 из них имеют правильную комбинацию типа / статуса. Из этих 25 только три для одного и того же случая. Встроенный поиск должен отображать только эти три файла. Это все еще показывает все 3500. Когда я нажимаю кнопку просмотра дополнительных записей, она не фильтруется в настраиваемом представлении, которое я настроил.

Поскольку фильтр использует объединение с делом (инцидент), я не могу использовать addCustomFilter или preSearch. Я ограничен функциональностью "addCustomView" из-за связанной сущности. Когда я настраиваю пользовательское представление, основанное на извлечении XML из расширенного поиска, страница выдает эту ошибку:

Alert for the Exception

В поле состояния для документа есть событие onChange, которое запускает следующий код JavaScript:

function getCustomView() {
    try {
        var LookupControl = Xrm.Page.getControl("WorkingDataRequestsGrid");

        if (LookupControl != null) {
            var CaseId = Xrm.Page.getAttribute("confidentialdocuments").getValue()[0].id;
            var Casename = Xrm.Page.getAttribute("confidentialdocuments").getValue()[0].name;

            var fetch = "<fetch distinct='false' mapping='logical' output-format='xml-platform' version='1.0'>" +
            "   <entity name='confidentialdocument'>" +
            "       <attribute name='documenttitle'/>" +
            "       <attribute name='typeofrequest'/>" +
            "       <attribute name='createdby'/>" +
            "       <attribute name='respondingparty'/>" +
            "       <attribute name='noofquestions'/>" +
            "       <attribute name='dataresponseduedate'/>" +
            "       <attribute name='confidentialdocumentid'/>" +
            "       <order descending='false' attribute='documenttitle'/>" +
            "       <filter type='and'>" +
            "           <condition attribute='documenttype' value='{33F7488F-DE7C-E511-813B-1458D04E7900}' uitype='new_documenttype' uiname='Data Request' operator='eq'/>" +
            "           <condition attribute='documentstatus' value='413360000' operator='eq'/>" +
            "           <condition attribute='confidentialdocuments' value='" + CaseId + "' uitype='incident' uiname='" + Casename + "' operator='eq'/>" +
            "       </filter>" +
            "       <link-entity name='incident' alias='a_f409103f050fe71181091458d04dd6c8' link-type='outer' visible='false' to='confidentialdocuments' from='incidentid'>" +
            "           <attribute name='title'/>" +
            "       </link-entity>" +
            "   </entity>" +
            "</fetch>";

            //columns to display in the custom view (make sure to include these in the fetch query)
        var layout = "<layoutxml>" +
                "<grid name='resultset' icon='1' preview='1' select='1' jump='name' object='10013'>" +
                "    <row id='confidentialdocumentid' name='result'>" +
                "        <cell name='documenttitle' width='100'/>" +
                "        <cell name='a_f409103f050fe71181091458d04dd6c8.title' width='100' disableSorting='1'/>" +
                "        <cell name='createdby' width='100'/>" +
                "        <cell name='typeofrequest' width='100'/>" +
                "        <cell name='noofquestions' width='100'/>" +
                "        <cell name='respondingparty' width='100'/>" +
                "        <cell name='dataresponseduedate' width='100'/>" +
                "    </row>" +
                "</grid>" +
            "</layoutxml>";

            var viewId = "{00000000-0000-0000-0000-000000000009}";// add the randomly generated GUID for the view id
            var entityName = "confidentialdocument";//add the entity name
            var viewDisplayName = "Working Confidential Data Request Documents";// add the view display name

            //alert(viewId + " --- " + entityName + " --- " + viewDisplayName);
            Xrm.Page.getControl("WorkingDataRequestsGrid").addCustomView(viewId, entityName, viewDisplayName, fetch, layout, true);
        }
    }
    catch (error) {
        alert("Error in ConfidentialJs, Method Name: getCustomView(), Error: " + error.message);
    }
}

ПРИМЕЧАНИЕ. Я обновил «макет» XML с помощью xml из Solutions Customizations.xml.

У меня было несколько предупреждений в javaScript, чтобы я мог видеть, что происходит. Когда поле меняется на правильное состояние, запускается функция javaScript. Он также срабатывает во время события onLoad, но «LookupControl» отображается как ноль, поэтому он не устанавливает пользовательское представление.

Мне кажется, я слишком долго смотрел на эту проблему. Скорее всего, это очень маленькая проблема, которую я просто упускаю. Мне нужен свежий взгляд, чтобы увидеть то, что я не могу.

Мне нужна помощь по двум вопросам:

  1. Есть идеи, почему фильтр не будет использовать указанный вид?
  2. Почему у события onLoad нет доступа к элементу управления поиском?

    Порядок выполнения для нескольких методов javascript, заданных в свойствах формы, вызвал ошибку «Объект не поддерживает». Один из методов скрывал раздел, чтобы его нельзя было найти. Это было исправлено.

    После дальнейшего рассмотрения порядок исполнения фактически не устранил проблему. Он никогда не вызывал логику addCustomView, потому что не нашел «LookupControl». Итак, вернемся к необходимости помощи по обоим вопросам!

Любая помощь очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...