C# 如何使用TransactionSearch进行搜索?

C# 如何使用TransactionSearch进行搜索?,c#,netsuite,C#,Netsuite,如何查找具有供应商付款内部id的供应商付款(交易)? 我很难弄清楚事务搜索是如何工作的 下面是我的代码:它返回成功,但没有结果 using (var serviceClient = new ServiceClient(token)) { var tranSearch = new TransactionSearchAdvanced(); var recordRefs = new List<RecordRef>();

如何查找具有供应商付款内部id的供应商付款(交易)? 我很难弄清楚事务搜索是如何工作的

下面是我的代码:它返回成功,但没有结果

using (var serviceClient = new ServiceClient(token))
        {
            var tranSearch = new TransactionSearchAdvanced();

            var recordRefs = new List<RecordRef>();
            recordRefs.Add(new RecordRef()
            {
                internalId = @"723212",
                type = RecordType.vendorPayment,
                typeSpecified = true
            });

            var types = new List<string>();
            types.Add(@"_vendorPayment");
            tranSearch.criteria = new TransactionSearch()
            {
                basic = new TransactionSearchBasic()
                {
                    internalId = new SearchMultiSelectField()
                    {
                        @operator = SearchMultiSelectFieldOperator.anyOf,
                        operatorSpecified = true,
                        searchValue = recordRefs.ToArray()
                    },
                    type = new SearchEnumMultiSelectField()
                    {
                        @operator = SearchEnumMultiSelectFieldOperator.anyOf,
                        operatorSpecified = true,
                        searchValue = types.ToArray()
                    }                        
                }                    

            };                

            var result = serviceClient.search(tranSearch);



        }
使用(var serviceClient=newserviceclient(令牌))
{
var tranSearch=新事务搜索高级();
var recordRefs=新列表();
添加(新的RecordRef()
{
internalId=@“723212”,
类型=RecordType.vendorPayment,
指定的类型=真
});
变量类型=新列表();
类型。添加(@“卖方付款”);
tranSearch.criteria=新事务搜索()
{
basic=新事务搜索basic()
{
internalId=新的SearchMultiSelectField()
{
@运算符=SearchMultiSelectFieldOperator.anyOf,
运算符指定为true,
searchValue=recordRefs.ToArray()
},
类型=新的SearchEnumMultiSelectField()
{
@运算符=SearchEnumMultiSelectFieldOperator.anyOf,
运算符指定为true,
searchValue=types.ToArray()
}                        
}                    
};                
var result=serviceClient.search(tranSearch);
}

搜索结果返回成功,但recordlist或searchrowlist中没有记录

TransactionSearchAdvanced()
想象成UI中保存的搜索。您需要指定要使用的条件和要返回的列。在运行搜索之前,请添加以下代码以指定要返回的列。您可能还需要为主线添加一个条件,即
true
,或者每个事务行将得到一个结果,而不是每个事务一个结果

tranSearch.columns = new TransactionSearchRow()
{
    basic = new TransactionSearchRowBasic()
    {
        tranId = new[] {new SearchColumnStringField()}
    }
};

var result = ns.search(tranSearch);

if (result.status.isSuccess)
{
    foreach (var rowList in result.searchRowList)
    {
        if (rowList is TransactionSearchRow row)
        {
            var tranId = row.basic.tranId[0].searchValue;
            var total = row.basic.total[0].searchValue;
            Console.WriteLine($"{tranId} - {total}");
        }
    }
}
最简单的方法:由于您有内部ID,因此可以使用
TransactionSearchBasic()
获取整个记录,如下所示:

var search = new TransactionSearchBasic()
{
    type = new SearchEnumMultiSelectField()
    {
        @operator = SearchEnumMultiSelectFieldOperator.anyOf,
        searchValue = new[] { "_vendorPayment" },
        operatorSpecified = true,
    },
    internalId = new SearchMultiSelectField()
    {
        @operator = SearchMultiSelectFieldOperator.anyOf,
        searchValue = new[] { new RecordRef { internalId = "723212" } },
        operatorSpecified = true
    }
};

var results = ns.search(search);

foreach (var result in results.recordList)
{
    if (result is VendorPayment vendorPayment)
    {
        Console.WriteLine(vendorPayment.tranId);
    }
}

谢谢你的帮助,但我仍然收到0张唱片。是否需要设置某种权限?我正在使用令牌身份验证。对我来说,这听起来不像是权限。如果您没有对vendorPayment记录的权限,您将收到一条类似“您的角色没有授予您查看此页面的权限”的消息。如果您没有收到任何结果,是否可能是您的内部ID错误?如果输入了错误的内部id,则搜索成功,但没有返回任何行。app/accounting/transactions/vendpymt.nl?id=723212&whence=。此供应商付款的内部id不是723212吗?我打开了内部id,所以当我去付账时。它在账单支付记录旁边有一个内部id列表。我还使用url中的id。除非我弄错了,但账单付款不是等于供应商付款吗?是的。这是我的内部身份证,所以我没拿到。看起来我应该能够根据内部id获取供应商付款记录,但没有记录返回。有趣的是,如果我使用没有特定内部id的_vendorBill,我可以取回1000条记录。这就是为什么我认为需要设置某种许可。