Administração do sistema
Filtros por expressão
RT.FAQ-71092
As telas de pesquisa, que permitem filtrar os registos de uma lista, atendem as necessidades comuns onde deseja-se buscar as informações de um ou mais registros que atendem a critérios simples como os pedidos de um determinado cliente, produtos com uma determinada referência, contas a pagar que irão vencer em um determinado período, etc.
Neste processo, o usuário simplesmente escolhe um campo, opcionalmente um operador (igual a, é um destes, contém, entre, etc.) e informa os valores a serem considerados para o operador selecionado. Esta combinação de campo, operador e valor(es) permite uma combinação enorme de critérios e atendem a grande maioria das situações práticas do dia a dia.
Existem, no entanto, algumas situações em que estes filtros não são o suficiente. Digamos, por exemplo, que o usuário deseja pesquisar todas as ocorrências encerradas em um determinado período que tempo executado extrapolou mais de 20% ao tempo estimado. Para casos como esse, foi criado um recurso onde o usuário pode incluir uma expressão que será acrescentada aos filtros normais de campo/operador.
Quando o filtro por expressão está habilitado, um campo "Filtrar expressão" é incluído no final dos campos normais da tela de pesquisa (QUERY). Neste campo, o usuário poderá informar uma expressão que irá restringir os valores desejados. Esta expressão é definida utilizando a sintaxe da linguagem SQL e pode utilizar qualquer uma das colunas utilizadas pelo bloco da interface. Para saber quais as colunas disponíveis, o sistema apresenta um campo de opção contento todas as colunas disponíveis logo abaixo da expressão. Ao selecionar uma destas colunas, o sistema copia o nome da mesma para dentro da expressão.
Exemplos
Listar apenas ocorrências cujo tempo executado tenha extrapolado em 20% o tempo estimado:
tempo_executado > tempo_estimado * 1.2
Listar apenas ocorrências em que o usuário está diretamente associado ou que está associado ao respectivo projeto.
exists (select 1 from pessoas_atividades p where p.atividade_id = query.pai_id and p.pessoa_id=[PERSON_ID])
or exists (select 1 from pessoas_atividades p where p.atividade_id = query.id and p.pessoa_id=[PERSON_ID])
Uso de parâmetros da sessão
A expressão pode ser contextualizada com qualquer parâmetro da sessão entre colchetes. Os principais são:
- [USER_ID]: ID do usuário logado na sessão.
- [PERSON_ID]: ID do cadastro da pessoa logada na sessão.
Ver Variáveis/parâmetros de sessão
Configuração
Para habilitar os filtros por expressão, pode-se utilizar a interface de configuração das telas (Configurações das interfaces do sistema) e ajustar os campos "Filtro por expressão" e "Cargo/função para usar expressão" ou configurar manualmente as seguintes preferências:
Uso a partir de dashboards/menus
Quando se desejar passar um filtro por expressão através de um parâmetro para uso em um menu e/ou dashboard, basta utilizar o parâmetro Q_Z_AW. Informando a expressão neste parâmetro fará com que a mesma seja aplicada ao filtro.
Atenção
- Quando um filtro por expressão for passado através de parâmetro, ele será executado INDEPENDENTEMENTE do usuário ter acesso ou mesmo do filtro por expressão estar habilitado ou não.
- Os filtros por expressão são uma vulnerabilidade pois permite SQL Injection.