Как обновить поле в разговоре NetSuite без его внутреннего идентификатора с указанием значения внутреннего идентификатора

Я попытался создать возможность с помощью Suite Talk API. при обновлении значения поля сущности он возвращает ошибку, потому что ему нужно внутреннее значение идентификатора поля, но не представляется возможным обратиться к внутреннему идентификатору.

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

Я хочу избавиться от этого статического идентификатора, чтобы ссылаться на сущность.

2 ответа

Вы также можете обновить поле сущности на основе внешнего идентификатора, но для этого вам нужно запомнить некоторые вещи. 1. Вам необходимо установить externalID при создании любой записи. 2. Внешний идентификатор уникален для всей системы. 3. Некоторые записи не поддерживают внешний идентификатор, такой как пользовательский список.

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

Насколько я знаю, вам нужен внутренний идентификатор для ссылки на любой объект через веб-сервисы. Тем не менее, вы можете найти внутренний идентификатор, сначала выполнив поиск элемента, на который нужно сослаться.

Вы можете использовать CustomerSearch, чтобы найти внутренний идентификатор вашего клиента:

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

Другие вопросы по тегам