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.