適用於: Power Apps
原始 KB 編號: 4552163
判斷按鈕隱藏的原因
按鈕可能會因為與評估為 false 之按鈕相關聯的命令上的啟用規則或顯示規則而隱藏。 相關聯的命令可能會有 Mscrm.HideOnModern 顯示規則,以隱藏整合介面應用程式中的按鈕。
您也可以建立HideCustomAction,以強制隱藏按鈕。 如果使用者離線,將不會顯示沒有啟用規則的 Mscrm.IsEntityAvailableForUserInMocaOffline 自訂命令和預設命令。
警告
- 如果實體已啟用 [行動裝置中的只讀] 選項,則 EntityPrivilegeRule 類型的任何顯示規則,其 PrivilegeType 值為下列其中一個 (Create、Write、Delete、Assign、Share) 都會評估為 false,這會強制實體只允許讀取許可權。 在實體上啟用只讀行動裝置旗標時 您可以編輯實體,並取消核取 [行動裝置中的 只讀] 選項,以允許這些規則評估為 true,前提是規則所測試的許可權也會授與使用者。
- 請勿從命令移除
Mscrm.HideOnModern顯示規則,強制按鈕出現在整合介面中。 具有顯示規則的Mscrm.HideOnModern命令適用於舊版 Web 用戶端介面,且統一介面中不支援,而且可能無法正常運作。
啟用命令檢查程式,然後選取要檢查的命令按鈕。
下列範例顯示 聯繫人實體方格頁面上的 [新增 ] 按鈕不可見,並以標示 為 New (hidden) 的專案表示。
注意
如果您按鈕未出現在清單中,可能會因為下列其中一個原因而隱藏:
HideCustomAction 自定義:
- 在左側導覽面板中,尋找頂端的
HideCustomAction區段。 - 展開清單並檢閱每個項目。 檢查位置屬性,以符合按鈕的名稱。
- 如果找到相符項目,這可能是您的按鈕隱藏的原因。 若要解決此問題,請遵循 修復選項 指示,但將它們套用至
HideCustomAction而非命令。
- 在左側導覽面板中,尋找頂端的
Mscrm.HideOnModern 顯示規則:
- 相關聯的命令可能會有
Mscrm.HideOnModern顯示規則,這會隱藏整合介面應用程式中的按鈕。 - 目前,命令檢查工具不會列出此規則所隱藏的按鈕。 這項限制會在未來的更新中解決。
- 相關聯的命令可能會有
手動隱藏在命令列設計工具中:
- 開啟應用程式的 命令行設計工具 。
- 找出您的按鈕,並檢查 [屬性] 窗格。
- 在底部,確認未勾選 [ 隱藏 ] 欄位。
注意
如果按鈕保持隱藏狀態,即使所有規則都評估為 True,請檢查瀏覽面板中的隱藏原因:
依選取範圍隱藏:
- 這表示按鈕會因為 網格線中的內容敏感性命令而隱藏。
- 在方格中選取記錄時,任何沒有
SelectionCountRule元素的按鈕都會被視為與選取的記錄無關,而且會隱藏,即使規則評估為 True 也一樣。 - 請注意,彈出視窗不會受到影響,因為彈出視窗的子項目可能仍然有基於記錄的命令。
離線隱藏:
- 命令因為離線而隱藏,或應用程式預設設定為離線。
- 離線模式不支援此命令。 您可以調整應用程式的 離線設定 ,並視需要先停用離線設定。
選取 [ 命令屬性] 索引標籤,以顯示此按鈕的命令詳細數據。 這會顯示啟用規則和顯示規則,以及每個規則評估的結果(True、 False、 略過)。 下列範例顯示 [新增] (隱藏) 按鈕的命令,
Mscrm.NewRecordFromGrid而且有一new.contact.EnableRule.EntityRule個名為 的啟用規則已評估為 False,因此按鈕將會隱藏。
new.contact.EnableRule.EntityRule選取形箭號
圖示以檢視規則的詳細數據,以展開啟用規則。 若要瞭解規則評估為 True 或 False 的原因,需要稍微瞭解規則的類型。 如需每種規則類型的詳細數據,請參閱 定義功能區啟用規則和 定義功能區顯示規則。 下列範例顯示規則類型為 Entity ,而實體邏輯名稱為 account。 由於目前的實體是 聯繫人,這不等於 帳戶,因此此規則會傳回 False。
修正按鈕可見度所需的方法將取決於您特定案例中的各種自定義。 請考慮我們的範例:
- 如果此規則錯誤地建立,使得在規則中宣告的實體是要 連絡 ,但已設定為 帳戶,您可以編輯
new.contact.EnableRule.EntityRule啟用規則並進行變更,以允許規則評估為 true。 - 如果此規則無意中新增至命令,您可以修改
Mscrm.NewRecordFromGrid命令,並從命令定義中移除new.contact.EnableRule.EntityRule啟用規則。 - 如果命令是Microsoft已發行定義的覆寫,則可以刪除這個自定義版本的命令,以還原預設功能。
- 如果此規則錯誤地建立,使得在規則中宣告的實體是要 連絡 ,但已設定為 帳戶,您可以編輯
修復選項
從下列其中一個索引標籤中選取修復選項。 默認會選取第一個索引標籤。
如何刪除命令
如果有另一個解決方案層包含命令的工作定義,則可以刪除定義以還原非作用中的工作定義。
如果這是唯一的圖層,而且您不再需要命令,則如果沒有其他按鈕參考命令,則可以從解決方案中移除它。
若要刪除命令,我們需要判斷哪個解決方案已安裝自定義專案:
選取命令名稱下方的 [ 檢視命令定義方案層] 連結,以檢視已安裝命令定義的方案。
[解決方案層] 窗格會顯示已安裝特定解決方案的每個功能區元件定義的分層。 清單頂端的圖層是應用程式所使用的目前定義,其他層則為非使用中,且目前應用程式不會使用。 如果卸載最上層解決方案,或已安裝移除定義的更新版本,則下一層會變成應用程式所使用的目前使用中定義。 當非受控 作用 中解決方案層存在時,它一律會是應用程式所使用的定義。 如果沒有列出的作用中解決方案,則清單頂端所列的解決方案將會是應用程式所使用的定義。 任何未由Microsoft發行的自定義受控解決方案,也會優先於Microsoft已發行的解決方案層。
實體內容指出功能區自定義所開啟的物件,如果列出「所有實體」,則圖層來自應用程式功能區用戶端延伸模組,而非實體特定,否則會列出實體的邏輯名稱。
當有兩個以上的圖層時,您可以選取兩個數據列,然後選取 [比較 ] 以檢視每個解決方案引進的定義比較。
選取 [上一頁 ] 會返回上一個 [命令檢查程式] 視窗。
下圖顯示範例中命令的解決方案層,並指出聯繫人實體的解決方案層是非受控自定義,如名為 Active 的解決方案所表示。 您的實際案例可能不同,您可能沒有作用中解決方案層,您可能有受控解決方案,且該解決方案的名稱將會列在這裡。
既然我們已檢閱解決方案層,並識別已安裝自定義的方案,我們必須修正適當的解決方案中的定義。
選取符合您特定案例的下列其中一個選項:
此命令位於 Unmanaged Active 解決方案中
若要刪除 Active Unmanaged 解決方案層中的命令,我們會匯出包含實體或應用程式功能區的 Unmanaged 方案,並編輯<RibbonDiffXml>customizations.xml檔案中的節點,然後匯入這個解決方案的新版本,其中已移除此命令以刪除元件。 請參閱 匯出、準備編輯和匯入功能區。
此命令是實體特定的
根據我們的範例案例,我們識別出實體是 連絡 的,而需要刪除 Mscrm.NewRecordFromGrid 的命令是 ,而且它是從名為 DefaultPublisherCITTest 的發行者,在 Active Unmanaged 解決方案層中宣告該實體。
開啟 [ 進階設定]。
瀏覽至設定>解決方案。
選取 [新增] 以建立新的解決方案,將 [發行者] 設定為命令和作用中解決方案層的 [命令檢查器] 解決方案層列表中顯示的值。 (在我們的範例中,這是 DefaultPublisherCITTest)
選取 [實體>新增現有]。
選取您命令所定義的實體(在我們的範例中,這是 聯繫人),然後選取 [ 確定]。
選取 [完成] 之前,請務必取消核取 [包含實體元數據] 和 [新增所有資產] 選項。
選取儲存。
選取 [導出解決方案 ],然後匯出 Unmanaged 解決方案。
解壓縮 .zip 檔。
開啟customizations.xml檔案。
<Entity>找出您想要編輯之實體節點的節點子節點,並找出其子<RibbonDiffXml>節點。<CommandDefinition>找出節點。 (在我們的範例中,節點的<CommandDefinition>標識碼是Mscrm.NewRecordFromGrid,因此我們會找出下列節點)
編輯節點,
<RibbonDiffXml>並移除具有您想要刪除之命令標識碼的特定<CommandDefinition>節點。 請確定您不小心刪除可能存在的其他<CommandDefinition>節點。 (根據我們的範例,我們會刪除<CommandDefinition>標識碼為Mscrm.NewRecordFromGrid的節點。
儲存 customizations.xml 檔案。
將修改 過的 customizations.xml檔案新增回方案.zip檔案。
匯入方案檔。
選取發佈所有自訂。
命令位於應用程式功能區中(適用於「所有實體」)
如果命令不是實體特定的,而是適用於應用程式功能區中宣告的「所有實體」,則步驟會稍有不同,如下所示:
- 開啟 [ 進階設定]。
- 瀏覽至設定>解決方案。
- 選取 [新增] 以建立新的解決方案,將 [發行者] 設定為命令和作用中解決方案層的 [命令檢查器] 解決方案層列表中顯示的值。
- 選取 [用戶端延伸模組>>
- 選取儲存。
- 選取 [導出解決方案 ],然後匯出 Unmanaged 解決方案。
- 解壓縮 .zip 檔。
- 開啟customizations.xml檔案。
- 找出根
<RibbonDiffXml>節點。 -
<CommandDefinition>找出節點。 - 編輯節點,
<RibbonDiffXml>並移除<CommandDefinition>具有您想要刪除之命令標識碼的節點。 請確定您不小心刪除可能存在的其他<CommandDefinitions>節點。 - 儲存 customizations.xml 檔案。
- 將修改 過的 customizations.xml檔案新增回壓縮方案.zip檔案。
- 匯入方案檔。
- 選取發佈所有自訂。
此命令來自我公司撰寫的自定義受控解決方案
若要刪除您所建立之自定義受控解決方案所安裝的命令,請遵循下列步驟:
- 在具有自定義解決方案非受控來源版本的個別開發組織中,完成上述命令 的步驟位於 Unmanaged Active solution 選項中。
- 遞增自定義解決方案的版本。
- 將解決方案導出為受控。
- 在您的個別受影響的組織中,匯入這個新版的自定義受控解決方案。
此指令來自我的公司未撰寫的自訂受控解決方案(來自第三方/ISV)
若要刪除由第三方/ISV 所建立的自定義受控解決方案所安裝的命令,您必須連絡解決方案的作者,並要求已移除特定命令定義的新版本解決方案,然後將這個新解決方案安裝到受影響的組織。