По мере изучения назревают некоторые вопросы. Так вот один из них:
Возможно ли удалять записи используя SOSL? или только через SOQL?
Вот что набросал:
List<List<SObject>> conList = [FIND 'Joe1 OR Kathy1 OR Caroline1 OR Kim1' IN FirstName FIELDS RETURNING contact];
delete conList;
По мере изучения назревают некоторые вопросы. Так вот один из них: Возможно ли удалять записи используя SOSL? или только через SOQL? Вот что набросал: [code]List<List<SObject>> conList = [FIND 'Joe1 OR Kathy1 OR Caroline1 OR Kim1' IN FirstName FIELDS RETURNING contact]; delete conList;[/code] но при анонимном выполнении пишет ошибку на строчке "delet"
List<Account> accounts = new List<Account>();
accounts.add(new Account(Name = 'Qwerty0523-1'));
accounts.add(new Account(Name = 'Qwerty0523-2'));
accounts.add(new Account(Name = 'Qwerty0523-3'));
System.Savepoint sp = Database.setSavepoint();
insert accounts;
List<List<sObject>> listOfListOfSObjects = new List<List<sObject>>();
listOfListOfSObjects.add(accounts);
System.debug(JSON.serializePretty(listOfListOfSObjects));
try {
delete listOfListOfSObjects;
} catch (Exception e) {
Database.rollback(sp);
}
а вот
List<Account> accounts = new List<Account>();
accounts.add(new Account(Name = 'Qwerty0523-1'));
accounts.add(new Account(Name = 'Qwerty0523-2'));
accounts.add(new Account(Name = 'Qwerty0523-3'));
System.Savepoint sp = Database.setSavepoint();
insert accounts;
List<List<sObject>> listOfListOfSObjects = new List<List<sObject>>();
listOfListOfSObjects.add(accounts);
System.debug(JSON.serializePretty(listOfListOfSObjects));
try {
delete listOfListOfSObjects[0];
} catch (Exception e) {
Database.rollback(sp);
}
уже прекрасно работает.
[code]List<Account> accounts = new List<Account>(); accounts.add(new Account(Name = 'Qwerty0523-1')); accounts.add(new Account(Name = 'Qwerty0523-2')); accounts.add(new Account(Name = 'Qwerty0523-3')); System.Savepoint sp = Database.setSavepoint(); insert accounts; List<List<sObject>> listOfListOfSObjects = new List<List<sObject>>(); listOfListOfSObjects.add(accounts); System.debug(JSON.serializePretty(listOfListOfSObjects)); try { delete listOfListOfSObjects; } catch (Exception e) { Database.rollback(sp); }[/code] [quote]Line: 11, Column: 2 DML requires SObject or SObject list type: List<List<SObject>>[/quote] а вот [code]List<Account> accounts = new List<Account>(); accounts.add(new Account(Name = 'Qwerty0523-1')); accounts.add(new Account(Name = 'Qwerty0523-2')); accounts.add(new Account(Name = 'Qwerty0523-3')); System.Savepoint sp = Database.setSavepoint(); insert accounts; List<List<sObject>> listOfListOfSObjects = new List<List<sObject>>(); listOfListOfSObjects.add(accounts); System.debug(JSON.serializePretty(listOfListOfSObjects)); try { delete listOfListOfSObjects[0]; } catch (Exception e) { Database.rollback(sp); }[/code] уже прекрасно работает.
Вопрос некорректный. Удалять ни тем ни тем нельзя. Удалять можно с помощью DML операции delete.
https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_dml_section.htm
И насколько я помню на вход можно передавать один объект или массив объектов.
А вот тут уже приходит к тому что тебе возвращает SOQL и SOSL. И как раз SOSL возвращает ни первое ни второе чтобы напрямую передавать в delete. Просто надо из SOSL получить массив объектов и его удалить. Вот и вся магия.
Странно, не нашел где про это упоминается в официальной документации, но вот простая статья
https://howtodoitinsalesforce.blogspot.com/2016/12/return-type-of-sosl-search-in-salesforce.html
или совсем проще вот тут весь ответ кроется
[quote="Михаил Михальчук"]Возможно ли удалять записи используя SOSL? или только через SOQL?[/quote] Вопрос некорректный. Удалять ни тем ни тем нельзя. Удалять можно с помощью DML операции [b]delete[/b]. https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_dml_section.htm И насколько я помню на вход можно передавать один объект или массив объектов. А вот тут уже приходит к тому что тебе возвращает SOQL и SOSL. И как раз SOSL возвращает ни первое ни второе чтобы напрямую передавать в delete. Просто надо из SOSL получить массив объектов и его удалить. Вот и вся магия. Странно, не нашел где про это упоминается в официальной документации, но вот простая статья https://howtodoitinsalesforce.blogspot.com/2016/12/return-type-of-sosl-search-in-salesforce.html или совсем проще вот тут весь ответ кроется [quote="Andrii Muzychuk"]delete listOfListOfSObjects[color=red][0][/color];[/quote]