Estou com uma tarefa aqui de exportar centenas de tabelas adicionais e queria implementar algo para fazer isso. Primeiro estou montando as chamadas. Analisei as chamadas que a Sankhya faz e cheguei até o serviço “TelasAdicionais.exportarEntidade”, algo como isso:
Carrega as tabelas adicionais usando o CRUDServiceProvider.loadRecords. Aqui eu apenas adaptei de XML para JSON:
// https://<url skw>/mge/service.sbr?application=CadastroTelasAdicionais&resourceID=br.com.sankhya.core.cfg.TelasPersonalizadas&serviceName=CRUDServiceProvider.loadRecords&outputType=json
{
"serviceName": "CRUDServiceProvider.loadRecords",
"requestBody": {
"dataSet": {
"rootEntity": "Instancia",
"includePresentationFields": "S",
"parallelLoader": "true",
"offsetPage": "0",
"criteria": {
"expression": {
"$": "(this.NUINSTANCIAPAI is null) AND (this.ADICIONAL = 'S' AND this.NUINSTANCIAEXT IS NULL AND this.TIPOFORM IS NULL)"
}
},
"entity": {
"fieldset": {
"list": "NUINSTANCIA,NOMEINSTANCIA,DESCRINSTANCIA,NOMETAB,ADICIONAL,EXPRESSAO,RESOURCEID,DESCRTELA,CATEGORIA"
}
}
}
}
}
Depois chama o TelasAdicionais.exportarEntidade passando o nro da instância e sua categoria:
// http://<skw url>/mge/service.sbr?serviceName=TelasAdicionais.exportarEntidade&application=CadastroTelasAdicionais&resourceID=br.com.sankhya.core.cfg.TelasPersonalizadas
<serviceRequest serviceName="TelasAdicionais.exportarEntidade">
<requestBody>
<entity nuInstancia="<id instancia>" categoria="<categoria>/>
<clientEventList>
<clientEvent>br.com.sankhya.mgecore.help.tela.adicional.existente</clientEvent>
<clientEvent>confirmacao.conversao.view.com.registros</clientEvent>
<clientEvent>recurso.existente.na.importacao</clientEvent>
</clientEventList>
</requestBody>
</serviceRequest>
E esse último serviço devolve só a referência do arquivo e não descobri como baixa-lo, alguém sabe se é possível?
<?xml version="1.0" encoding="ISO-8859-1"?>
<serviceResponse serviceName="TelasAdicionais.exportarEntidade" status="1" pendingPrinting="false" transactionId="...">
<responseBody>
<file name="..." />
</responseBody>
</serviceResponse>