Exporter les définitions du ruban
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 exportribbonxml figurant sous SampleCode\CS\Client\Ribbon\ExportRibbonXml.
Accéder aux données de ruban par défaut
Les définitions du ruban par défaut pour Dynamics 365 for Customer Engagement 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 entités dont les définitions de ruban ne correspondent pas au modèle d’entité. Chaque fichier est nommé en fonction du nom de l’entité : nom d’entité 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 l’entité.
RetrieveEntityRibbonRequest
Ce message récupère la définition du Ruban utilisée pour une entité 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
RetrieveApplicationRibbonRequest appribReq = new RetrieveApplicationRibbonRequest();
RetrieveApplicationRibbonResponse appribResp = (RetrieveApplicationRibbonResponse)_serviceProxy.Execute(appribReq);
System.String applicationRibbonPath = Path.GetFullPath(exportFolder + "\\applicationRibbon.xml");
File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml));
Récupérer les rubans d’entité
Pour récupérer la définition du ruban pour des entités, il vous suffit d’inclure le nom de l’entité comme paramètre de RetrieveEntityRibbonRequest.
Pour récupérer les définitions de ruban pour toutes les entités qui prennent en charge le ruban, vous avez besoin d’une liste des entités système contenant des définitions de ruban qui varient du modèle du ruban d’entité. L’exemple suivant montre l’ensemble des entités système contenant des définitions de ruban.
//This array contains all of the system entities 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 d’entités.
//Retrieve system Entity Ribbons
RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest() { RibbonLocationFilter = RibbonLocationFilters.All };
foreach (System.String entityName in entitiesWithRibbons)
{
entRibReq.EntityName = entityName;
RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.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 entités personnalisées prennent également en charge les personnalisations de ruban. Pour obtenir la liste des entités personnalisées, utilisez RetrieveAllEntitiesRequest et récupérez les noms des entités personnalisées. L’exemple suivant montre comment récupérer les définitions de ruban pour toutes les entités personnalisées.
//Check for custom entities
RetrieveAllEntitiesRequest raer = new RetrieveAllEntitiesRequest() { EntityFilters = EntityFilters.Entity };
RetrieveAllEntitiesResponse resp = (RetrieveAllEntitiesResponse)_serviceProxy.Execute(raer);
foreach (EntityMetadata em in resp.EntityMetadata)
{
if (em.IsCustomEntity == true && em.IsIntersect == false)
{
entRibReq.EntityName = em.LogicalName;
RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.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);
}
}
}
Voir aussi
Personnaliser le ruban pour Microsoft Dynamics 365 Customer Engagement
Présentation de la barre de commandes et du ruban
Exporter, préparer à modifier et importer le ruban
Hinweis
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é).
Commentaires
Envoyer et afficher des commentaires pour