Få tilgang til poster med tilpassede metadata programmatisk
Bruk SOQL til å få tilgang til tilpassede metadatatyper og hente API-navnene på postene av disse typene.
Nødvendige utgaver
| Tilgjengelig i Salesforce Classic og Lightning Experience |
Tilgjengelig i Enterprise, Performance, Unlimited og Developer Edition Du kan opprette, redigere og slette tilpassede metadatatypeposter fra installerte pakker i Group og Professional Edition |
| Nødvendige brukertillatelser | |
|---|---|
| For å opprette eller redigere tilpassede metadatatyper: | Forfatter for Apex |
Apex-kode kan opprette, lese og oppdatere (men ikke slette) tilpassede metadataposter så lenge metadataene er abonnentkontrollerte og synlige fra kodens navneområde. DML-operasjoner er ikke tillatt på tilpassede metadata i Partner API eller Enterprise API. Med ikke-pakkede metadata fungerer både utviklerkontrollert og abonnentkontrollert tilgang på samme måte: som abonnentkontrollert tilgang. Hvis du vil vite mer om Custom Metadata Type__mdt sObject, kan du se Custom Metadata Type__mdt i Object Reference for Salesforce . Se Trust, but Verify: Apex Metadata API and Security for å finne ut mer om pakketilgang i utviklerkontrollerte og abonnentkontrollerte organisasjoner.
Følgende eksempel deklarerer Apex-variabelen custMeta av den tilpassede metadatatypen MyCustomMetadataType__mdt, som er i navneområdet.
MyCustomMetadataType__mdt custMeta;Deklarer custMeta-variabelen for den tilpassede metadatatypen TheirCustomMetadataType__mdt, som ikke er i navneområdet, men er i navneområdet their_ns.
their_ns__TheirCustomMetadataType__mdt custMeta;Følgende eksempel er en enkel spørring som returnerer standardfelt og tilpassede felt for alle poster av den tilpassede metadatatypen Threat_Tier_Mapping og får tilgang til noen av feltene.
Threat_Tier_Mapping__mdt[] threatMappings = [SELECT MasterLabel, QualifiedApiName, Field_Mapping__c ,Minimum_Support_Level__c FROM Threat_Tier_Mapping__mdt];
for (Threat_Tier_Mapping__mdt threatMapping : threatMappings) {
System.debug(threatMapping.MasterLabel + ‘: ‘ +
threatMapping.Field_Mapping__c + ‘ from ‘ +
threatMapping.Team_Building_to_SFA_Field_Mapping__c + ‘ to ‘
threatMapping.Minimum_Support_Level__c);
}For å få en enhet som ser mer ut som en Schema.SObjectDescribeResult enn SOQL, må Apex-klassens vacations.ThreatTierMappingDescribeResult innkapsles informasjonen som spørres fra vacations__ThreatTierMappingDescribeResult__mdt. Opprett deretter klassens vacations.Vacations med metoder som:
vacations.ThreatTierMappingDescribeResult describeThreatTierMappings(String qualifiedApiName) {
Threat_Tier_Mapping__mdt threatMapping = [SELECT <fields> FROM Threat_Tier_Mapping__mdt WHERE QualifiedApiName = :qualifiedApiName];
return new ThreatTierMappingDescribeResult(<fieldValues>);
}
I det foregående eksemplet refererer <fields> til feltene du vil inkludere i describe, og <fieldValues> refererer til verdiene i disse feltene.
Det neste eksemplet bruker en metadatarelasjon som refererer til en annen tilpasset metadatatype, Team_Building_to_SFA_Field_Mapping__mdt, til å gjøre en enkel høyre ytre kobling.
ThreatTierMapping threatMapping =
[SELECT MasterLabel, Team_Building_to_SFA_Field_Mapping__r.MasterLabel FROM Threat_Tier_Mapping__mdt WHERE QualifiedApiName=‘Easy_Vacations’];
System.debug(threatMapping.MasterLabel + ‘ is part of ‘ + Team_Building_to_SFA_Field_Mapping__r.MasterLabel);Følgende eksempel viser en venstre ytre kobling som starter fra EntityDefinition. Denne spørringen bruker et relasjonsfelt kalt Team_Building_Object__c på Team_Building_to_SFA_Field_Mapping__mdt. Navnet på den underordnede relasjonen for dette relasjonsfeltet er Field_Mappings_From.
for (EntityDefinition entity : allObjects) {
System.debug(‘Processing mappings for: ‘ + entity.QualifiedApiName);
for (Team_Building_to_SFA_Field_Mapping__mdt fieldMapping : entity.FieldMappingsFrom__r) {
System.debug(‘ Field ‘ + fieldMapping.Team_Building_Field__c +
‘ has mapping ‘ + fieldMapping.QualifiedApiName);
}
}