Самый эффективный метод разбора записей с несколькими соединениями в результатах поиска в NetSuite.

Мне нужно извлечь данные из сохраненного поиска и поместить каждый столбец в CSV-файл. Этот поиск обычно занимает более 300 строк, и мне нужно разобрать каждую запись в отдельный файл csv (поэтому необходимо создать более 300 файлов csv)

Со всеми предыдущими поисками я делал это с небольшим количеством требуемых столбцов (менее 10) и минимальным количеством соединений, поэтому эффективность не была большой проблемой.

Теперь у меня есть проект с 42 полями в сохраненном поиске. Поиск строится на основе заказа на продажу и включает соединения с записями клиентов и записями товаров.

Поиск широко использует настраиваемые поля, а также формулы.

Как мне наиболее эффективно пройти через все это?

Я думаю, что самый простой способ (и, возможно, самый быстрый) - это обернуть его в

foreach (TransactionSearchRow row in searchResult.searchRowList)
{
     using (var sw = System.IO.File.CreateText(path+filename))
     {
      ....
     }
 }

блокировать, но я хочу попытаться избежать

 if (customFieldRef is SelectCustomFieldRef)
 {
     SelectCustomFieldRef selectCustomFieldRef = (SelectCustomFieldRef)customFieldRef;
     if (selectCustomFieldRef.internalId.Equals("custom_field_name"))
     {
       ....
     }
  }

так как я ожидаю, что этот код станет чрезмерно длинным с этим процессом. Так что любые идеи приветствуются.


person Robert H    schedule 28.08.2012    source источник


Ответы (1)


Используя сгенерированный NetSuite WSDL API, нет альтернативы вложенным тестам типа/имени при чтении настраиваемых полей. Это просто отстой, и с этим нужно жить.

Вы можете перейти к ручному SOAP и самостоятельно проанализировать ответ XML. Для меня это звучит как пытка, но с помощью нескольких вспомогательных функций вы могли бы сделать процесс чтения пользовательских полей намного более логичным.

Другой альтернативой было бы полностью отказаться от SuiteTalk и выполнить поиск в RESTlet SuiteScript. API JavaScript имеет гораздо более простой и прямой доступ к настраиваемым полям, чем API SOAP. Вы можете выполнить любой объем предварительной обработки на стороне сервера, прежде чем возвращать данные (которые могут быть в формате JSON, XML, обычный текст или даже окончательный CSV) вызывающему приложению.

person Noah Yetter    schedule 10.10.2012
comment
Спасибо за ответ, я так и думал и просто смирился. - person Robert H; 10.10.2012