Partager via


Exporter les définitions du ruban

Notes

Cette rubrique concerne les commandes classiques.

Il existe une nouvelle façon de définir les commandes. Voir Vue d’ensemble du commandement moderne (Version préliminaire)

Pour définir efficacement les modifications sur RibbonXml par défaut, vous devez être en mesure de référencer les données RibbonXml qui définissent ces rubans.

Accéder aux définitions de ruban pour votre organisation

Si le ruban pour votre organisation a changé, vous devez exporter les définitions actuelles si vous prévoyez d’utiliser les éléments de ruban personnalisés. Pour ce faire, utilisez l’exemple de fichier xml Exportation du ruban.

Accéder aux données de ruban par défaut

Les définitions du ruban par défaut pour les applications pilotées par modèle peuvent être téléchargées à partir de Téléchargements Microsoft : ExportedRibbonXml.zip.

Le fichier applicationRibbon.xml contient la définition des rubans de l’application principale.

Les fichiers restants contiennent les définitions utilisées par les tables dont les définitions de ruban ne correspondent pas au modèle de table. Chaque fichier est nommé en fonction du nom de la table : nom de table logique + Ribbon.xml.

Ces fichiers sont le résultat de deux messages utilisant l’Exemple : exporter les définitions du ruban :

RetrieveApplicationRibbonRequest
Ce message récupère les rubans de l’application principale, y compris le modèle de la table.

RetrieveEntityRibbonRequest
Ce message récupère la définition du Ruban utilisée pour une table spécifique.

Décompresser les données du ruban

Les données de ruban sont exportées dans un fichier compressé. Pour décompresser le fichier au format XML vous devez utiliser la classe System.IO.Packaging.ZipPackage. L’exemple suivant est une méthode d’assistance utilisée dans l’exemple SDK pour décompresser le fichier.

/// <summary>
/// A helper method that decompresses the Ribbon data returned
/// </summary>
/// <param name="data">The compressed ribbon data</param>
/// <returns></returns>
public byte[] unzipRibbon(byte[] data)
{
System.IO.Packaging.ZipPackage package = null;
MemoryStream memStream = null;

memStream = new MemoryStream();
memStream.Write(data, 0, data.Length);
package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open);

ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/RibbonXml.xml", UriKind.Relative));
using (Stream strm = part.GetStream())
{
 long len = strm.Length;
 byte[] buff = new byte[len];
 strm.Read(buff, 0, (int)len);
 return buff;
}
}

Récupérer les données du ruban de l’application

Le ruban de l’application peut être récupéré à l’aide de RetrieveApplicationRibbonRequest, comme illustré dans l’exemple suivant.

//Retrieve the Application Ribbon
var appribReq = new RetrieveApplicationRibbonRequest();
var appribResp = (RetrieveApplicationRibbonResponse)service.Execute(appribReq);

System.String applicationRibbonPath = Path.GetFullPath(exportFolder + "\\applicationRibbon.xml");
File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml));

Récupérer les rubans de table

Pour récupérer la définition du ruban pour des tables, il vous suffit d’inclure le nom de la table comme paramètre de RetrieveEntityRibbonRequest.

Pour récupérer les définitions de ruban pour toutes les tables qui prennent en charge le ruban, vous avez besoin d’une liste des tables système contenant des définitions de ruban qui varient du modèle du ruban de table. L’exemple suivant montre l’ensemble des tables système contenant des définitions de ruban.

//This array contains all of the system tables that use the ribbon.
public System.String[] entitiesWithRibbons = {"account",
"activitymimeattachment",
"activitypointer",
"appointment",
"bulkoperation",
"calendar",
"campaign",
"campaignactivity",
"campaignresponse",
"competitor",
"connection",
"contact",
"contract",
"contractdetail",
"convertrule",
"convertruleitem",
"customeraddress",
"discount",
"discounttype",
"email",
"emailserverprofile",
"entitlement",
"entitlementchannel",
"entitlementtemplate",
"entitlementtemplatechannel",
"fax",
"goal",
"goalrollupquery",
"importfile",
"incident",
"invoice",
"invoicedetail",
"kbarticle",
"kbarticlecomment",
"lead",
"letter",
"list",
"listmember",
"mailbox",
"metric",
"opportunity",
"opportunityproduct",
"partnerapplication",
"phonecall",
"postfollow",
"pricelevel",
"product",
"productpricelevel",
"queue",
"queueitem",
"quote",
"quotedetail",
"recurringappointmentmaster",
"report",
"rollupfield",
"routingrule",
"routingruleitem",
"salesliterature",
"salesliteratureitem",
"salesorder",
"salesorderdetail",
"service",
"serviceappointment",
"sharepointdocument",
"sharepointdocumentlocation",
"sharepointsite",
"site",
"sla",
"slaitem",
"socialactivity",
"socialprofile",
"systemuser",
"task",
"team",
"teamtemplate",
"territory",
"uom",
"uomschedule",
"userquery"};

L’exemple suivant montre comment récupérer les définitions de ruban pour un ensemble de tables.

//Retrieve system table Ribbons
var entRibReq = new RetrieveEntityRibbonRequest() { RibbonLocationFilter = RibbonLocationFilters.All };
foreach (System.String entityName in entitiesWithRibbons)
{
 entRibReq.EntityName = entityName;
 var entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);

 System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + entityName + "Ribbon.xml");
 File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
 //Write the path where the file has been saved.
 Console.WriteLine(entityRibbonPath);
}

Toutes les tables personnalisées prennent également en charge les personnalisations de ruban. Pour obtenir la liste des tables personnalisées, utilisez RetrieveAllEntitiesRequest et récupérez les noms des tables personnalisées. L’exemple suivant montre comment récupérer les définitions de ruban pour toutes les tables personnalisées.

//Check for custom tables
 var raer = new RetrieveAllEntitiesRequest() { EntityFilters = EntityFilters.Entity };
 var resp = (RetrieveAllEntitiesResponse)service.Execute(raer);
 foreach (EntityMetadata em in resp.EntityMetadata)
 {
  if (em.IsCustomEntity == true && em.IsIntersect == false)
  {
   entRibReq.EntityName = em.LogicalName;
   var entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);
   System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + em.LogicalName + "Ribbon.xml");
   File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
   //Write the path where the file has been saved.
   Console.WriteLine(entityRibbonPath);
  }
 }

Résoudre les problèmes liés au ruban

Si vous rencontrez un problème avec un bouton de la barre de commandes du ruban, utilisez ce guide de dépannage pour rechercher et résoudre le problème.

Voir aussi

Personnaliser le ruban
Présentation de la barre de commandes et du ruban
Exporter, préparer à modifier et importer le ruban

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).