Loading
Forbedre Salesforce med kode
Få tilgang til poster med tilpassede metadata programmatisk

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__cTeam_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);
    }
}
 
Laster
Salesforce Help | Article