Compartir a través de


Exportar definiciones de cinta de opciones

Nota

Este tema trata sobre comandos clásicos.

Hay una nueva forma de definir comandos. Consulte Información general de los comandos modernos (versión preliminar)

Para definir cambios de un modo eficaz en el RibbonXml predeterminado, debe poder hacer referencia a los datos de RibbonXml que definen esas cintas de opciones.

Tener acceso a las definiciones de la cinta de opciones de la organización

Si la cinta de opciones de la organización se ha modificado, debe exportar las definiciones actuales si trata de trabajar con los elementos de cinta de opciones personalizados. Para ello, use el ejemplo de Exportar cinta de opciones xml.

Tener acceso a los datos predeterminados de la cinta de opciones

Las definiciones de cintas de opciones predeterminadas para aplicaciones basadas en modelos pueden descargarse desde Descargas de Microsoft: ExportedRibbonXml.zip.

El archivo applicationRibbon.xml contiene la definición de las cintas de opciones de la aplicación principal.

Los archivos que quedan contienen las definiciones que usan las tablas que tienen definiciones de la cinta de opciones que difieren de la plantilla de tabla. Cada archivo se denomina de acuerdo con el nombre de la tabla: nombre lógico de la tabla + Ribbon.xml.

Estos archivos representan el resultado de dos mensajes mediante Ejemplo: Exportar definiciones de cinta de opciones:

RetrieveApplicationRibbonRequest
Este mensaje recupera las cintas de opciones de la aplicación principal incluida la plantilla de tabla.

RetrieveEntityRibbonRequest
Este mensaje recupera la definición de cinta de opciones usada para una tabla específica.

Descomprimir datos de la cinta de opciones

Los datos de la cinta de opciones se exporta como un archivo comprimido. Para descomprimir el archivo en XML tiene que usar la clase System.IO.Packaging.ZipPackage. El siguiente ejemplo es un método auxiliar usado en el ejemplo del SDK para descomprimir el archivo.

/// <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;
}
}

Recuperar datos de la cinta de opciones de la aplicación

La cinta de opciones de la aplicación se puede recuperar mediante RetrieveApplicationRibbonRequest, tal como se muestra en el siguiente ejemplo.

//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));

Recuperar cinta de opciones de la tabla

Para recuperar la definición de cinta de opciones para tablas, puede incluir el nombre de la tabla como un parámetro de RetrieveEntityRibbonRequest.

Para recuperar las definiciones de la cinta de opciones para todas las tablas que admiten la cinta de opciones, necesita una lista de las tablas del sistema que tienen definiciones de la cinta de opciones que puedan variar de la plantilla de cinta de opciones de tabla. En el siguiente ejemplo se muestra una matriz de todas las tabla del sistema que tienen definiciones de la cinta de opciones.

//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"};

En el siguiente ejemplo se muestra cómo recuperar las definiciones de la cinta de opciones de un conjunto de tabla.

//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);
}

Cualquier tabla personalizada también admite personalizaciones de la cinta de opciones. Para obtener una lista de tablas personalizadas, use RetrieveAllEntitiesRequest y recupere los nombres de las tablas personalizadas. En el siguiente ejemplo se muestra cómo recuperar las definiciones de cintas de opciones de todas las tablas personalizadas.

//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);
  }
 }

Solución de problemas de cinta

Si tiene un problema con un botón de la barra de comandos de la cinta, use esta guía de solución de problemas para encontrar y resolver el problema.

Consultar también

Personalizar la cinta
Presentación de la barra de comandos o la cinta de opciones
Exportar, preparar para modificar e importar la cinta de opciones

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).