| Ultima Edição: 28/Oct/25 |
- Gerar relatório BIRT
- Template para criar um novo campo para grid e filtro:
- Abrir o filtro asim que a tela carregar.
- Chamar rota back-end pelo Controller Javascript
- Remover a validação de um campo
Gerar relatório BIRT
Arquivo Controller.php
$reportMapping =
array ('NOME_DO_CAMPO' => "valor",
"__format" => $row["TIPOREPORT"]
);
$type = 'BIRT';
try{
$birtQr2Url = $this->reportService->createRemoteReport($type, "CTB69007", $reportMapping);
$response->addMessage(new DTO\Response\Message($birtQr2Url));
}catch (\Exception $e){
throw new \Exception("Mensagem de erro.");
}
Lembrando que o segundo parâmetro do createRemoteReport deve ser o código do relatório (normalmente importado da tela dinamicamente), e é usado pelo framework pra encontrar o arquivo template do BIRT (nome_do_modulo/backend/reports/CODIGO.rptdesign).
Template para criar um novo campo para grid e filtro:
"fields": [
{
"id": "",
"name": "CAMPO",
"label": "Nome do Campo",
"template": "field/select-native.html",
"showOnList": true
}
]

Abrir o filtro asim que a tela carregar.
WidgetOnEnterOnce vai rodar uma vez quando o widget carregar e executar esse bagulho: ZhFilterPreferences.openFilterWidget(templateManager.container.getWidget(‘Nome’));
O Nome é o nome que você deu pro seu widget com o grid que vai trazer e mostrar os dados.
{
"id": "234567890123456789987654",
"name": "WidgetOnEnterOnce",
"code": "ZhFilterPreferences.openFilterWidget(templateManager.container.getWidget('Nome'));"
}

Chamar rota back-end pelo Controller Javascript
Enviando informação (widget.currentRow) do tipo “Row”:
General.callRestEngine("modulo#/nomeDaRota", "Row", widget.currentRow).then(function(sucess) {
fazerAlgo();
}, function(error){
ScreenService.showMessage(error.data.error);
})
a rota precisa estar devidamente registrada no arquivo routes.json no backend do modulo específico.
Remover a validação de um campo
Aparentemente precisa usar delete.
Não me fez nada :/
field.validations.required = false;
Funcionou
delete(field.validations.required);