Busca utilizando Views do BD

É possível obter dados utilizando consultas diretas em Views de banco de dados através do serviço CRUDServiceProvider.loadView do módulo mge.

A view a ser utilizada não precisa estar cadastrada como uma entidade de dados no dicionário de dados do sistema, ou seja, pode ser qualquer view presente no banco de dados.

A exemplo de todos os serviços da plataforma, esse serviço deve ser chamado depois de realizar a autenticação, usando o serviço de autenticação, documentado em outro arquivo.

Versões compatíveis

  • Versão 3.10 a partir da release 27
  • Versão 3.11 a partir da release 14
  • Versão 3.12 a partir da release 1

Parâmetros de chamada

query

Elemento XML com campos solicitados, filtro, etc. Cada sub-elemento está detalhado no exemplo abaixo.

Dados modificados

Nenhuma informação é modificada por este serviço, pois trata-se de um serviço exclusivo para consultas.

Detalhes do HTTP

Método de requisição: POST
URL:
https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=CRUDServiceProvider.loadView

Headers HTTP:
Content-Type: text/xml;charset=ISO-8859-1
Autorization: bearerToken=[TOKEN gerado no serviço de autenticação]


Estrutura básica da requisição:

<query>
   <fields>
     	<field/>
   </fields>
   <where/>
</query>

Estrutura básica da resposta:

<records>
  	<record>
        <NOMECAMPO>valor Campo</NOMECAMPO>
        <OUTROCAMPO>123456</OUTROCAMPO>
	</record>
</records>

Exemplo de uso

Exemplo de corpo da requisição (para testar, recomenda-se remover os comentários):

<serviceRequest serviceName="CRUDServiceProvider.loadView">
	<requestBody>
<!--
O atributo viewName deve ser preenchido com o nome da VIEW da mesma forma que está definida no banco de dados, sem prefixos ou nome de schema.

O atributo orderBy é opcional e será adicionado na consulta para ordenar os dados. O texto presente neste atributo será passado diretamente (sem modificações) para a consulta.

O elemento fields é opcional, e quando não informado o sistema vai trazer todos os campos da view. O elemento field suporta tanto o nome do campo na view quanto uma expressão SQL qualquer que resolva em um valor válido de coluna

O elemento where pode ser preenchido com o trecho de filtro da query. O conteúdo do elemento será colocado diretamente (sem modificações) na consulta realizada ao banco de dados. Não há suporte a parâmetros de filtro, portanto os valores do filtro devem ser inseridos diretamente no texto, tendo atenção especial ao formato de parâmetros do tipo data, pois no SQL Server esse formato varia de versão para versão ou mesmo conforme configuração do 'locale' do banco de dados.
O alias, caso necessário, deve ser o mesmo nome da view.
-->
<query viewName="VGFFIN" orderBy="CODEMP,DTNEG">
   <fields>
     	<field>CODPARC</field>
     	<field>CODEMP</field>
     	<field>DTNEG</field>
     <!-- exemplo de campo com expressão SQL -->
     <field>(VLRDESDOB + VLRJURO) AS VLRLIQUIDO</field>
   </fields>
   <where>VGFFIN.DHBAIXA IS NULL 
          AND VGFFIN.RECDESP = 1
          AND EXISTS(
              SELECT 1 FROM TGFFIN FIN
              WHERE
              FIN.NUFIN = VGFFIN.NUFIN
          )
   </where>
</query>
	</requestBody>
</serviceRequest>

Resposta bem sucedida:

<?xml version="1.0" encoding="ISO-8859-1"?>
<serviceResponse serviceName="CRUDServiceProvider.loadView" status="1" pendingPrinting="false" transactionId="47770a03-6f69-4a43-8879-14351e8478ad">
    <responseBody>
<records>
  	<record>
    	<CODPARC>123456</CODPARC>
    	<CODEMP>1</CODEMP>
     <DTNEG>25/06/2015 15:33:21</DTNEG>
     <VLRLIQUIDO>456.25</VLRLIQUIDO>
</record>
  	<record>
    	<CODPARC>778954</CODPARC>
    	<CODEMP>1</CODEMP>
     <DTNEG>25/06/2015 00:00:00</DTNEG>
     <VLRLIQUIDO>123456.78</VLRLIQUIDO>
</record>
</records>
    </responseBody>
</serviceResponse>

Formato dos dados na resposta:

  • Campos do tipo texto sempre serão envolvidos por um CDATA[]
  • O separador de decimais será sempre o ponto ('.')
  • Campos data terão formato 'dd/MM/yyyy HH:mm:ss'. Para campos somente data, as posições relacionadas a horas, minutos e segundos serão substituídos por 00:00:00