Я пытаюсь ограничить сущности, которые пользователь может выбрать в поле «Относительно» в форме «Встреча», и установить некоторые представления по умолчанию, используемые этими полями поиска.
Большая идея состоит в том, что когда пользователь вводит данныев самом поле результаты должны быть предоставлены из представления по умолчанию для этого поиска, например, «Контакты, за которыми я следую», но когда пользователь вводит всплывающее окно «Поиск дополнительных записей», представление по умолчанию должно быть заменено на «Все контакты».
Это поле может искать во многих объектах, например, в учетной записи, контакте, выставлении счетов и т. Д., И я хочу строго ограничить его только учетными записями.
До сих пор я нашел два способа сделать это.it:
1) Добавьте фильтры к полям поиска, чтобы любые записи, не соответствующие заданным критериям, не отображались.Это делается с помощью addPreSearch
JS-функции из Xrm
lib, например:
var addEventHandler = function (defaultView) {
Xrm.Page.getControl("contactid").addPreSearch(function () {
addFilter("contactid", defaultView)
});
}
var addFilter = function (entityName, defaultView) {
var filterXml = "<filter type = 'and'>" +
"<condition attribute='contactid' operator='null'/>" +
"</filter>";
Xrm.Page.getControl("contactid").addCustomFilter(filterXml, "contact");
Xrm.Page.getControl("contactid").setDefaultView(defaultView);
}
(это просто пример кода, фактически не примененный к полю «Относительно»)
2)Второй вариант - использовать недокументированное решение с помощью функции setLookupTypes
на самом поле, например:
var limitLookupEntities = function () {
Xrm.Page.getAttribute("contactid").setLookupTypes(["contact"]);
}
var changeDefaultViewForLookup = function(viewGuid){
Xrm.Page.getControl("contactid").setDefaultView(viewGuid);
}
Проблема:
Проблема в том, что, как упоминалось ранее, «Относительно»поле может искать во многих объектах.Ограничение их с помощью решения 1) утомительно, создавать столько фильтров, сколько есть сущностей, и применять их один за другим к полю не кажется правильным решением.Однако, как я это реализую, поведение представления по умолчанию работает так, как задумано - значение просмотра изменяется только для всплывающего окна.
Решение 2) реализовать проще и не будетпотребовать внесения каких-либо изменений в будущем, если какие-либо новые объекты будут добавлены во взаимосвязь с полем «Относительно», но представление по умолчанию применяется как к представлению по умолчанию «в поле», так и к «всплывающему».
Решение, которое я ищу, должно сделать следующее:
- Это должно ограничить поиск только указанной сущностью
- Это не должно требовать какого-либо обслуживания после реализации, например, в случаеновые поля вводятся в поле «Относительно».
- Это должно быть универсально - я мог бы захотеть иметь возможность параметризовать его и использовать его в других формах
- Это должно применить изменение представления по умолчанию, только когда пользователь открывает всплывающее окно поиска
Это вообще возможно?
Версия CRM, на которой я это реализую, - 8.2 on-prem.