Apex DML не распознает переменную, которую делает SOQL - PullRequest
0 голосов
/ 11 января 2019

Я новичок в Salesforce Development, я протестировал похожий запрос на этот запрос в песочнице Org, которая работала, однако при попытке обновить записи в живой организации у меня возникли некоторые проблемы.

Проблема и контекст следующие:
Я пытаюсь обновить поле «Тип записи» некоторых записей заданий через Apex DML. Я открыл консоль разработчика и запустил запрос:

SELECT Name, GW_Volunteers__Campaign__c, RecordtypeId FROM GW_Volunteers__Volunteer_Job__c WHERE GW_Volunteers__Campaign__c = '7010O000001P2XIQA0' and RecordTypeId = null LIMIT 5

Это отлично работает и покажет мне первые 5 записей заданий, в которых нет назначенного типа записи, и это то, что я хочу обновить.

Проблема в том, что я открываю окно «Выполнить анонимно» и ввожу этот код:

GW_Volunteers__Volunteer_Job__c [] bjobs = [
SELECT Name, GW_Volunteers__Campaign__c, RecordTypeId FROM GW_Volunteers__Volunteer_Job__c WHERE GW_Volunteers__Campaign__c = '7010O000001P2XIQA0' and RecordTypeId = null LIMIT 5];
bjobs.RecordTypeId='0120O000000LAY6QAO';
update bjobs;

Я получаю следующую ошибку:

Строка: 3, столбец: 11 Переменная не существует: RecordTypeId

Пока я не пропустил что-то очень очевидное, я не могу понять, почему это происходит. Так как он распознает эту переменную в запросе, и сработал аналогичный запрос (где я также обновил RecordTypeId) в песочнице.

Спасибо,
YH

1 Ответ

0 голосов
/ 12 января 2019

Проблема в том, что вы не можете назначить bjobs.RecordTypeId='0120O000000LAY6QAO';. Вы знаете, bjobs это массив GW_Volunteers__Volunteer_Job__c.

Итак, что вам нужно сделать, это

GW_Volunteers__Volunteer_Job__c [] bjobs = [
SELECT Name, GW_Volunteers__Campaign__c, RecordTypeId FROM GW_Volunteers__Volunteer_Job__c WHERE GW_Volunteers__Campaign__c = '7010O000001P2XIQA0' and RecordTypeId = null LIMIT 5];

for(GW_Volunteers__Volunteer_Job__c job : bjobs)
{
   job.RecordTypeId='0120O000000LAY6QAO';  
}

update bjobs;

Надеюсь, это сработает.

...