gpt4 book ai didi

.net - 站点 "Notes And Attachments"的 Salesforce SOQL 查询

转载 作者:行者123 更新时间:2023-12-01 06:25:51 24 4
gpt4 key购买 nike

基本上,我需要一个 SOQL 查询,它可以使用 Web 服务 API 执行,它将返回所有 NoteAndAttachment 项目,这些项目通常会显示在 Salesforce Web UI 的“帐户”页面的“注释和附件”部分中。这不仅包括附加到帐户本身的 N&A,还包括附加到与帐户相关的任何案例、机会或联系人的 N&A。 Salesforce 本身获取该信息似乎没有问题,但在 SOQL 限制和数据模型限制之间,我还没有找到令人满意的解决方案。

这是我目前所拥有的:

SELECT Id,
(select Id, Title, IsNote from NotesAndAttachments),
(select Id, Title, IsNote from Contacts.NotesAndAttachments),
(select Id, Title, IsNote from Cases.NotesAndAttachments),
(select Id, Title, IsNote from Opportunities.NotesAndAttachments)
FROM Account a WHERE Id = '{0}'

{0} 用于 .NET String.Format;这将是我为其提取记录的帐户 ID。此特定查询失败并出现以下异常:

System.Web.Services.Protocols.SoapException : INVALID_FIELD: 
(select Id, Title, IsNote from Contacts.NotesAndAttachments),
^
ERROR at Row:3:Column:48
Didn't understand relationship 'Contacts' in field path. If you are attempting to use a custom relationship, be sure to append the '__r' after the custom relationship name. Please reference your WSDL or the describe call for the appropriate names.

这些都是系统定义的基本关系,它也不识别单数“联系人”,所以我很茫然。

其他解决方案涉及半连接子选择(有两个限制,你不能将它们与“OR”组合,所以没有骰子),嵌套子查询(不能)等。我真的由于这种查询语言的局限性,我束手无策;没有UNION,限制子查询,限制子查询深度,不能直接查询NoteAndAttachment实体。必须有一种方法来获取这些记录,就像它们在网站上显示的那样,但我每次都很沮丧。

编辑:我现在的答案是查询每个包含的对象类型(客户、联系人、机会)的 NotesAndAttachments 属性,并从案例中提取附件并将​​它们投影为 NotesAndAttachments 以获得我需要的信息。这个过程需要四次往返,5 条记录的摘要信息(没有注释体或文件二进制文件)平均需要大约 15 秒。我能够将数据检索推到一个异步线程,这减少了检索时间,但性能可能仍然不能令人满意。我将继续研究性能更高的东西,但现在我已经开始工作了。

最佳答案

这里似乎有两个问题......

  1. 您不能直接查询 NotesAndAttachments 对象 - 这是 Notes 和 Attachments 对象的组合。
  2. 对于父子关系,您只能向下查询 1 级。您可以对联系人进行子查询,但不能对联系人的备注或附件进行子查询。

我认为您在这里唯一的选择是执行四个查询。但是,如果您在多个帐户 ID 上循环,这可能会花费您大量的 API 调用。

SELECT Id,
(SELECT Id, Title FROM Notes),
(SELECT Id, Name FROM Attachments)
FROM Account WHERE Id = '{0}'

SELECT Id,
(SELECT Id, Title FROM Notes),
(SELECT Id, Name FROM Attachments)
FROM Contact WHERE AccountId = '{0}'

SELECT Id,
(SELECT Id, Title FROM Notes),
(SELECT Id, Name FROM Attachments)
FROM Case WHERE AccountId = '{0}'

SELECT Id,
(SELECT Id, Title FROM Notes),
(SELECT Id, Name FROM Attachments)
FROM Opportunity WHERE AccountId = '{0}'

关于.net - 站点 "Notes And Attachments"的 Salesforce SOQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com