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 выдает ошибку.
«Неверный тип: Schema.Instance_History».
Я уже проверил свой пользовательский объект, и он действительно имеет двойное подчеркивание в коде везде, где на него ссылаются. Кто-нибудь может помочь?
Решение проблемы
Объектам истории полей для пользовательских объектов требуется 2 символа подчеркивания, попробуйте Instance__History. Вероятно, вам проще всего использовать http://workbench.developerforce.com/, чтобы увидеть все объекты? Вы когда-нибудь использовали операции «описать»?

https://help.salesforce.com/s/articleView?id=sf.tracking_field_history.htm&type=5
Salesforce сохраняет историю отслеживаемых полей объекта в связанном объекте с именем StandardObjectNameHistory или CustomObjectName__History. Например, AccountHistory представляет собой историю изменений значений полей записи учетной записи. Точно так же MyCustomObject__History отслеживает историю полей для пользовательского объекта MyCustomObject__c.
Комментариев нет:
Отправить комментарий