“相关内容”存储在哪个对象/如何从Apex创建“相关内容”记录中

时间:2012-07-09 12:36:50

标签: salesforce apex-code

如果您导航到帐户/联系人/自定义对象,我们会有相关列表“相关内容”(如果启用了内容并且相关列表已添加到页面布局中)。

我的问题是这些“相关内容”记录是否已存储?在哪个对象?

使用apex我可以将文件上传到内容版本,但无法创建或找到存储“相关内容”信息的对象。

更新

尝试创建一个显示在帐户“相关内容”部分的链接,但没有成功。收到错误“插入失败。第0行出现第一个异常;第一个错误:FIELD_INTEGRITY_EXCEPTION,您无法通过api创建此类实体的链接:[LinkedEntityId]”

有什么想法吗?

           ContentVersion cv = new ContentVersion(
            versionData = EncodingUtil.Base64Decode(base64BlobValue),
            Title = fileName,
            PathOnClient = '/'+fileName,
            FirstPublishLocationId = '058900000009KcL'
        );
        insert cv;

        //fetch ContentDocumentId
        cv = [Select Id,ContentDocumentId from ContentVersion where Id = :cv.Id];

        insert new ContentDocumentLink(LinkedEntityId=parentId,ContentDocumentId=cv.ContentDocumentId,ShareType='V');

**使用案例**

用例是允许用户直接从对象详细信息页面附加内容,例如,帐户将有按钮说“附加内容”,这将带来上传内容页面,一旦上传(我将创建内容版本记录 - 这发生得非常好,没有错误)然后我需要将上传的内容与帐户(来自哪个请求)相关联,即创建“相关内容”记录(这里我遇到困难,尝试创建contentdocumentlink记录,但它的错误输出)。

用例只需点击一下即可将内容附加到帐户或机会,而不是用户转到内容的长时间当前流程,首先在那里上传,然后返回到帐户/ opty并再次搜索内容,然后将其附加到帐户/接触。

2 个答案:

答案 0 :(得分:2)

如您所知,内容存储在ContentDocument对象中,链接存储在ContentDocumentLink表中。

我发现http://workbench.developerforce.com对于找出这些关系非常有用。

答案 1 :(得分:1)

请参阅用户文档中的ContentDocumentLink specificationLinkedEntityId代表:

ID of the linked object. Can include Chatter users, groups, records
(any that support Chatter feed tracking including custom objects),
and Salesforce CRM Content libraries.

我认为基于该解释,您可以仅为基于Chatter的对象字段创建ContentDocumentLink,而不是为常规sObject记录或自定义对象等创建