如果您导航到帐户/联系人/自定义对象,我们确实有一个相关列表"相关内容"(如果启用了内容并将相关列表添加到页面布局中)。
我的问题是,这些"相关内容"记录是否已存储?在哪个对象中?
使用apex,我可以将文件上传到内容版本,但无法创建或找到存储"相关内容"信息的对象。
更新
尝试创建一个链接以显示在帐户的"相关内容"部分,但没有成功。收到错误"Insert失败。行0上的第一个异常;第一个错误:FIELD_IINTEGRITY_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');
**用例**
用例是允许用户直接从对象详细信息页面附加内容,例如说帐户将有按钮说附加内容,这将带来上传内容页面,一旦上传(我将创建contentversion记录-这是完美的,没有错误),然后我需要将上传的内容与帐户(从该帐户发起请求)相关联,即创建"相关内容"记录(在这里我面临困难,试图创建contentdocumentlink记录,但它出错了)。
用例只是点击一下将内容附加到帐户或机会,而不是长时间的当前过程,用户先转到内容,然后上传到那里,然后返回到帐户/opty,再次搜索内容,然后将其附加到帐户/联系人。
如您所知,内容存储在ContentDocument
对象中,链接存储在ContentDocumentLink
表中。
我发现http://workbench.developerforce.com对于弄清楚这些关系真的很有用。
请参阅用户文档中的ContentDocumentLink规范,LinkedEntityId
表示:
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记录或自定义sObject等创建。