4

我正在尝试通过其 WebService 平台 (SuiteTalk) 创建与 NetSuite 的集成,但在使用 CustomField 保存客户时遇到问题。

这是我的代码:

        StringCustomFieldRef customField = new StringCustomFieldRef();
        customField.setValue("9999999");
        customField.setInternalId("custentity_xx_xxx_xxx");

        CustomFieldRef[] customFields = new CustomFieldRef[1];
        customFields[0] = customField;

        Customer customer = new Customer();
        customer.setSubsidiary(subs);
        customer.setIsPerson(true);
        customer.setFirstName("Joe");
        customer.setLastName("Silver");
        customer.setCustomFieldList(customFields);

        _port.add(customer);

无论如何,它总是相同的响应:

[Fault Message]: org.xml.sax.SAXException: {urn:core_2016_1.platform.webservices.netsuite.com}CustomFieldRef is an abstract type and cannot be instantiated

我所做的与帮助中心的文档和示例中的完全一样。

有什么想法吗?

谢谢。

4

3 回答 3

1

我使用 Python SDK 进行查找

custom_field = self.ns_client.SearchStringCustomField(searchValue='China', scriptId="cust_scriptId", operator='contains')
customFieldList = self.ns_client.SearchCustomFieldList(customField)
basic_search = self.ns_client.basic_search_factory('Item',
customFieldList=customFieldList)
paginated_search = PaginatedSearch(client=self.ns_client,
                                           type_name='Item',
                                           basic_search=basic_search,
                                           pageSize=20)
return self._paginated_search_to_generator(paginated_search=paginated_search)

也许您可以使用数据进行查询

<soap-env:Body>
        <ns0:search
            xmlns:ns0="urn:messages_2019_1.platform.webservices.netsuite.com">
            <ns0:searchRecord
                xmlns:ns4="urn:accounting_2019_1.lists.webservices.netsuite.com"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns4:ItemSearch">
                <ns1:basic
                    xmlns:ns1="urn:accounting_2019_1.lists.webservices.netsuite.com">
                    <ns2:customFieldList
                        xmlns:ns2="urn:common_2019_1.platform.webservices.netsuite.com">
                        <ns3:customField
                            xmlns:ns3="urn:core_2019_1.platform.webservices.netsuite.com"
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" scriptId="custitem_origin" operator="contains" xsi:type="ns3:SearchStringCustomField">
                            <ns3:searchValue>China</ns3:searchValue>
                        </ns3:customField>
                    </ns2:customFieldList>
                </ns1:basic>
            </ns0:searchRecord>
        </ns0:search>
    </soap-env:Body>
于 2021-03-03T09:44:46.297 回答
0

CustomFieldList 语法在 2014_1 中发生了变化。必须在元素的scriptId属性而不是示例中的字段上指定 customField 的 ID。<customField/>internalId

ruby netsuite 绑定会根据所使用的 API 版本正确处理生成自定义字段列表。如果您仍然遇到 Java 库问题,请使用 ruby​​ 绑定生成 XML,以便轻松识别 Java 绑定可能出错的地方。

于 2016-07-18T12:22:39.487 回答
0

经过几天的摆弄,我发现 Apache Axis 在抽象类型方面存在问题,除非您可以自定义后端的行为方式(NS 不是这种情况),否则您无能为力。问题是服务器在传递数组时不返回实现类类型而是基类类型。但是,您可以以不同的方式构建 WSDL 以将所有数组包装到列表中,然后这些列表将按照示例正常工作。最值得注意的是,-w and -a旗帜具有魔力。

这是我用来构建 WSDL 的命令:

java -classpath ./axis.jar:commons-logging-1.0.4.jar:commons-discovery-0.2.jar:jaxrpc.jar:wsdl4j-1.5.1.jar:axis-ant.jar:saaj.jar:log4j-1.2.8.jar:activation.jar:javax.mail.jar org.apache.axis.wsdl.WSDL2Java --timeout 180 netsuite.wsdl.xml -a -w -o nswsdlmaster

此外,为了让生活更轻松,制作一个项目,包括所有依赖项并从中构建一个 jar。

于 2016-07-19T09:24:29.773 回答