NetSuite的。如何为当前用户选择所有附加文件(按InternalId过滤)

时间:2015-04-30 12:53:33

标签: c# netsuite

我正在使用来自网络参考com.netsuite.webservices的netsuite api的C#实现

我按名称发布过滤器fileSearch.basic(您可以看到它已注释)它工作正常。

请帮助编写功能以实现当前用户的所有附加文件。这段代码出了点问题,它没有过滤任何内容,并且显示所有文件,因为它没有任何过滤器。请帮帮我。

public static void GetFileAttachmentByCustomerId(string customerId)
    {
        using (NetSuiteService netSuiteService = GetNetSuiteService())
        {
            FileSearch fileSearch = new FileSearch();

            // this works fine (filter files by name)
            //SearchStringField nameSearchParams = new SearchStringField
            //{
            //    @operator = SearchStringFieldOperator.contains,
            //    operatorSpecified = true,
            //    searchValue = "some name",
            //};
            //fileSearch.basic = new FileSearchBasic() { name = nameSearchParams };


            // this code not filter files at all
            {
                RecordRef nsCustomerRef = new RecordRef
                {
                    internalId = customerId,
                    type = RecordType.customer,
                    typeSpecified = true,
                };
                SearchMultiSelectField shopperSearchParam = new SearchMultiSelectField
                {
                    @operator = SearchMultiSelectFieldOperator.anyOf,
                    operatorSpecified = true,
                    searchValue = new RecordRef[] { nsCustomerRef }
                };

                fileSearch.shopperJoin = new CustomerSearchBasic { internalId = shopperSearchParam };
            }

            SearchResult result = netSuiteService.search(fileSearch);

            // Get connected objects
            {
                Customer customer = GetCustomerById(netSuiteService, customerId);
                Account account = GetAccountById(netSuiteService, "301395"); //
                Folder folder = GetFolderById(netSuiteService, "3962");
            }

            File file = (File)result.recordList.First();
            byte[] fileContent = GetFileContentByInternalId(file.internalId);
        }
    }

1 个答案:

答案 0 :(得分:0)

试试这个:

        var nsCustomerRef = new RecordRef
        {
            internalId = "4",
            type = RecordType.employee,
            typeSpecified = true,
        };

        var currentUser = new SearchMultiSelectField()
        {
            operatorSpecified = true,
            @operator = SearchMultiSelectFieldOperator.anyOf,
            searchValue = new List<RecordRef>() {nsCustomerRef}.ToArray()
        };

        var fileSearchBasic = new FileSearchBasic() {owner = currentUser};
        var fileSearch = new FileSearch() { basic = fileSearchBasic };

        var result = netSuiteService.search(fileSearch);
        var file = (File)result.recordList.First();