[アーティクル] 09/26/2023
4 人の共同作成者
フィードバック
この記事の内容
適用対象: Power Apps
元の KB 番号: 4552163
ボタンに関連付けられているコマンド のすべての有効化ルール と表示ルール が true と評価されると、ボタンが表示されます。 これが予期しない場合は、コマンド定義がオーバーライドされ、有効ルールまたは表示ルールが見つからないか、ルール定義自体がオーバーライドされ、非表示になると思われるときにボタンが表示される可能性があります。
警告
コマンドから表示ルールを Mscrm.HideOnModern
削除して、統一インターフェイスにボタンを強制的に表示しないでください。 表示規則を Mscrm.HideOnModern
持つコマンドは、従来の Web クライアント インターフェイスを対象としており、統合インターフェイスではサポートされていないため、正しく動作しない可能性があります。
コマンド チェッカーを有効にし、検査するコマンド ボタンを選択します 。
次の例は、アクティビティ グリッド ページの 2 つの 予定 ボタンを示しています。1 つは非表示になると予想されます。
[ コマンドのプロパティ ] タブを選択して、このボタンのコマンドの詳細を表示します。 これにより、各ルール評価の結果 (True 、 False 、スキップ) と共に、アクションが表示され、ルールが有効になり、ルール が 表示されます。 有効にするルールと表示ルールを確認します。特定のルールを false に評価する必要がある場合は、ルールが誤ってカスタマイズされているか、false 結果を返すために必要な状況が満たされていない可能性があります。 その場合は、手順 9 に進みます。それ以外の場合は、コマンドにルールまたはルールがない可能性があります。さらに分析するためにコマンド ソリューション レイヤーを表示します。
コマンド名の下にある [ コマンド定義ソリューション レイヤーの表示 ] リンクを選択して、コマンドの定義をインストールしたソリューションを表示します。
[ソリューション レイヤー] ウィンドウには、特定のソリューションがインストールされている各リボン コンポーネント定義のレイヤーが表示されます。 リストの上部にあるレイヤーは、アプリケーションによって使用される現在の定義であり、他のレイヤーは非アクティブであり、現時点ではアプリケーションによって使用されません。 上位のソリューションをアンインストールするか、定義を削除する更新されたバージョンがインストールされている場合、次のレイヤーはアプリケーションで使用されている現在のアクティブな定義になります。 アンマネージド Active ソリューション レイヤーが存在する場合は、常にアプリケーションが使用する定義になります。 アクティブなソリューションが一覧に表示されていない場合、一覧の一番上に一覧表示されているソリューションは、アプリケーションによって使用される定義になります。 Microsoft によって公開されていないカスタム管理ソリューションは、Microsoft が公開したソリューション レイヤーよりも優先されます。
Entity コンテキストは、リボンのカスタマイズがオンになっているオブジェクトを示します。"すべてのエンティティ" が一覧表示されている場合、レイヤーは Application Ribbon クライアント拡張機能からのものであり、エンティティ固有のものではありません。それ以外の場合は、エンティティの論理名が一覧表示されます。
レイヤーが 2 つ以上ある場合は、2 つの行を選択し、[ 比較 ] を選択して、各ソリューションによって取り込まれた定義の比較を表示できます。
[ 戻る ] を選択すると、前のコマンド チェッカー ウィンドウに戻ります。
ソリューション レイヤーが 1 つしかない場合は、手順 9 に進み、それ以外の場合は、上位 2 つのソリューション レイヤーを選択します (アクティブ なソリューションにレイヤーがあるが、一番上に表示されていない場合は、[アクティブ なソリューション レイヤー] を選択し、次に [ 比較 ] を選択します。
現在のアクティブな定義と以前の非アクティブな定義の比較が表示され、違いがある場合は違いが表示されます。 次の例は、非アクティブmsdynce_ActivitiesPatch
な Microsoft 公開ソリューション レイヤーに含まれる表示ルールMscrm.HideOnModern
を削除してカスタマイズされたアンマネージド Active 定義を示しています。
ボタンの可視性を修正するために必要なアプローチは、特定のシナリオのさまざまなカスタマイズによって異なります。 ルールが誤って false に評価され、ルール定義が誤って定義されている場合は、ルール定義を変更し、適切な状況でルールが false に評価されるように変更する必要があります。 ルール定義が正しい場合、フィールド値やセキュリティ特権が正しく割り当てられないなど、ルールが false を返す要件が満たされない可能性があります。 ルール定義によっては、要件が大きく異なる場合があります。 「リボンの有効化ルールを定義する」 および「 リボン表示ルールを定義する」 を参照してください。 この例を考えると、コマンドは表示ルールを削除 Mscrm.HideOnModern
してカスタマイズされました。 この表示ルールは、この特定のボタンが統合インターフェイス アプリケーションに表示されないようにすることを目的としており、従来の Web クライアント インターフェイスでのみ表示されます。 コマンドのカスタム バージョンを変更し、不足している表示規則を Mscrm.HideOnModern
コマンド定義に追加できます。 これは Microsoft の公開された定義のカスタム オーバーライドであり、他の意図的な変更がないため、既定の機能を復元するには、このカスタム バージョンのコマンドを削除することをお勧めします。
修復オプション
下のいずれかのタブから修復オプションを選択します。 既定では、最初のタブが選択されています。
コマンドを削除する方法
このコマンドの作業定義を含む別のソリューション レイヤーがある場合は、この定義を削除して、次の非アクティブな作業定義を復元できます。
これが唯一のレイヤーであり、コマンドが不要になった場合は、他のボタンがコマンドを参照していない場合は、ソリューションから削除できます。
特定のシナリオに一致する次のいずれかのオプションを選択します。
コマンドがアンマネージド Active ソリューション内にある
Active アンマネージド ソリューション レイヤーのコマンドを削除するには、エンティティまたはアプリケーション リボンを含むアンマネージド ソリューションをエクスポートし、customizations.xml ファイル内のノードを編集<RibbonDiffXml>
し、コンポーネントを削除するためにこのコマンドが削除された新しいバージョンのこのソリューションをインポートします。 「 エクスポート、編集の準備、リボンのインポート」を 参照してください。
コマンドはエンティティ固有です
このシナリオの例に基づいて、エンティティが activitypointer であり、削除する必要があるコマンドがMscrm.CreateAppointment
、DefaultPublisherCITTest という名前の発行元から Active アンマネージド ソリューション レイヤーで宣言されていることを確認しました。
[詳細設定] を 開きます。
[設定] ->[ソリューション] に移動します。
[ 新規 ] を選択して新しいソリューションを作成し、コマンドと Active ソリューション レイヤーのコマンド チェッカーのソリューション レイヤーの一覧に表示される値を Publisher に設定します。 (この例では、 これは DefaultPublisherCITTest です)。
[エンティティ] [既存の追加] の順に >選択します。
コマンドが定義されているエンティティ (この例では、 これは activitypointer ) を選択し、[OK] を選択します 。
[完了 ] を選択する前に、[エンティティ メタデータを含める] オプションをオフにし、[すべての資産の追加] オプションをオフ にします。
[保存] を選択します。
[ ソリューションのエクスポート] を選択し、アンマネージド ソリューションをエクスポートします。
.zip ファイルを抽出します。
customizations.xml ファイルを開きます。
編集する <Entity>
エンティティ ノードのノード子を見つけて、その子 <RibbonDiffXml>
ノードを見つけます。
ノードを <CommandDefinition>
見つけます (この例では、ノードの <CommandDefinition>
ID は Mscrm.CreateAppointment
です。そのため、次のノードを見つけます)。
ノードを <RibbonDiffXml>
編集し、削除するコマンドの ID を持つ特定 <CommandDefinition>
のノードを削除します。 存在する可能性がある他 <CommandDefinition>
のノードを意図せずに削除しないようにしてください。 (この例に基づいて、ID が Mscrm.CreateAppointment
であるノードを<CommandDefinition>
削除します)。
customizations.xml ファイルを保存します。
変更した customizations.xml ファイルをソリューション .zip ファイルに戻します。
ソリューション ファイルをインポートします。
[ すべてのカスタマイズの発行] を選択します 。
コマンドはアプリケーション リボンにあります ("すべてのエンティティ" に適用されます)
コマンドがエンティティ固有ではなく、アプリケーション リボンで宣言された "すべてのエンティティ" に適用できる場合、手順は次のように若干異なります。
[詳細設定] を 開きます。
[設定ソリューション] > に移動します
[ 新規 ] を選択して新しいソリューションを作成し、コマンドと Active ソリューション レイヤーのコマンド チェッカーのソリューション レイヤーの一覧に表示される値を Publisher に設定します。
[クライアント拡張機能 >] [既存のアプリケーション リボンの >追加] の順に選択します。
[保存] を選択します。
[ ソリューションのエクスポート] を選択し、アンマネージド ソリューションをエクスポートします。
.zip ファイルを抽出します。
customizations.xml ファイルを開きます。
ルート <RibbonDiffXml>
ノードを見つけます。
を <CommandDefinition>
見つけます。
ノードを <RibbonDiffXml>
編集し、削除 <CommandDefinition>
するコマンドの ID を持つノードを削除します。 存在する可能性がある他 <CommandDefinition>
のノードを意図せずに削除しないようにしてください。
customizations.xml ファイルを保存します。
変更した customizations.xml ファイルを圧縮ソリューション .zip ファイルに戻します。
ソリューション ファイルをインポートします。
[ すべてのカスタマイズの発行] を選択します 。
コマンドは、会社が作成したカスタムマネージド ソリューションからのコマンドです
作成したカスタムマネージド ソリューションによってインストールされたコマンドを削除するには、次の手順に従います。
カスタム ソリューションのアンマネージド ソース バージョンを持つ個別の開発organizationで、[The] コマンドの上記の手順をアンマネージド Active ソリューション オプションで 実行します。
カスタム ソリューションのバージョンをインクリメントします。
ソリューションをマネージドとしてエクスポートします。
影響を受ける別のorganizationで、この新しいバージョンのカスタムマネージド ソリューションをインポートします。
コマンドは、私の会社が作成しなかったカスタムマネージドソリューションからのものです(サードパーティ/ISVから)
サード パーティ/ISV によって作成されたカスタム マネージド ソリューションによってインストールされたコマンドを削除するには、ソリューションの作成者に問い合わせて、特定のコマンド定義を削除したソリューションの新しいバージョンを要求し、影響を受けるorganizationにこの新しいソリューションをインストールする必要があります。
不足している有効化/表示ルールをコマンドに追加する方法
保持する必要があるコマンドに変更があるが、適切な状況でボタンを非表示にしたい場合は、カスタム定義を削除する代わりに、不足している enable/display ルールをコマンドに追加できます。
特定のシナリオに一致する次のいずれかのオプションを選択します。
コマンドがアンマネージド Active ソリューション内にある
コマンド定義に有効化/表示ルールが見つからないと判断した場合は、ノードを <CommandDefinition>
変更し、目的の動作を実現するためにルールを追加できます。
Active アンマネージド ソリューション レイヤーのコマンドを修正するには、エンティティまたはアプリケーション リボンを含むアンマネージド ソリューションをエクスポートし、customizations.xml ファイル内のノードを編集<RibbonDiffXml>
してから、固定コマンド定義を含む新しいバージョンのこのソリューションをインポートします。 「 エクスポート、編集の準備、リボンのインポート」を 参照してください。
コマンドはエンティティ固有です
このシナリオの例に基づいて、エンティティが activitypointer であり、修正する必要があるコマンドがMscrm.CreateAppointment
、DefaultPublisherCITTest という名前の発行元から Active アンマネージド ソリューション レイヤーで宣言されていることを確認しました。
[詳細設定] を 開きます。
[設定ソリューション] > に移動します 。
[ 新規 ] を選択して新しいソリューションを作成し、コマンドと Active ソリューション レイヤーのコマンド チェッカーのソリューション レイヤーの一覧に表示される値を Publisher に設定します。 (この例では、これは DefaultPublisherCITTest です)
[エンティティ] [既存の追加] の順に >選択します。
コマンドが定義されているエンティティ (この例では、 これは activitypointer ) を選択し、[OK] を選択します 。
[完了 ] を選択する前に、[エンティティ メタデータを含める] オプションと [すべての資産の追加] オプションを オフにしてください。
[保存] を選択します。
[ ソリューションのエクスポート] を選択し、アンマネージド ソリューションをエクスポートします。
.zip ファイルを抽出します。
customizations.xml ファイルを開きます。
編集する <Entity>
エンティティ ノードのノード子を見つけ、その子 <RibbonDiffXml>
ノードを見つけます。
ノードを <CommandDefinition>
見つけます。 この例では、ノードの <CommandDefinition>
ID は です Mscrm.CreateAppointment
。 したがって、次のノードを見つけます。
ノードを <RibbonDiffXml>
編集し、コマンドを修正するために <CommandDefinition>
正しい状況でコマンドを正しく機能させるノードに必要な変更を加えます。 コマンドを宣言する方法の詳細については、「リボン コマンドの 定義 」を参照してください。 (この例に基づいて、このボタンを <CommandDefinition>
正しく非表示にする表示ルールを Mscrm.HideOnModern
追加してノードを変更します)。
変更した customizations.xml ファイルをソリューション .zip ファイルに復元します。
ソリューション ファイルをインポートします。
[ すべてのカスタマイズの発行] を選択します 。
コマンドはアプリケーション リボンにあります ("すべてのエンティティ" に適用されます)
コマンドがエンティティ固有ではなく、アプリケーション リボンで宣言された "すべてのエンティティ" に適用できる場合、手順は次のように若干異なります。
[詳細設定] を 開きます。
[設定ソリューション] > に移動します 。
[ 新規 ] を選択して新しいソリューションを作成し、コマンドと Active ソリューション レイヤーのコマンド チェッカーのソリューション レイヤーの一覧に表示される値を Publisher に設定します。
[クライアント拡張機能 >] [既存のアプリケーション リボンの >追加] の順に選択します。
[保存] を選択します。
[ ソリューションのエクスポート] を選択し、アンマネージド ソリューションをエクスポートします。
.zip ファイルを抽出します。
customizations.xml ファイルを開きます。
ルート <RibbonDiffXml>
ノードを見つけます。
を <CommandDefinition>
見つけます。
コマンドを修正するために<CommandDefinition>
、正しい状況でコマンドを正しく機能させるために必要なノードを編集<RibbonDiffXml>
して変更します。 コマンドを宣言する方法の詳細については、「リボン コマンドの 定義 」を参照してください。
変更した customizations.xml ファイルをソリューション .zip ファイルに戻します。
ソリューション ファイルをインポートします。
[ すべてのカスタマイズの発行] を選択します 。
コマンドは、私が作成したカスタムマネージドソリューションからのものです
作成したカスタム マネージド ソリューションによってインストールされたコマンドを修正するには、次の手順に従います。
カスタム ソリューションのアンマネージド ソース バージョンを持つ個別の開発organizationで、[The] コマンドの上記の手順をアンマネージド Active ソリューション オプションで 実行します。
カスタム ソリューションのバージョンをインクリメントします。
ソリューションをマネージドとしてエクスポートします。
影響を受ける別のorganizationで、この新しいバージョンのカスタムマネージド ソリューションをインポートします。
コマンドは、私が作成しなかったカスタムマネージドソリューションからのものか、私のorganizationが所有していない(つまり、サードパーティ/ISVから)
サード パーティ/ISV によって作成されたカスタム マネージド ソリューションによってインストールされたコマンドを修正するには、ソリューションの作成者に問い合わせて、固定コマンド定義を含むソリューションの新しいバージョンを要求し、この新しいソリューションを影響を受けるorganizationにインストールする必要があります。
コマンドは、Microsoft が公開したマネージド ソリューション内にあります
Microsoft 公開マネージド ソリューションによってインストールされたコマンドを修正するには、新しいバージョンのソリューションをインストールする必要があります。通常はリリース更新時に実行されます。 修正が必要なバグを特定した可能性があります。 サポートについては、カスタマー サポートにお問い合わせください。
有効化/表示ルールを修正する方法
ルールの定義をインストールした ソリューションを 表示するには、ルール名の下にある [ルール定義ソリューション レイヤーの表示] リンクを選択します。
[ソリューション レイヤー] ウィンドウには、特定のソリューションがインストールされている各リボン コンポーネント定義のレイヤーが表示されます。 リストの上部にあるレイヤーは、アプリケーションによって使用される現在の定義であり、他のレイヤーは非アクティブであり、現時点ではアプリケーションによって使用されません。 上位のソリューションをアンインストールするか、定義を削除する更新されたバージョンがインストールされている場合、次のレイヤーはアプリケーションで使用されている現在のアクティブな定義になります。 アンマネージド Active ソリューション レイヤーが存在する場合は、常にアプリケーションが使用する定義になります。 アクティブなソリューションが一覧に表示されていない場合、一覧の一番上に一覧表示されているソリューションは、アプリケーションによって使用される定義になります。 Microsoft によって公開されていないカスタム管理ソリューションは、Microsoft が公開したソリューション レイヤーよりも優先されます。
Entity コンテキストは、リボンのカスタマイズがオンになっているオブジェクトを示します。"すべてのエンティティ" が一覧表示されている場合、レイヤーは Application Ribbon クライアント拡張機能からのものであり、エンティティ固有のものではありません。それ以外の場合は、エンティティの論理名が一覧表示されます。
レイヤーが 2 つ以上ある場合は、2 つの行を選択し、[ 比較 ] を選択して、各ソリューションによって取り込まれた定義の比較を表示できます。
[ 戻る ] を選択すると、前のコマンド チェッカー ウィンドウに戻ります。
次の図は、この例の有効化ルールのソリューション レイヤーを示し、この場合はソリューション レイヤーが 1 つあり、ソリューションが Active というタイトルのアンマネージド カスタマイズであることを示しています。 実際のシナリオは異なる場合があります。アクティブなソリューション レイヤーではない場合があります。マネージド ソリューションがあり、そのソリューションの名前がここに一覧表示されます。
ソリューション レイヤーを確認し、カスタマイズをインストールしたソリューションを特定したので、適切なソリューションで定義を修正する必要があります。
特定のシナリオに一致する次のいずれかのオプションを選択します。
有効化/表示ルールは、アンマネージド Active ソリューションにあります
アクティブな アンマネージド ソリューション レイヤーの有効化/表示ルールを修正するには、エンティティまたはアプリケーション リボンを含むアンマネージド ソリューションをエクスポートし、customizations.xml ファイル内のノードを編集<RibbonDiffXml>
してから、固定の有効化/表示ルール定義を含むこのソリューションの新しいバージョンをインポートします。 「 エクスポート、編集の準備、リボンのインポート」を 参照してください。
enable/display ルールはエンティティ固有です
このシナリオの例に基づいて、エンティティが連絡先 であり、修正する必要がある有効化ルールがnew.contact.EnableRule.EntityRule
、DefaultPublisherCITTest という名前の発行元から Active アンマネージド ソリューション レイヤーで宣言されていることを確認しました。
[詳細設定] を 開きます。
[設定ソリューション] > に移動します 。
[ 新規 ] を選択して新しいソリューションを作成し、有効ルールとアクティブ ソリューション レイヤーのコマンド チェッカー ソリューション レイヤーの一覧に表示される値に [Publisher] を設定します。 (この例では、これは DefaultPublisherCITTest です)
[エンティティ] [既存の追加] の順に >選択します。
有効/表示ルールが定義されているエンティティを選択し (この例では、これは 連絡先 です)、[ OK] を選択します 。
[完了 ] を選択する前に、[エンティティ メタデータを含める] オプションと [すべての資産の追加] オプションを オフにしてください。
[保存] を選択します。
[ ソリューションのエクスポート] を選択し、アンマネージド ソリューションをエクスポートします。
.zip ファイルを抽出します。
customizations.xml ファイルを開きます。
編集する <Entity>
エンティティ ノードのノード子を見つけて、その子 <RibbonDiffXml>
ノードを見つけます。
有効/表示ルールを見つけます。 この例では、有効化規則の ID は です new.contact.EnableRule.EntityRule
。 したがって、次のノードを見つけます。
ノードを <RibbonDiffXml>
編集し、有効/表示ルールに必要な変更を加え、ルールを修正するために適切な状況でルールが True に評価されるようにします。 ルールを宣言する方法の詳細については、「 リボンの有効化ルールを定義する 」および「 リボン表示ルールを定義する」を参照 してください。 (この例に基づいて、ルール定義を次のように変更します)
変更した customizations.xml ファイルをソリューション .zip ファイルに戻します。
ソリューション ファイルをインポートします。
[ すべてのカスタマイズの発行] を選択します 。
有効化/表示ルールはアプリケーション リボンにあります ("すべてのエンティティ" に適用されます)
有効化/表示ルールがエンティティ固有ではなく、アプリケーション リボンで宣言された "すべてのエンティティ" に適用される場合、手順は次のように若干異なります。
[詳細設定] を 開きます。
[設定ソリューション] > に移動します 。
[ 新規 ] を選択して新しいソリューションを作成し、有効/表示ルールと Active ソリューション レイヤーのコマンド チェッカーのソリューション レイヤーの一覧に表示される値に [Publisher] を設定します。
[クライアント拡張機能 >] [既存のアプリケーション リボンの >追加] の順に選択します。
[保存] を選択します。
[ ソリューションのエクスポート] を選択し、アンマネージド ソリューションをエクスポートします。
.zip ファイルを抽出します。
customizations.xml ファイルを開きます。
ルート <RibbonDiffXml>
ノードを見つけます。
有効/表示ルールを見つけます。
ノードを <RibbonDiffXml>
編集し、有効/表示ルールに必要な変更を加え、ルールを修正するために適切な状況でルールが True に評価されるようにします。 ルールを宣言する方法の詳細については、「 リボンの有効化ルールを定義する 」および「 リボン表示ルールを定義する」を参照 してください。
変更した customizations.xml ファイルをソリューション .zip ファイルに戻します。
ソリューション ファイルをインポートします。
[ すべてのカスタマイズの発行] を選択します 。
有効化/表示ルールは、作成したカスタム マネージド ソリューションからのルールです。
作成したカスタム マネージド ソリューションによってインストールされた有効化/表示ルールを修正するには、次の手順を実行します。
カスタム ソリューションのアンマネージド ソース バージョンを持つ個別の開発organizationで、[有効化/表示ルールがアンマネージド Active ソリューション ] オプションにある場合は、上記の手順を実行します。
カスタム ソリューションのバージョンをインクリメントします。
ソリューションをマネージドとしてエクスポートします。
影響を受ける別のorganizationで、この新しいバージョンのカスタムマネージド ソリューションをインポートします。
有効化/表示ルールは、自分が作成しなかったカスタムマネージド ソリューションからのものか、organizationが所有していない (サードパーティ/ISV から) です
サード パーティ/ISV によって作成されたカスタム マネージド ソリューションによってインストールされた有効化/表示ルールを修正するには、ソリューションの作成者に問い合わせて、固定の有効化/表示ルール定義を含むソリューションの新しいバージョンを要求し、影響を受けるorganizationにこの新しいソリューションをインストールする必要があります。
有効化/表示ルールは、Microsoft の公開されたマネージド ソリューションにあります
Microsoft 公開マネージド ソリューションによってインストールされた有効化/表示ルールを修正するには、新しいバージョンのソリューションをインストールする必要があります。これは通常、リリース更新時に実行されます。 修正が必要なバグを特定した可能性があります。 サポートについては、カスタマー サポートにお問い合わせください。
関連情報
モデル駆動型アプリ リボンのコマンド チェッカー