使用NetSuite PHP Toolkit 2022_2无法设置自定义记录字段值
NetSuite PHP Toolkit 2022_2 创建自定义记录字段值无法设置问题解决
我正尝试使用NetSuite PHP Toolkit 2022_2创建自定义记录,该记录包含以下字段:
- List/Record类型字段 - Item
- List/Record类型字段 - Supplier
- 自由文本字段 - Special Notes
无论如何操作,都无法为该自定义记录设置字段值,创建出的记录字段始终为空,尽管代码中已设置对应值。尝试过文档示例及谷歌搜索到的解决方案,耗时数小时仍未解决,寻求帮助。
错误示例代码
示例1
$service = new NetSuiteService(); $customRecord = new CustomRecord(); $customRecord->recType = new RecordRef(); $customRecord->recType->internalId = "244"; $customRecord->fields = new CustomFieldList(); $itemField = new StringCustomFieldRef(); $itemField->value = "2167"; $itemField->internalId = "custrecord_item"; $customRecord->fields->customField[] = $itemField; $supplierField = new StringCustomFieldRef(); $supplierField->value = "1221"; $supplierField->internalId = "custrecord_supplier"; $customRecord->fields->customField[] = $supplierField; $addRequest = new AddRequest(); $addRequest->record = $customRecord; $addResponse = $service->add($addRequest);
示例2
// Create a object for lab name in netsuite $itemField = new SelectCustomFieldRef(); $itemField->value = new ListOrRecordRef(); $itemField->value->internalId = '2167'; // your input $itemField->internalId = "custrecord_item"; // internal id of the input in Netsuite $labCustomRecord = new CustomRecord(); $labCustomRecord->recType = new RecordRef(); $labCustomRecord->recType->internalId = "244"; // internal id $labCustomRecord->customFieldList = new CustomFieldList(); $labCustomRecord->customFieldList->customField = $itemField; $addRequest = new AddRequest(); $addRequest->record = $labCustomRecord; $addResponse = $service->add($addRequest);
问题根源与修复方案
字段类型不匹配
List/Record类型字段(Item、Supplier)必须使用SelectCustomFieldRef,示例1中误用StringCustomFieldRef导致值无法被识别;自由文本字段需用StringCustomFieldRef对应Special Notes。字段列表属性名错误
NetSuite PHP Toolkit中自定义字段列表的正确属性名是customFieldList,示例1中用fields属于属性名错误,这是核心问题。多字段赋值格式错误
添加多个字段时,需将customField作为数组赋值,避免覆盖已添加的字段。
正确代码示例
$service = new NetSuiteService(); // 初始化自定义记录对象 $customRecord = new CustomRecord(); $customRecord->recType = new RecordRef(); $customRecord->recType->internalId = "244"; // 自定义记录类型的内部ID $customRecord->customFieldList = new CustomFieldList(); // 处理Item字段(List/Record类型) $itemField = new SelectCustomFieldRef(); $itemField->internalId = "custrecord_item"; // 字段内部ID $itemField->value = new ListOrRecordRef(); $itemField->value->internalId = "2167"; // Item记录的内部ID $customRecord->customFieldList->customField[] = $itemField; // 处理Supplier字段(List/Record类型) $supplierField = new SelectCustomFieldRef(); $supplierField->internalId = "custrecord_supplier"; // 字段内部ID $supplierField->value = new ListOrRecordRef(); $supplierField->value->internalId = "1221"; // Supplier记录的内部ID $customRecord->customFieldList->customField[] = $supplierField; // 处理Special Notes字段(自由文本类型) $notesField = new StringCustomFieldRef(); $notesField->internalId = "custrecord_special_notes"; // 字段内部ID $notesField->value = "这里是特殊备注内容"; $customRecord->customFieldList->customField[] = $notesField; // 执行添加请求 $addRequest = new AddRequest(); $addRequest->record = $customRecord; $addResponse = $service->add($addRequest); // 检查响应结果 if (!$addResponse->writeResponse->status->isSuccess) { echo "创建失败:" . implode(", ", array_map(function($e) { return $e->message; }, $addResponse->writeResponse->status->statusDetail)); } else { echo "记录创建成功,内部ID:" . $addResponse->writeResponse->baseRef->internalId; }
额外检查点
- 确认自定义字段的内部ID完全正确(区分大小写,需与NetSuite后台一致)。
- 验证Item和Supplier的内部ID有效,确保这些记录在NetSuite中存在且当前账号有权限访问。
- 启用NetSuite的Web服务日志(路径:设置 > 集成管理 > Web服务日志),查看请求/响应XML内容,定位具体错误。
内容的提问来源于stack exchange,提问作者Aleksandar Đokić
相关产品推荐
相关产品推荐

