【问题标题】:Salesforce updating metadata record using apexSalesforce 使用 apex 更新元数据记录
【发布时间】:2021-06-04 01:37:42
【问题描述】:

'我正在尝试通过 Apex 更新 Salesforce 元数据记录。这是我的代码:

Metadata.DeployContainer mdContainer = new Metadata.DeployContainer();

 for(Omni_Routing_Skillset__mdt md: omnimetadata) {
    Metadata.CustomMetadata customMetadata = new Metadata.CustomMetadata();
      customMetadata.fullName = md.DeveloperName; //custom metadata name
    customMetadata.Label = md.MasterLabel;
      Metadata.CustomMetadataValue customField1 = new Metadata.CustomMetadataValue(); //the values you're changing/updating
customField1.field = 'Omni_Routing_Skillset__mdt.Skill_Level__c'; //the custom field API Name that you're wanting to insert/update a value of
    customField1.value = skillsAndValues.get(md.MasterLabel);
      customMetadata.values.add(customField1);//add the changes to list of changes to be deployed
      mdContainer.addMetadata(customMetadata);
      System.debug('customMetadata: ' + customMetadata);

  }
  //MetadataDeploy callback = new MetadataDeploy();
  Id jobId = Metadata.Operations.enqueueDeployment(mdContainer, null);

这将启动部署,但出现以下错误:

**Must specify the name in the CustomMetadataType.CustomMetadata format, Current Name: Team_2_SEP, Required Delimiter: .**

我不知道如何解决这个问题,有人可以建议吗?

谢谢!

【问题讨论】:

    标签: salesforce metadata apex


    【解决方案1】:

    名称将是 Omni_Routing_Skillset__mdt.Team_2_SEP,您只在 Team_2_SEP 中传递。

    【讨论】:

    • 我确实考虑过并更改了它,但仍然遇到同样的错误,谢谢您的输入!
    【解决方案2】:

    你可以参考这个方法:

    public static void updateExisitingMetadatRecord() {
    
            List<Metadata_Creditional__mdt> metadatList = [SELECT Id, DeveloperName, 
            MasterLabel FROM Metadata_Creditional__mdt WHERE DeveloperName='MyTest'];
            Metadata.CustomMetadata metadataRec =  new Metadata.CustomMetadata();
            metadataRec.fullName = 
            'Metadata_Creditional__mdt.'+metadatList[0].DeveloperName;
            metadataRec.label = metadatList[0].MasterLabel;
            //provide the value for the fields and add it to custom metadata instance
            Metadata.CustomMetadataValue totalPurchasetoUpdate = new 
            Metadata.CustomMetadataValue();
            totalPurchasetoUpdate.field = 'Secret_Key__c';
            totalPurchasetoUpdate.value = 'Change Secreet Value';
            metadataRec.values.add(totalPurchasetoUpdate);
            
            Metadata.DeployContainer mdContainer = new Metadata.DeployContainer();
            mdContainer.addMetadata(metadataRec);
            Metadata.Operations.enqueueDeployment(mdContainer, null);
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多