如何在NetSuite套件会话中更新字段而不使用其内部标识给出其内部标识值

时间:2018-01-24 05:40:23

标签: c# asp.net netsuite suitetalk

我尝试使用套件会话API创建机会。在更新实体字段值时,它返回错误,因为它需要字段的内部id值,但是不可能解决内部id。

   ReflectionExtensions.SetPropertyValue(NS_OPPURTUNITY, map.Dst_Fld_Name, new RecordRef()
                                                {
                                                    internalId = "2551",
                                                    type = RecordType.customer,
                                                    typeSpecified = true
                                                });

我想摆脱那个静态id来引用实体。

2 个答案:

答案 0 :(得分:1)

据我所知,您需要内部ID通过Web服务引用任何对象。但是,您可以通过首先搜索需要引用的项目来查找内部ID。

您可以使用CustomerSearch查找客户的内部ID:

CustomerSearch custSearch = new CustomerSearch();
SearchStringField name = new SearchStringField();
name.SearchValue = "firstName";
name.operatorSpecified = true;
name.@operator = SearchStringFieldOperator.@is;

CustomerSearchBasic custBasic = new CustomerSearchBasic();
custBasic.firstName= customerEntityID;

custSearch.basic = custBasic;

// Search for the customer entity
SearchResult res = _service.search(custSearch);

//Get the internal ID of the customer
string internalID = ((Customer) (res.recordList[0])).internalId;

除了' firstName'之外,您还可以使用其他字段搜索客户。同样。检查CustomerSearchBasic对象上可用的其他字段:CustomerSearchBasic

答案 1 :(得分:0)

您还可以根据外部ID更新实体字段,但是为此您需要记住某些事项 1.您需要在创建任何记录期间设置externalID。 2.外部ID在系统中是唯一的。 3.有些记录不支持外部ID,例如“自定义列表”。

InventoryItem inventory = new InventoryItem();
inventory.externalId = "abc";
inventory.displayname = "Hello";
setPreferences();
WriteResponse writeRes = _service.update(inventory );