Установить форму только для чтения с помощью Xrm Object в Dynamics 365 CRM - PullRequest
0 голосов
/ 03 июля 2018

Я читаю о Xrm объекте на Документация Microsoft , но я не могу найти что-то конкретное.

Мне нужно ограничить некоторые роли по созданию или редактированию комментария портала (тип активность ). Поэтому я не могу просто изменить роли безопасности .

Когда я редактирую форму комментария портала, я вижу, что есть сценарий JavaScript, который выполняется при загрузке страницы:

Page load script

При редактировании этого часто используется Xrm объект.

В псевдокоде я должен сделать

if(ActiveUser.hasRoles(["Some role", "Some other role"]) {
    Page.setReadOnly(true);
}

У меня уже есть скрипт (в качестве веб-ресурса) для проверки ролей, подобных этой, но я не знаю, как сделать форму «только для чтения» или сделать это только с Xrm. Любые подсказки, как этого добиться здесь?

Редактировать 1:

Я смог сделать это, используя следующий код:

// Ribbon "Save" button
document.querySelector('#crmRibbonManager').style.display = "none";
// Status "Save" button
document.querySelector('#savefooter_statuscontrol').style.display = "none";
Xrm.Page.ui.controls.get().forEach(function (control) {          
    if(!control.getDisabled()) {
        control.setDisabled(true);
    }
});

Конечно, я получаю Ошибка загрузки страницы , поскольку документ еще не загружен. Но я почти уверен, что мог бы использовать некоторую технику Xrm, чтобы отключить эти атрибуты, я должен изучить это.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

В дополнение к ответу Аруна;

Этот тип материала не поддерживается; document.querySelector('#crmRibbonManager')

Microsoft Dynamics 365 и важность сохранения поддержки

Все взаимодействия JavaScript на страницах приложения должны быть только выполняется с использованием функций, определенных в Xrm.Page & Xrm.Utility пространства имен, т.е. не взаимодействуют напрямую со страницей DOM.

Если вы хотите контролировать поведение ленты, вам следует Настроить команды и ленту , вам нужно будет добавить правило включения / отображения. Лента Workbench является отличным инструментом для этого.

Наконец, ничего не стоит, что это только контролирует проверку на стороне клиента. Если вы хотите, чтобы на стороне сервера правила, которые пользователь не может избежать, вам следует рассмотреть возможность реализации плагина.

0 голосов
/ 03 июля 2018

Вы на правильном пути. Как вы сказали, создайте / измените свой веб-ресурс библиотеки js и зарегистрируйтесь при загрузке формы, а не редактируйте существующий файл js сценариев формы OOB adx. В своем коде js - проверьте роли безопасности текущего пользователя .

Xrm.Page.context.getUserRoles();

Затем отключите поля навалом .

Xrm.Page.getControl("myfield").setDisabled(true);

Платформа Dynamics 365 CRM имеет две формы , а именно: «Только для чтения» и «Отключено», первая загружается, когда пользователь имеет только привилегию «Чтение» для этой конкретной сущности, а последняя отображается для неактивных записей. К сожалению, мы не можем принудительно загрузить ни одну из этих форм.

...