Delen via


Lintdefinities exporteren

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Om wijzigingen in de standaard RibbonXml effectief te bepalen, moet u naar de RibbonXml-gegevens kunnen verwijzen die deze linten definiëren.

Toegang tot de lintdefinities voor uw organisatie

Als het lint voor uw organisatie is aangepast, moet u de huidige definities exporteren als u van plan bent met de aangepaste linten te werken. Om dit te doen, moet u het exportribbonxml-voorbeeld gebruiken in SampleCode\CS\Client\Ribbon\ExportRibbonXml.

Toegang tot de gegevens van het standaardlint

De standaardlintdefinities voor Microsoft Dynamics 365 is te vinden in het SDK-pakket: SDK\Resources\ExportedRibbonXml.Download het Microsoft Dynamics CRM SDK-pakket.

Het applicationRibbon.xml-bestand bevat de definitie van de linten voor kerntoepassingen.

De overige bestanden bevatten de definities die door entiteiten worden gebruikt die lintdefinities bevatten die verschillen van de entiteitssjabloon. Elk bestand krijgt een naam op basis van de naam van de entiteit: logische entiteitsnaam + Ribbon.xml.

Deze bestanden staan voor de uitvoer van twee berichten met Voorbeeld: exporteren van lintdefinities:

Decomprimeer de lintgegevens

De lintgegevens worden geëxporteerd als gecomprimeerd bestand. Om het bestand te decomprimeren in XML moet u de System.IO.Packaging.ZipPackage-klasse gebruiken. Het volgende voorbeeld is een helpermethode die in het SDK-voorbeeld wordt gebruikt om het bestand te decomprimeren.


/// <summary>
/// A helper method that decompresses the 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;
 }
}

''' <summary>
''' A helper method that decompresses the the Ribbon data returned
''' </summary>
''' <param name="data">The compressed ribbon data</param>
''' <returns></returns>
Public Function unzipRibbon(ByVal data() As Byte) As Byte()
 Dim package As System.IO.Packaging.ZipPackage = Nothing
 Dim memStream As MemoryStream = Nothing

 memStream = New MemoryStream()
 memStream.Write(data, 0, data.Length)
 package = CType(ZipPackage.Open(memStream, FileMode.Open), ZipPackage)

 Dim part As ZipPackagePart = CType(package.GetPart(New Uri("/RibbonXml.xml", UriKind.Relative)), ZipPackagePart)
 Using strm As Stream = part.GetStream()
  Dim len As Long = strm.Length
              Dim buff(CInt(len - 1)) As Byte
  strm.Read(buff, 0, CInt(len))
  Return buff
 End Using
End Function

Haal de gegevens uit het toepassingslint op

Het toepassingslint kan worden opgehaald met RetrieveApplicationRibbonRequest zoals aangegeven in het volgende voorbeeld.


//Retrieve the Appliation 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));

'Retrieve the Appliation Ribbon
Dim appribReq As New RetrieveApplicationRibbonRequest()
Dim appribResp As RetrieveApplicationRibbonResponse = CType(_serviceProxy.Execute(appribReq), RetrieveApplicationRibbonResponse)

Dim applicationRibbonPath As String = Path.GetFullPath(exportFolder &amp; "\applicationRibbon.xml")
File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml))

Haal entiteitslinten op

Als u de lintdefinitie voor entiteiten wilt ophalen, kunt u de naam van de entiteit als een parameter aan RetrieveEntityRibbonRequest toevoegen.

Om de lintdefinities voor alle entiteiten op te halen die het lint ondersteunen, hebt u een lijst van deze systeementiteiten nodig die lintdefinities hebben die afwijken van de sjabloon voor het entiteitslint. Dit voorbeeld laat een matrix van alle systeementiteiten zien die lintdefinities hebben.


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

'This array contains all of the system entities that use the ribbon.
      Public entitiesWithRibbons() As String = {"account", "activitymimeattachment", "activitypointer", "appointment", "bulkoperation", _
                                                "campaign", "campaignactivity", "campaignresponse", "competitor", "connection", "contact", _
                                                "contract", "contractdetail", "customeraddress", "discount", "discounttype", "email", "fax", "goal", _
                                                "importfile", "incident", "invoice", "invoicedetail", "kbarticle", "kbarticlecomment", "lead", _
                                                "letter", "list", "listmember", "metric", "opportunity", "opportunityproduct", "phonecall", _
                                                "pricelevel", "product", "productpricelevel", "queueitem", "quote", "quotedetail", _
                                                "recurringappointmentmaster", "report", "salesliterature", "salesorder", "salesorderdetail", _
                                                "service", "serviceappointment", "sharepointdocumentlocation", "sharepointsite", "systemuser", _
                                                "task", "team", "territory", "uom", "uomschedule", "userquery"}

In het volgende voorbeeld ziet u hoe de lintdefinities voor een reeks entiteiten ophaalt.


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

'Retrieve system Entity Ribbons
Dim entRibReq As New RetrieveEntityRibbonRequest() With {.RibbonLocationFilter = RibbonLocationFilters.All}

For Each entityName As String In entitiesWithRibbons
 entRibReq.EntityName = entityName
 Dim entRibResp As RetrieveEntityRibbonResponse = CType(_serviceProxy.Execute(entRibReq), RetrieveEntityRibbonResponse)

 Dim entityRibbonPath As String = Path.GetFullPath(exportFolder &amp; "\" &amp; entityName &amp; "Ribbon.xml")
 File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml))
 'Write the path where the file has been saved.
 Console.WriteLine(entityRibbonPath)
Next entityName

Alle aangepaste entiteiten ondersteunen ook lintaanpassingen. Als u een lijst met aangepaste entiteiten wilt ophalen, kunt u gebruikmaken van RetrieveAllEntitiesRequest en de namen van aangepaste entiteiten ophalen. In het volgende voorbeeld ziet u hoe de lintdefinities voor alle aangepaste entiteiten ophaalt.


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

 'Check for custom entities
 Dim raer As New RetrieveAllEntitiesRequest() With {.EntityFilters = EntityFilters.Entity}

 Dim resp As RetrieveAllEntitiesResponse = CType(_serviceProxy.Execute(raer), RetrieveAllEntitiesResponse)

 For Each em As EntityMetadata In resp.EntityMetadata
  If em.IsCustomEntity = True AndAlso em.IsIntersect = False Then
   entRibReq.EntityName = em.LogicalName
   Dim entRibResp As RetrieveEntityRibbonResponse = CType(_serviceProxy.Execute(entRibReq), RetrieveEntityRibbonResponse)

   Dim entityRibbonPath As String = Path.GetFullPath(exportFolder &amp; "\" &amp; em.LogicalName &amp; "Ribbon.xml")
   File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml))
   'Write the path where the file has been saved.
   Console.WriteLine(entityRibbonPath)
  End If
 Next em
End Using

Zie ook

Opdrachten en het lint aanpassen
Opdrachtbalk of lintpresentatie
Het lint exporteren, voorbereiden voor bewerking en importeren

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht