Предел Dynamics CRM «относительно» поля поиска только для 1 объекта в форме «Встреча» и установка представления по умолчанию для «Просмотр» - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь ограничить сущности, которые пользователь может выбрать в поле «Относительно» в форме «Встреча», и установить некоторые представления по умолчанию, используемые этими полями поиска.

Большая идея состоит в том, что когда пользователь вводит данныев самом поле результаты должны быть предоставлены из представления по умолчанию для этого поиска, например, «Контакты, за которыми я следую», но когда пользователь вводит всплывающее окно «Поиск дополнительных записей», представление по умолчанию должно быть заменено на «Все контакты».

Это поле может искать во многих объектах, например, в учетной записи, контакте, выставлении счетов и т. Д., И я хочу строго ограничить его только учетными записями.

До сих пор я нашел два способа сделать это.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) реализовать проще и не будетпотребовать внесения каких-либо изменений в будущем, если какие-либо новые объекты будут добавлены во взаимосвязь с полем «Относительно», но представление по умолчанию применяется как к представлению по умолчанию «в поле», так и к «всплывающему».

Решение, которое я ищу, должно сделать следующее:

  1. Это должно ограничить поиск только указанной сущностью
  2. Это не должно требовать какого-либо обслуживания после реализации, например, в случаеновые поля вводятся в поле «Относительно».
  3. Это должно быть универсально - я мог бы захотеть иметь возможность параметризовать его и использовать его в других формах
  4. Это должно применить изменение представления по умолчанию, только когда пользователь открывает всплывающее окно поиска

Это вообще возможно?

Версия CRM, на которой я это реализую, - 8.2 on-prem.

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