Вложения — важная часть управления файлами в Salesforce. Однако дубликаты вложений могут загромождать систему и затруднить поиск соответствующих файлов и управление ими. В этой статье мы рассмотрим несколько методов удаления повторяющихся вложений с помощью Salesforce Apex, а также приведем примеры кода для каждого подхода.
Метод 1: использование набора для выявления дубликатов
List<Attachment> attachments = [SELECT Id, Name, ParentId, Body FROM Attachment];
Set<String> uniqueAttachmentKeys = new Set<String>();
List<Attachment> attachmentsToDelete = new List<Attachment>();
for (Attachment attachment : attachments) {
String attachmentKey = attachment.ParentId + '_' + attachment.Name;
if (uniqueAttachmentKeys.contains(attachmentKey)) {
attachmentsToDelete.add(attachment);
} else {
uniqueAttachmentKeys.add(attachmentKey);
}
}
delete attachmentsToDelete;
Метод 2. Использование карты для выявления дубликатов на основе контента
List<Attachment> attachments = [SELECT Id, Name, ParentId, Body FROM Attachment];
Map<String, List<Attachment>> attachmentMap = new Map<String, List<Attachment>>();
List<Attachment> attachmentsToDelete = new List<Attachment>();
for (Attachment attachment : attachments) {
Blob attachmentBody = attachment.Body;
String attachmentContent = attachmentBody.toString();
if (attachmentMap.containsKey(attachmentContent)) {
attachmentMap.get(attachmentContent).add(attachment);
attachmentsToDelete.add(attachment);
} else {
attachmentMap.put(attachmentContent, new List<Attachment>{ attachment });
}
}
delete attachmentsToDelete;
Метод 3. Сравнение свойств вложений для выявления дубликатов
List<Attachment> attachments = [SELECT Id, Name, ParentId, Body FROM Attachment];
List<Attachment> attachmentsToDelete = new List<Attachment>();
for (Integer i = 0; i < attachments.size(); i++) {
Attachment attachment1 = attachments[i];
for (Integer j = i + 1; j < attachments.size(); j++) {
Attachment attachment2 = attachments[j];
if (attachment1.Name == attachment2.Name && attachment1.ParentId == attachment2.ParentId) {
attachmentsToDelete.add(attachment2);
}
}
}
delete attachmentsToDelete;
Удаление повторяющихся вложений в Salesforce Apex имеет решающее значение для поддержания чистоты и организованности файловой системы. В этой статье мы рассмотрели три различных метода достижения этой цели, приведя примеры кода для каждого подхода. Внедрив эти методы, вы сможете эффективно устранить повторяющиеся вложения и улучшить качество данных в вашей организации Salesforce.