| Nota |
|---|
|
A partir da release 12.1.2610, a rotina passa a permitir a visualização do browser utilizando o SmartX. Com essa alteração, a implementação de Pontos de Entrada (PE) relacionados à aplicação de filtros personalizados no browse passa a ter um Novo Comportamento, especialmente no que se refere à sintaxe da expressão de filtro retornada pelo PE. |
| Aviso |
|---|
|
Funcionalidade disponível a partir da release 12.1.2610. |
01. Visão Geral.
O SmartX é a integração do framework POUI ao Protheus, permitindo que as rotinas sejam renderizadas em um browser moderno com componentes visuais mais ricos e responsivos. Com essa mudança, a forma como os Pontos de Entrada (PE's) aplicam filtros personalizados ao browse foi atualizada para se adequar ao novo modelo de interface.
Antes do SmartX, os filtros podiam ser escritos utilizando expressões ADVPL, com referências diretas aos campos via alias da tabela. Com o SmartX, esse formato não é mais suportado — o filtro deve obrigatoriamente ser escrito em Sintaxe SQL, iniciando com o Caractere @.
Comportamento Anterior X Novo Comportamento (SmartX)
| Aviso |
|---|
| - Filtros podiam utilizar expressões ADVPL com referências ao alias da tabela (
ALIAS->NOME_CAMPO). - Operadores lógicos ADVPL eram aceitos (
.AND. / .OR.). - Não havia exigência de sintaxe SQL nem do prefixo
@.
|
|
| Dica |
|---|
| title | Com SmartX (12.1.2610+) |
|---|
| - O filtro deve ser escrito obrigatoriamente em sintaxe SQL pura, sem alias de tabela.
- A expressão de filtro deve iniciar com o caractere
@. - Operadores lógicos SQL devem ser utilizados (
AND / OR). - A regra se aplica somente a rotinas com Smart X
- Rotinas sem Smart X continuam aceitando Sintaxe ADVPL.
|
|
|---|
02. Ponto de Entrada - Filtros Personalizados do Browse.
Os Pontos de Entrada responsáveis pela aplicação de filtros personalizados no browse tiveram seu comportamento alterado com a adoção do Smart X. O filtro retornado pelo PE deve seguir obrigatoriamente à sintaxe SQL.
| Nota |
|---|
| title | Pontos de Entrada - MVC |
|---|
| Referências ao alias da tabela (ALIAS->NOME_CAMPO) e operadores .AND. / .OR. não são suportados em rotinas Smart X. |
|
| Dica |
|---|
| title | Pontos de Entrada - Não-MVC |
|---|
| Expressão SQL pura, sem alias de tabela, iniciando obrigatoriamente com @. Operadores AND / OR em sintaxe SQL. |
|
|---|
03. Exemplo de Utilização.
| Dica |
|---|
| title | Filtro Personalizado - SmartX (Correto) |
|---|
|
A expressão retornada será: @ CT2_LOTE = '000001' AND CT2_SBLOTE = '001' — sintaxe SQL válida, iniciada com @. |
| Bloco de código |
|---|
| language | cpp |
|---|
| theme | Midnight |
|---|
| title | Exemplo de PE - MVC |
|---|
|
#INCLUDE 'TLPP-CORE.TH'
User Function CTB400FIL()
Local cFiltro As Character
Local cLote As Character
Local cSubLote As Character
cLote := "000001"
cSubLote := "001"
// Filtro em sintaxe SQL - obrigatório iniciar com @ para rotinas SmartX.
cFiltro := "@ CT2_LOTE = '" + cLote + "' AND CT2_SBLOTE = '" + cSubLote + "'"
Return( cFiltro ) |
| Aviso |
|---|
| title | Filtro Personalizado - SmartX (Incorreto) |
|---|
|
O uso de referências ADVPL (ALIAS->NOME_CAMPO) e operadores .AND. não são suportados em rotinas SmartX e podem causar falha na aplicação do filtro. |
| Bloco de código |
|---|
| language | cpp |
|---|
| theme | Midnight |
|---|
| title | Exemplo de PE - Não MVC |
|---|
|
#INCLUDE 'TLPP-CORE.TH'
User Function CTB400FIL()
Local cFiltro As Character
Local cLote As Character
Local cSubLote As Character
// INCORRETO - Referência direta ao alias da tabela (não compatível com Smart X).
cLote := CT2->CT2_LOTE
cSubLote := CT2->CT2_SBLOTE
// INCORRETO - Operadores lógicos ADVPL e alias na expressão de filtro.
cFiltro := " CT2->CT2_LOTE = '" + cLote + "' .AND. CT2->CT2_SBLOTE = '" + cSubLote + "'"
Return( cFiltro ) |
04. Resumo Comparativo.
Foram incluídos exemplos de rotinas que utilizam o PageAction, bem como casos em que ele não é aplicado, com o objetivo de demonstrar as diferenças entre as abordagens e esclarecer em quais cenários cada uma se mostra mais adequada.
