Проблемы с использованием настраиваемого представления в подсетке для поиска в Dynamics 365
Я работаю над формой, в которой видимость определенного раздела основана на определенном поле в форме. В рассматриваемом разделе также имеется подсетка ("WorkingDataRequestsGrid"). Логика для отображения поля работает нормально. Тем не менее, это не фильтрация, как ожидалось. Подсетка использует вид, который я настроил специально для этой функции. Он отображает записи из той же сущности, которые имеют определенный тип и статус.
Помимо фильтрации по типу и статусу, результаты также должны фильтроваться по отношению к текущему случаю. Например, в системе 3500 документов. Из этих 3500 документов только 25 из них имеют правильную комбинацию типа / статуса. Из этих 25 только три для одного случая. Встроенный поиск должен отображать только эти три файла. Это все еще показывает все 3500. Когда я нажимаю кнопку просмотра дополнительных записей, она не фильтруется в настраиваемом представлении, которое я настроил.
Поскольку фильтр использует соединение с делом (инцидентом), я не могу использовать addCustomFilter или preSearch. Я ограничен функциональностью "addCustomView" из-за связанной сущности. Когда я настраиваю настраиваемое представление на основе извлечения XML из расширенного поиска, страница выдает такую ошибку:
Поле состояния для документа имеет событие 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" выглядит как ноль, поэтому он не устанавливает пользовательское представление.
Я думаю, что только что смотрел на эту проблему слишком долго. Скорее всего, это очень маленькая проблема, которую я просто упускаю. Мне нужен свежий взгляд, чтобы увидеть то, что я не могу.
Мне нужна помощь по двум вопросам:
- Есть идеи, почему фильтр не будет использовать указанный вид?
- Почему событие onLoad не имеет доступа к элементу управления поиском?
Порядок выполнения для нескольких методов javascript, заданных в свойствах формы, вызвал ошибку "Объект не поддерживает". Один из методов скрывал раздел, чтобы его нельзя было найти. Это было исправлено.
После дальнейшего рассмотрения порядок исполнения фактически не устранил проблему. Он никогда не вызывал логику addCustomView, потому что не нашел "LookupControl". Итак, вернемся к необходимости помощи по обоим вопросам!
Любая помощь очень ценится!