如何查询自定义二进制字段值?已知CustomField信息关联表查询及字段返回问题
自定义二进制字段查询及关联表字段包含方案
一、查询自定义二进制字段的值
二进制/文档类型的自定义字段(对应fieldvaluetype=Document)不存储原始二进制内容,仅保存文件的内部ID引用,需分两步获取实际内容:
- 获取字段关联的文件ID:通过记录查询(Saved Search、REST API或SuiteScript)拿到该字段的值,这个值就是文件的
internalid。- SuiteScript示例:
const rec = record.load({type: 'customer', id: 123}); const fileId = rec.getValue({fieldId: 'customfield_my_binary_field'}); - REST API示例:
GET /record/v1/customer/123?fields=customfield_my_binary_field
- SuiteScript示例:
- 通过文件ID获取二进制内容:用文件ID调用文件接口提取实际内容。
- SuiteScript示例:
const fileObj = file.load({id: fileId}); const binaryContent = fileObj.getContents(); // 返回base64编码的内容 - REST API示例:
该请求会直接返回二进制文件的原始内容。GET /record/v1/file/{fileId}?media=true
- SuiteScript示例:
二、关联表查询中包含指定自定义字段
已知CustomField的scriptid和关联表信息后,需根据查询方式明确字段的完整引用路径:
- Saved Search场景:
- 添加关联表的连接条件(比如从交易表关联客户表),在「结果」栏目中找到关联表对应的自定义字段(格式通常为
[关联表名].customfield_[scriptid]),勾选加入结果集即可。 - 注意:Document类型字段在Saved Search结果中仅显示文件的内部ID或名称,不会返回二进制内容。
- 添加关联表的连接条件(比如从交易表关联客户表),在「结果」栏目中找到关联表对应的自定义字段(格式通常为
- REST API查询场景:
- 直接在
fields参数中指定字段的完整路径,比如从交易表查询关联客户的自定义字段:GET /record/v1/transaction?fields=tranid,entity.customfield_my_cust_field - 若需要展开该字段的详细元数据(比如文件名称、存储路径),可使用
expand参数:GET /record/v1/transaction?expand=entity.customfield_my_doc_field
- 直接在
三、关于fieldvaluetype=Document导致字段不返回的问题
是的,这就是你遇到部分字段未返回的核心原因:
Document类型的自定义字段属于引用型字段,而非文本、数值这类普通标量值类型,默认的列表查询(Saved Search或REST API)不会自动包含这类字段,必须显式指定要获取该字段,才会返回其引用的文件ID或元数据。- 即使显式指定,返回的也只是文件的引用信息,而非二进制内容,需要额外调用文件接口获取实际数据。
内容的提问来源于stack exchange,提问作者TrueWill
相关产品推荐
相关产品推荐

