Boa tarde pessoal!
Hoje me deparei com a necessidade de consumir o wsReport e encontrei esta publicação útil.
No entanto, observei que a documentação da Totvs no link: Web Service do RM Reports no Fluig - Linha RM - TDN está incorreta. O método generateReport
espera receber seis parâmetros, conforme descrito abaixo:
generateReport(codColigada, idRelatorio, filtro, param, nomeArquivo, contexto);
Ao tentar fazer uma chamada sem especificar os seis parâmetros necessários, um erro é retornado. O erro indica o seguinte: Ocorreu um erro ao salvar dados no RM: InternalError: Can’t find method com.sun.proxy.$Proxy2175.generateReport(number,number,string,java.lang.String,string).
Segue o exemplo citado pelo @Afonso com esse ajuste simples.
function createDataset(fields, constraints, sortFields) {
var newDataset = DatasetBuilder.newDataset();
var ARQUIVO = "";
newDataset.addColumn("HASHARQUIVO");
var ARQUIVO = geraRelatorio();
newDataset.addRow(new Array(ARQUIVO));
return newDataset;
}
function geraRelatorio(){
var usuario = "xxxxx";
var senha = "xxxxx";
try{
var authService = getWebService("wsReport", "com.totvs.WsReport", usuario, senha, "com.totvs.IwsReport");
var resultado = authService.getReportInfo(0,0); //coligada // id relatorio
log.dir(resultado);
var filtro = resultado.string.get(0);
log.dir(filtro)
var param = resultado.string.get(1);
log.dir(param)
var GUID = authService.generateReport(0,0, filtro, param, 'teste.pdf','');
var offset = 0;
var len = parseInt(authService.getGeneratedReportSize(GUID));
var result = authService.getFileChunk(GUID, offset, len);
return result;
} catch (e){
if (e == null) e = "Erro desconhecido!";
var mensagemErro = "Ocorreu um erro ao salvar dados no RM: " + e;
return mensagemErro;
}
}
function getWebService(Nome_Servico, Caminho_Servico, Usuario, Senha, Autenticacao){
var dataServerService = ServiceManager.getServiceInstance(Nome_Servico);
if(dataServerService == null){
throw "Servico nao encontrado: " + Nome_Servico;
}
var serviceLocator = dataServerService.instantiate(Caminho_Servico);
if(serviceLocator == null){
throw "Instancia do servico nao encontrada: " + Nome_Servico + " - " + Caminho_Servico;
}
var service = serviceLocator.getRMIwsReport();
if(service == null){
throw "Instancia do dataserver do invalida: " + Nome_Servico + " - " + Caminho_Servico;
}
var serviceHelper = dataServerService.getBean();
if(serviceHelper == null){
throw "Instancia do service helper invalida: " + Nome_Servico + " - " + Caminho_Servico;
}
var authService = serviceHelper.getBasicAuthenticatedClient(service, Autenticacao , Usuario, Senha);
if(serviceHelper == null){
throw "Instancia do auth service invalida: " + Nome_Servico + " - " + Caminho_Servico;
}
return authService;
}
Já solicitei a totvs para corrigir a documentação.
Espero que tenha ajudado.