Могу ли я получить следующий topCount с веб-службами Acumatica?

я хочу получить данные top-top, «сначала 100 и от 101 до 200 позже», существует какой-то способ получить подобное с помощью веб-сервиса на Acumatica ?, потому что я вижу только параметр API «topCount» и могу только статически количество данных.

Пожалуйста, помогите, я не знаю, возможно ли это с веб-сервисом

0

Решение

Acumatica всегда экспортирует записи через API, отсортированные в порядке возрастания по ключевым полям. Чтобы экспортировать записи в пакетном режиме, вы должны просто объединить $top параметр с дополнительным GreaterThen условие для последнего найденного ключевого поля:

http://localhost/051989/entity/Default/6.00.001/StockItem?$top=10&$filter=InventoryID gt 'CONGOLFR1'

С комбинированным $top а также $skip параметры, Acumatica всегда сначала запрашивает количество записей, указанных $top параметр, затем исключает количество записей, указанных $skip параметр от начала набора результатов:

http://localhost/051989/entity/Default/6.00.001/StockItem?$top=10$skip=5

Параметр пропуска недоступен в SOAP. Чтобы экспортировать записи в пакетах с SOAP, вы должны объединить условие LessThan для RowNumber свойство с условиями GreaterThen для последних найденных ключевых полей:

using (DefaultSoapClient client = new DefaultSoapClient())
{
client.Login("login", "password", null, null, null);
try
{
var items = client.GetList(
new StockItem
{
RowNumber = new LongSearch
{
Condition = LongCondition.IsLessThan,
Value = 10
}
},
false);

int count = items.Length;
Console.WriteLine("InventoryID | Description | ItemClass | BaseUOM | LastModified");
foreach (StockItem stockItem in items)
{
Console.WriteLine(
string.Format("{0} | {1} | {2} | {3} | {4}",
stockItem.InventoryID.Value,
stockItem.Description.Value,
stockItem.ItemClass.Value,
stockItem.BaseUOM.Value,
stockItem.LastModified.Value));
}

while (items.Length == 10)
{
StockItem filter = new StockItem
{
RowNumber = new LongSearch
{
Condition = LongCondition.IsLessThan,
Value = 10
},
InventoryID = new StringSearch
{
Condition = StringCondition.IsGreaterThan,
Value = (items[items.Length - 1] as StockItem).InventoryID.Value
}
};

items = client.GetList(filter, false);
count = count + items.Length;
foreach (StockItem stockItem in items)
{
Console.WriteLine(
string.Format("{0} | {1} | {2} | {3} | {4}",
stockItem.InventoryID.Value,
stockItem.Description.Value,
stockItem.ItemClass.Value,
stockItem.BaseUOM.Value,
stockItem.LastModified.Value));
}
}

Console.WriteLine();
Console.WriteLine(string.Format("Stock Items exported: {0}", count));
Console.WriteLine();
}
finally
{
client.Logout();
}
}
2

Другие решения

Других решений пока нет …