GOOGLE ADS

Donnerstag, 14. April 2022

Ich bin neu in der Apex-Entwicklung und versuche, diesen Code zu kompilieren, scheitere aber

public class InstanceTriggerHandler {
public static void createInstanceHistoryRecord(Map<ID,Instance__c> newMap, Map<ID,Instance__c> oldMap) {
List<Instance_History__c > listOfIntHistoryToCreate = new List<Instance_History__c >();
List<Schema.FieldSetMember> trackedFields = SObjectType.Instance__c.FieldSets.Case_View.getFields();

if (trackedFields.isEmpty()) return;

for(Instance__c ins:newMap.values()) {
for (Schema.FieldSetMember fst: trackedFields) {
String fieldName = fst.getFieldPath();
String fieldLabel = fst.getLabel();
Instance__c oldInstance = (oldMap!= null)? oldMap.get(ins.id): new Instance__c();

if (ins.get(fieldName)!= oldInstance.get(fieldName)) {
String newValue = String.valueOf(ins.get(fieldName));
String oldValue = String.valueOf(oldInstance.get(fieldName));

if (oldValue!= null && oldValue.length()>255) {
oldValue = oldValue.substring(0,255);
}
if (newValue!= null && newValue.length()>255) {
newValue = newValue.substring(0,255);
}
final Instance_History__c instanceHistory = new Instance_History__c();
instanceHistory.Field__c = fieldLabel;
instanceHistory.Instance__c = ins.Id;
instanceHistory.Field_API__c = fieldName;
instanceHistory.Original_Value__c = oldValue;
instanceHistory.New_Value__c = newValue;
listOfIntHistoryToCreate.add(instanceHistory);
}
}
}

if(!listOfIntHistoryToCreate.isEmpty()) {
insert listOfIntHistoryToCreate;
}
}
}

Apex gibt mir einen Fehler.

"Ungültiger Typ: Schema.Instance_History".

Ich habe mein benutzerdefiniertes Objekt bereits überprüft und es hat tatsächlich überall dort, wo es referenziert wird, doppelte Unterstriche im Code. Kann jemand helfen?


Lösung des Problems

Feldverlaufsobjekte für benutzerdefinierte Objekte benötigen 2 Unterstriche, versuchen Sie es mit Instance__History. Wahrscheinlich ist es für Sie am einfachsten, http://workbench.developerforce.com/ zu verwenden, um alle Objekte anzuzeigen? Haben Sie jemals "describe"-Operationen verwendet?

Geben Sie hier die Bildbeschreibung ein

https://help.salesforce.com/s/articleView?id=sf.tracking_field_history.htm&type=5

Salesforce speichert den nachverfolgten Feldverlauf eines Objekts in einem zugeordneten Objekt namens StandardObjectNameHistory oder CustomObjectName__History. Beispielsweise stellt AccountHistory den Verlauf der Änderungen an den Werten der Felder eines Account-Datensatzes dar. In ähnlicher Weise verfolgt MyCustomObject__History den Feldverlauf für das benutzerdefinierte Objekt MyCustomObject__c.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...