A maioria das funções do Web Service da ABC71 que retornam uma lista de registros aceita uma configuração de paginação.
Ou seja, ao invés de retornar todos os registros de uma única vez, essas funções trazem os registros em blocos. Isto melhora a performance do serviço, já que exige menos processamento,
consome menos memória, usa um tráfego mais equilibrado na rede e evita que a aplicação cliente caia ao esperar muito tempo por uma resposta.
O código a seguir, em C#, exemplifica o uso do SDK com paginação para obter a lista de produtos cadastrados no ERP. Para começar,
vamos definir uma classe para receber as informações extras devolvidas pela função de paginação:
public class WExtraInfo
{
public int maisRegistros { get; set; } = 0;
}
Podemos, então, codificar a chamada da função para obter os produtos, verificar no retorno se há mais registros para buscar e tomar uma ação de acordo com esse retorno:
ServiceWTpIntegrVendas.TWRemStatus ret = null;
var wsClient = new ServiceWTpIntegrVendas.WTpIntegrVendasClient(integrVendasPort, integrVendasAddr);
try
{
var filtro = new ServiceWTpIntegrVendas.TWRemFiltroProduto
{
Empresa = 46,
Filial = 1,
GrupoEstoque = 10990000
};
var pagina = new ServiceWTpIntegrVendas.TWRemPageable
{
Pagina = 0,
RegistrosPorPagina = 100
};
string xmlRet = string.Empty;
var extra = new WExtraInfo();
var serializer = new JavaScriptSerializer();
do
{
ret = wsClient.GetCadProdutos(Token, filtro, ref xmlRet, pagina);
if (ret.Code == 0)
{
TrataXmlProduto(xmlRet);
extra = serializer.Deserialize<WExtraInfo>(ret.Extra);
if (extra.maisRegistros != 0)
pagina.Pagina++;
}
} while (ret.Code == 0 && extra.maisRegistros != 0);
}
catch (Exception)
{
}

Na estrutura
TWRemPageable, que configura a paginação de registros, a primeira página é a de número 0 (zero).
Por padrão, a quantidade máxima de registros retornados é 200 e o valor máximo permitido para essa configuração é de 300 registros .