#c# #netsuite
#c# #netsuite
Вопрос:
Я пытаюсь получить список файлов в определенной папке в картотеке. Когда я выполняю поиск, мне выдаются все файлы в указанной папке и все папки под этой папкой. Я пробовал с FileSearchBasic
и FileSearchAdvanced
, оба дают мне одинаковые результаты.
Есть ли способ получить только файлы с указанным идентификатором папки?
var search = new FileSearchBasic
{
folder = new SearchMultiSelectField
{
@operator = SearchMultiSelectFieldOperator.anyOf,
@operatorSpecified = true,
searchValue = new[] { new RecordRef
{
internalId = "1234"
}}
}
};
var result = ns.search(search);
if (result.status.isSuccess)
{
foreach (var record in result.recordList)
{
if (record is File file)
{
Console.WriteLine($"{file.folder.internalId} - {file.name}");
}
}
}
Этот код приводит к следующему списку, где папка 1236 является подпапкой папки 1234
1234 - lodash.js
1234 - dt.timer.js
1234 - dt.search.js
1234 - dt.customer.js
1234 - dt.safeExecute.js
1236 - processRawLocationData.js
Ответ №1:
Я смог получить только файлы в указанной папке, выполнив a FolderSearchAdvanced()
и используя file join вместо a FileSearchAdvanced()
. Это имеет смысл, поскольку вы также должны делать это таким образом в SuiteScript.
Все еще открыт для альтернативных методов.
var search = new FolderSearchAdvanced()
{
criteria = new FolderSearch()
{
basic = new FolderSearchBasic()
{
internalId = new SearchMultiSelectField()
{
@operator = SearchMultiSelectFieldOperator.anyOf,
searchValue = new[] { searchValue },
operatorSpecified = true
},
}
},
columns = new FolderSearchRow
{
basic = new FolderSearchRowBasic()
{
internalId = new[] { new SearchColumnSelectField() },
name = new [] { new SearchColumnStringField() }
},
fileJoin = new FileSearchRowBasic()
{
internalId = new[] { new SearchColumnSelectField() },
name = new[] { new SearchColumnStringField() },
modified = new[] { new SearchColumnDateField() },
documentSize = new[] { new SearchColumnLongField() }
}
}
};
var results = ns.search(search);
if (results.status.isSuccess)
{
foreach (var result in results.searchRowList)
{
if (result is FolderSearchRow row)
{
var fileId = row.fileJoin.internalId[0].searchValue.internalId;
var fileName = row.fileJoin.name[0].searchValue;
Console.WriteLine($"{fileId} - {fileName}");
}
}
}