Salesforce SOQL поможет владельцу дела одним ударом - PullRequest
1 голос
/ 03 октября 2011

Используя Salesforce SOQL, я могу получить идентификатор владельца, используя следующее:

SELECT Case.OwnerId 
FROM Case 
WHERE Case.CaseNumber = '00001234'

Затем я могу получить данные пользователя для пользователя, которому принадлежит дело в этом запросе:

SELECT User.Id, User.Name, User.Custom_Field__c 
FROM User 
WHERE User.Id = '001A0000001abc1DEF'

Но я не могу заставить его работать в одном выражении, я думаю, что это потому, что Владелец! = Пользователь, хотя в данном случае владелец фактически является пользователем. Я пробовал:

SELECT Owner.Custom_Field__c
FROM Case 
WHERE Case.CaseNumber = '00001234'

Но я получаю ошибку, что Custom_Field__c не является допустимым полем.

Ответы [ 2 ]

5 голосов
/ 03 октября 2011

Владелец в случае - это полиморфное отношение, оно может быть одним из нескольких различных типов. Когда это происходит, то с помощью SOQL-R вы можете выбрать только подмножество полей, которые являются общими для типов, на которые указывают (все они представлены в псевдо-сущности с именем «Имя»), поэтому вы не сможете запросить пользовательский поля на пользователя. Вам нужно будет выполнить запрос по делу, затем собрать набор владельцев и отправить запрос пользователю и / или группе, чтобы получить более подробную информацию.

2 голосов
/ 04 октября 2011

Вы можете сделать это с помощью полу-соединения в SOQL. Я проверил это, и оно все еще работает, хотя владелец полиморфен:

SELECT Custom_Field__c 
FROM User 
WHERE Id IN (SELECT OwnerId 
             FROM Case
             WHERE Case.CaseNumber = '00001234')
...