Exemplo usando paginação Voltar para o início

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
{
// 0: não tem mais registros; 1: tem mais registros pra buscar na página seguinte.
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
{
// Prepara o filtro: apenas produtos da empresa 46/1 e que estejam cadastrados no grupo 10-99-00-00
// Há outros filtros na estrutra, mas não são usados no exemplo.
var filtro = new ServiceWTpIntegrVendas.TWRemFiltroProduto
{
Empresa = 46,
Filial = 1,
GrupoEstoque = 10990000
};

// Configura a paginação: começa na 1a página e traz de 100 em 100 produtos
var pagina = new ServiceWTpIntegrVendas.TWRemPageable
{
Pagina = 0,
RegistrosPorPagina = 100
};

string xmlRet = string.Empty;
var extra = new WExtraInfo();
var serializer = new JavaScriptSerializer();

do
{
// Chama a função do Web Service para obter os produtos usando as configurações preparadas;
// O Token obrigatório já foi obtido em outro momento, numa chamada à função de login
ret = wsClient.GetCadProdutos(Token, filtro, ref xmlRet, pagina);

// Verifica se retornou OK
if (ret.Code == 0)
{
// Processa o xml com os produtos retornado pela função
TrataXmlProduto(xmlRet);

// Extrai as informações extras pra poder verificar se há mais registros:
extra = serializer.Deserialize<WExtraInfo>(ret.Extra);

// Se tiver mais registros, configura para obter a página seguinte
if (extra.maisRegistros != 0)
pagina.Pagina++;
}

} while (ret.Code == 0 && extra.maisRegistros != 0);
}
catch (Exception)
{

}



Exemplo 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 .
ABC71