NetSuite Web API - Как вернуть / заполнить массив customFieldList для заказа клиента из объединенного поиска? - PullRequest
0 голосов
/ 03 мая 2018

В настоящее время я выполняю поиск SuiteTalk через C #, который объединяет несколько таблиц, одна из которых предназначена для заказов на продажу. При выполнении типичного GET для записи SalesOrder свойство customFieldList заполняется массивом пользовательских полей транзакций / и т. Д. Мне интересно, как получить то же самое при выполнении поиска, как:

SearchResult searchResult = Client.Service.search(new TransactionSearchAdvanced()
{
    criteria = new TransactionSearch()
    {
        basic = new TransactionSearchBasic()
        {
            type = new SearchEnumMultiSelectField()
            {
                @operator = SearchEnumMultiSelectFieldOperator.anyOf,
                operatorSpecified = true,
                searchValue = new String[] { "_salesOrder" },
            },
            lastModifiedDate = new SearchDateField()
            {
                @operator = SearchDateFieldOperator.after,
                operatorSpecified = true,
                searchValue = fromLastModifiedDateTime.ToUniversalTime(),
                searchValueSpecified = true
            }
        },
    },
    columns = new TransactionSearchRow()
    {
        basic = new TransactionSearchRowBasic()
        {
            internalId = new SearchColumnSelectField[] { new SearchColumnSelectField() },
            tranId = new SearchColumnStringField[] { new SearchColumnStringField() },
            tranDate = new SearchColumnDateField[] { new SearchColumnDateField() },
            dateCreated = new SearchColumnDateField[] { new SearchColumnDateField() },
            item = new SearchColumnSelectField[] { new SearchColumnSelectField() },
            quantity = new SearchColumnDoubleField[] { new SearchColumnDoubleField() },
            lastModifiedDate = new SearchColumnDateField[] { new SearchColumnDateField() },
            email = new SearchColumnStringField[] { new SearchColumnStringField() },
            //customFieldList = new SearchColumnCustomField[] { },
        },
        itemJoin = new ItemSearchRowBasic()
        {
            itemId = new SearchColumnStringField[] { new SearchColumnStringField() },
            type = new SearchColumnEnumSelectField[] { new SearchColumnEnumSelectField() },
        },
        customerJoin = new CustomerSearchRowBasic()
        {
            internalId = new SearchColumnSelectField[] { new SearchColumnSelectField() },
            billAddress = new SearchColumnStringField[] { new SearchColumnStringField() },
            companyName = new SearchColumnStringField[] { new SearchColumnStringField() },
            phone = new SearchColumnStringField[] { new SearchColumnStringField() },
            email = new SearchColumnStringField[] { new SearchColumnStringField() },
        },
        customSearchJoin = new CustomSearchRowBasic[] 
        {

        },
    }
});

Свойство, которое я хочу заполнить, закомментировано в объекте TransactionSearchRowBasic: // customFieldList = new SearchColumnCustomField [] {},

Есть идеи? Заранее спасибо!

1 Ответ

0 голосов
/ 07 мая 2018

Операция поиска не возвращает столько информации, сколько операция GET в веб-службах SuiteTalk.

Для каждой записи, которая возвращается в вашем SearchResult, используйте internalId или номер документа, чтобы получить эту запись. Это должно включать ваши настраиваемые поля.

NetSuiteService _service = new NetSuiteService();
ReadResponse res = _service.get(new RecordRef { internalId = internalID, type = RecordType.salesOrder, typeSpecified = true });
...