Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice


Nota
iconfalse
titleSmartX - 12.1.2610

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
iconfalse
titleFase de testes

Funcionalidade disponível a partir da release 12.1.2610 para rotinas com SmartX habilitado.

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 @.

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.

Comportamento Anterior X Novo Comportamento (SmartX)

Avisotitle
Antes do SmartXCom SmartX
(12.1.2610+)
Os filtros
Filtros
podiam utilizar expressões ADVPL com referências ao alias da tabela (ALIAS->NOME_CAMPO).Os filtros devem ser escritos obrigatoriamente em sintaxe SQL pura, sem utilização de alias de tabela.
Operadores lógicos ADVPL eram aceitos (.AND. / .OR.).Devem ser utilizados operadores lógicos SQL (AND / OR).
Não havia exigência de sintaxe SQL nem da utilização do
prefixo @. Dica
titleCom SmartX (12.1.2610+)
  • O filtro deve ser escrito obrigatoriamente em sintaxe SQL pura, sem alias de tabela.
  • caractere @ no início da expressão.A expressão de filtro deve iniciar obrigatoriamente 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.

    sintaxe ADVPL era aceita independentemente do tipo de rotina.Em rotinas SmartX, a sintaxe ADVPL não é mais aceita para definição de filtros.
    Nota
    titleExpressão ADVPL - Incorreto

    Referências ao alias da tabela (ALIAS->NOME_CAMPO) e operadores .AND. / .OR. não são suportados em rotinas Smart X.

    Dica
    titleExpressão SQL - Correto
    Expressão SQL pura, sem alias de tabela, iniciando obrigatoriamente com @. Operadores AND / OR em sintaxe SQL.

    03. Exemplo de Utilização

    ...

    Dica
    iconfalse
    titleFiltro Personalizado - SmartX (Correto)

    A expressão retornada será: @ CT2_LOTE = '000001' AND CT2_SBLOTE = '001' — sintaxe SQL válida, iniciada com @utilização de sintaxe SQL pura, sem referências ADVPL e com operadores SQL, é a forma suportada em rotinas SmartX.

    Bloco de código
    languagecpp
    themeMidnight
    titleExpressão SQL - Correto (SmartX)
    #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
    iconfalse
    titleFiltro 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
    languagecpp
    themeMidnight
    titleExpressão ADVPL - Incorreto (SmartX)
    #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.

    ContextoSintaxe permitidaInício com @Alias da tabela (ALIAS->)Operadores lógicos
    Rotinas sem SmartXADVPL ou SQLNão obrigatórioPermitido.AND. / .OR.
    Rotinas com SmartXSomente SQLObrigatórioNão permitidoAND / OR

    ...