Dynamics 365中的導出至Excel,批量編輯,導入權限及限制導出至Excel


我是微軟Dynamics 365 & Power Platform方面的工程師羅勇,也是2015年7月到2018年6月連續三年Dynamics CRM/Business Solutions方面的微軟最有價值專家(Microsoft MVP),歡迎關注我的微信公眾號 MSFTDynamics365erLuoYong ,回復415或者20200609可方便獲取本文,同時可以在第一間得到我發布的最新博文信息,follow me!

前面的博文 探索Dynamics 365 用戶能夠登錄使用的最小權限需求 提到了權限,提到了導出權限,今天我做一些驗證,主要涉及到導出、批量編輯和導入。

首先我給用戶只授予了 min priv apps use 這個角色(這個角色來自Common Data Service minimum privilege security role)的復制角色 mini priv with export ,並將 ThomasLuoDemoApp 這個Model-Driven App授予了 mini priv with export 角色,當然這里面顯示的實體中,至少要授予一個實體的讀取權限給這個用戶,否則該用戶登錄后會報錯。

用戶要能導出數據到Excel,需要他擁有的某個角色具有 【Export to Excel】這個Privacy Related Privilege,該權限在Business Management這個Tab下,如下圖所示。

 

 如果點擊記錄報如下錯誤的話:

"code":"0x80040220","message":"Principal user (Id=63e7ad9d-f397-ea11-a811-000d3a80ccec, type=8, roleCount=1, privilegeCount=84, accessMode=0), is missing prvReadRoutingRule privilege (Id=151d85cf-dc0f-441c-9b81-8e413964138f) on OTC=8181 for entity 'routingrule'. context.Caller=63e7ad9d-f397-ea11-a811-000d3a80ccec"

授予該角色對Routing Rule Set的讀權限。

 

 然后打開任何一個列表就可以看到導出Excel相關的命令如下:

 

 

第一個菜單項目 Open in Excel Online只有Online版本的Dynamics 365/Power Apps才有,可以使用類似Excel的進行數據編輯,保存時候會報權限錯誤,這個權限涉及到導入,后面會講。

 

第二個 Static Workheet,是導出當前視圖的所有記錄,當然最多導出組織參數 maxrecordsforexporttoexcel 指定的記錄數,如果沒有做更改,這個值是10萬條,可以更改。

第三個Static Workheet (Page Only) 是導出當前視圖的當前頁的記錄,當然了,一頁記錄最多250行記錄,這個可以自行設置,沒有設置默認是50行。

第四個Dynamic Workheet,是導出動態Excel數據,也就是可以刷新獲取到Dynamics 365/Power Apps中的最新數據,截圖示例如下:

 

 第五個Dynamic PivotTable,將會生成Pivot Table。

 

 如果用戶要能批量編輯的話,除了對批量編輯的實體有Write權限外,需要授予如下權限(Business Management下面的Bulk Edit權限):

 

如果需要導入功能呢?從定制該命令按鈕的Enable Rule來看,如果需要顯示【Import from Excel】按鈕,需要對Import實體(顯示名稱為Data Import)具有個人或者更高級別的 Create, Write, Delete, Read 權限,對importmap 實體(顯示名稱為Data Map)的實體具有個人或者更高級別Read,Create 和 AppendTo權限,如下圖所示:

 

 但是實際導入的時候還會報錯,我這里添加了如下權限后就不報錯了,也可以導入成功了。也就是Data Import, Data Map, Import Source File三個實體都給最小級別的各種權限。

 

 但是還有個問題,無法看到導入進度和結果,如果要看的話,需要授予對Custom Entities 下面的 SettingsSiteMap這個實體 (邏輯名稱msdynsm_sesttingssitemap)的讀權就可以了。

這個需要那個權限,具體通過后面的步驟看,有的不需要特別授予權限的,具體情況具體分析。

 

 這個可以通過XrmToolBox中的 SiteMap Editor這個工具來查看到需要什么權限才能看到這個SubArea。

 

 這樣用戶就可以通過Advanced Setting > Settings > Data Management > Imports來查看導入進度和結果了。

 

如果要能在這個界面導入,還需要授予這些實體的讀權限,如下圖: 

 

 

常見的一個需求就是限制導出,因為導出權限給了用戶,那么對幾乎所有可見的數據都可以導出,有時候希望限制某些實體不能導出。

如果一個一個去定制實體的命令欄按鈕太慢,可以定制下Application Ribbon,這個相當於定制命令欄模版,可以應用到所有的實體。

新建一個解決方案,將 Application Ribbons 添加進來。

 

編輯下Home的EXPORT TO EXCEL按鈕,右擊選擇 【Customize Button】,這個步驟要做,否則后面步驟會沒有效果。

 

 然后還是同樣的位置,點擊下【Customize Command】,然后為Id為Mscrm.ExportToExcel 的命令添加一個Enable Rule,這個Enable Rule中添加一個Custom Rule,設置如下:

 

這個Custom Rule的代碼就自己寫,傳遞的Crm Prameter就是當前實體的邏輯名稱,我這里使用的代碼如下,可以看到我不對系統管理員角色用戶作限制,其余我可以做額外條件,比如某些角色的用戶只能導出部分實體記錄。

"use strict";
var LuoYong = window.LuoYong || {};
LuoYong.Common = LuoYong.Common || {};
(function () {
    this.Export2ExcelEnableRule = function (SelectedEntityTypeName) {
        var returnVal = false;
        var currentRoles = Xrm.Utility.getGlobalContext().userSettings.roles;
        currentRoles.forEach(function (currentRole) {
            if ("system administrator" === currentRole.name.toLowerCase()) {
                returnVal = true;
            }
        });
        if (SelectedEntityTypeName === "contact") {
            returnVal = true;
        }
        return returnVal;
    }
}).call(LuoYong.Common);

 

發布后會看到大部分實體的列表界面的【Export to Excel】按鈕消失了,而且實體高級查找結果界面的Export按鈕也禁用了,子網格上的導出按鈕會被隱藏。

 

你可能還有問題,如果一個實體我要允許導出,部分字段不允許導出呢?這個定制可以參考我的博文:定制Dynamics CRM標准導出功能:不能導出指定列的值

還可以啟用Audit 和Activity Logging (請參考 Common Data Service and model-driven apps activity logging ),然后在 https://protection.office.com/unifiedauditlog 進行搜索用戶的導出記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM