0

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

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

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

4

2 回答 2

2

据我所知,您需要内部 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

于 2018-02-08T10:03:43.860 回答
2

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

InventoryItem inventory = new InventoryItem();
inventory.externalId = "abc";
inventory.displayname = "Hello";
setPreferences();
WriteResponse writeRes = _service.update(inventory );
于 2018-09-27T09:16:55.597 回答