Lintdefinities exporteren
Gepubliceerd: januari 2017
Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
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:
RetrieveApplicationRibbonRequest
Dit bericht haalt de linten voor kerntoepassingen met inbegrip van het entiteitssjabloon op.RetrieveEntityRibbonRequest
Dit bericht haalt de lintdefinitie op gebruikt voor een specifieke entiteit.
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 & "\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 & "\" & entityName & "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 && 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 & "\" & em.LogicalName & "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
Microsoft Dynamics 365
© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht