Como exportar os dados de um relatório que não usa SimpleLayout

eNesse artigo iremos mostrar o uso do evento onGetDataExporter, que serve para exportarmos dados em relatórios que não usam o SimpleLayout.

Exemplo:

includeOnce -1898143872; /* .../library/export/DataSetExporter.ijs */

var fld = vars.field("quantidadeDeRegistros", "integer");

fld.help = "Quantidade de registros que serão exportados.";

this.activity("run", function () {

this.ds = new DataSet();

this.ds.createField("Nome","string",200);

this.ds.createField("Valor","integer");

this.ds.create();

var qtdRegistros = this.quantidadeDeRegistros;

for (var i = 0; i < qtdRegistros; ++i) {

this.ds.append(["Registro" + i, i]);

this.ds.post();

}

});

this.interaction( 'writeLayout', null, null, function () {

var result = "";

result += "<br><table>";

result += "<tr>";

for (var i = 0; i < this.ds.fieldCount; ++i) {

result += "<td>";

result += this.ds.getFieldName(i);

result += "</td>";

};

result += "</tr>";

for (this.ds.first(); !this.ds.eof; this.ds.next()) {

result += "<tr>";

for (var i = 0; i < this.ds.fieldCount; ++i) {

result += "<td>";

result += this.ds.getField(i);

result += "</td>";

};

result += "</tr>";

}

result += "</table>";

this.write(result);

});

this.onGetDataToExport.set(function(process) {

var dataExporter = new DataSetExporter(process.ds);

dataExporter.title = process.title;

return dataExporter;

});

Incluímos o objeto de exportação de dados do DataSet.

Declaramos as variáveis do relatório.

Criamos um dataSet com uma massa de dados de teste.

Criarmos um relatório HTML sem o uso do SimpleLayout.

Alteramos o evento onGetDataToExport para retornar um DataSetExporter do dataSet utilizado para gerar o relatório.

Quando clicarmos no botão Exportar, e selecionarmos uma das opções, teremos o seguinte resultado:

Maiores detalhes da API do DataSetExporter pode ser encontrada em http://developer.erp.bematech.com/js-api/latest/DataSetExporter.html.

Importante: o evento onGetDataToExport existe nas versões 2011.1 ou superior.