Получить список файлов в определенной папке Netsuite - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь получить список файлов в определенной папке в картотеке. Когда я выполняю поиск, мне выдаются все файлы в указанной папке и все папки в этой папке. Я пробовал с 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 Ответ

1 голос
/ 22 апреля 2019

Мне удалось получить только файлы в указанной папке, выполнив FolderSearchAdvanced() и используя объединение файлов, а не 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}");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...