gpt4 book ai didi

netsuite - 如何使用多个术语创建 NetSuite SuiteTalk 搜索?

转载 作者:行者123 更新时间:2023-12-03 20:21:42 38 4
gpt4 key购买 nike

如何创建一个 SuiteTalk (NetSuite web api) 搜索查询,指定多个搜索词来指示逻辑 OR 运算符?

例如,我想检索其创建或上次修改日期在特定范围内的 TimeBill 记录。这是我的代码,适用于单个搜索词。只需添加另一个搜索词即可创建逻辑 AND 运算。

    /// <summary>
/// Return the list of time bills whose last modified date is within
/// the indicated date range.
/// </summary>
/// <param name="from">Required from date</param>
/// <param name="to">Optional to date</param>
/// <returns>List of time bills</returns>
public IEnumerable<TimeBill> GetTimeBills(DateTime from, DateTime to)
{
_log.Debug(String.Format("Enter TimeBill(DateTime from='{0}', DateTime to='{1}')", from, to));

// Build search criteria.
TimeBillSearch search = new TimeBillSearch();
TimeBillSearchBasic searchBasic = new TimeBillSearchBasic();
SearchDateField searchDateField = new SearchDateField();
searchDateField.@operator = SearchDateFieldOperator.within;
searchDateField.operatorSpecified = true;
searchDateField.searchValue = from;
searchDateField.searchValueSpecified = true;
searchDateField.searchValue2 = to;
searchDateField.searchValue2Specified = true;
searchBasic.dateCreated = searchDateField;
search.basic = searchBasic;

return this.Get<TimeBill>(search);
}

/// <summary>
/// Perform a paged search and convert the returned record to the indicated type.
/// </summary>
private IEnumerable<T> Get<T>(SearchRecord searchRecord)
{
_log.Debug("Enter Get<T>(SearchRecord searchRecord)");

// This is returned.
List<T> list = new List<T>();

// The suitetalk service return this.
SearchResult result = null;

using (ISuiteTalkService service = SuiteTalkFactory.Get<SuiteTalkService>())
{
do
{
// .search returns the first page of data.
if (result == null)
{
result = service.search(searchRecord);
}
else // .searchMore returns the next page(s) of data.
{
result = service.searchMoreWithId(result.searchId, result.pageIndex + 1);
}

if (result.status.isSuccess)
{
foreach (Record record in result.recordList)
{
if (record is T)
{
list.Add((T)Convert.ChangeType(record, typeof(T)));
}
}
}
}
while (result.pageIndex < result.totalPages);
}
return list;
}

最佳答案

根据 NetSuite 用户社区(论坛),我认为目前这不可能(至少它没有出现在 SuiteTalk/Web 服务的 WSDL 中):https://usergroup.netsuite.com/users/showthread.php?t=29818

但是,您可以通过使用 nlobjSearchFilter 方法 setLeftParens()、setRightParens() 和 setOr()(如您所推测的,逻辑“AND "是存在多个过滤器时的默认行为)。

动态创建的已保存搜索(我知道这里的术语令人困惑)也可以保存和加载以供以后重用。因此,您可以通过让您的 Web 服务代码调用保存的搜索并检索结果来利用 NetSuite 服务器上动态创建的保存的搜索,但仍然使所有内容都是动态的(没有硬编码的搜索过滤器/值)。

正如在论坛上提到的,您还可以自己执行多个搜索并将结果拼接在一起(在您的 SuiteTalk C#/Java 等代码中)。

关于netsuite - 如何使用多个术语创建 NetSuite SuiteTalk 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900289/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com