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?
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