Duvida Smart View Datasul - Utilização de Consultas SQL

Discussão em 'EMS , HCM e Totvs 11' iniciado por Marcelo Goncalves, Junho 10, 2026.

  1. Marcelo Goncalves

    Marcelo Goncalves Membro Participativo

    Bom dia pessoal, espero encontrar todos bem!

    Tenho uma dúvida relacionada à utilização do Smart View liberado pela Totvs para uso no Datasul:

    Ele permite tanto a utilização de objetos de negócio já liberados pela Totvs, quanto à criação de objetos de negócio próprios, via conector SQL ao invés de utilizar o conector nativo.

    No meu caso, temos base Oracle e ao tentar criar um objeto de negócio utilizando uma consulta PL-SQL, percebi que ele não trabalha bem com parâmetros.

    Exemplo simples:


    SELECT
    vw_cusven.TIPO AS TIPO,
    vw_cusven.COD_ESTABEL AS COD_ESTABEL,
    vw_cusven.NR_NOTA_FIS AS NR_NOTA_FIS,
    vw_cusven.SERIE AS SERIE,
    vw_cusven.DT_EMISSAO AS DT_EMISSAO,
    vw_cusven.IT_CODIGO AS IT_CODIGO,
    vw_cusven.DESC_ITEM AS DESC_ITEM,
    vw_cusven.FM_CODIGO AS FM_CODIGO,
    vw_cusven.DESC_FAMILIA AS DESC_FAMILIA,
    vw_cusven.VENDASEG AS SEGMENTO_VENDA,
    vw_cusven.FM_COD_COM AS FM_COD_COM,
    vw_cusven.DESC_FAMILIA_COM AS DESC_FAMILIA_COM,
    vw_cusven.NR_SEQ AS NR_SEQ,
    vw_cusven.COD_EMITENTE AS COD_EMITENTE,
    vw_cusven.NOME_ABREV AS NOME_ABREV,
    vw_cusven.GR_CLI AS GR_CLI,
    vw_cusven.DESC_GR_CLI AS DESC_GR_CLI,
    vw_cusven.NAT_OPERACAO AS NAT_OPERACAO,
    vw_cusven.VAL_BRUTO AS VAL_BRUTO,
    vw_cusven.QUANTIDADE AS QUANTIDADE,
    vw_cusven.PECAS AS PECAS,
    vw_cusven.ISS AS ISS,
    vw_cusven.IPI AS IPI,
    vw_cusven.ICM AS ICM,
    vw_cusven.ST AS ST,
    vw_cusven.PIS AS PIS,
    vw_cusven.COFINS AS COFINS,
    vw_cusven.DIFAL AS DIFAL,
    vw_cusven.VAL_LIQUIDO AS VAL_LIQUIDO,
    vw_cusven.PERIODO AS PERIODO,
    vw_cusven.VAL_UNIT_MAT AS VAL_UNIT_MAT,
    vw_cusven.VAL_UNIT_MOB AS VAL_UNIT_MOB,
    vw_cusven.VAL_UNIT_GGF AS VAL_UNIT_GGF,

    CASE
    WHEN vw_cusven.QUANTIDADE <> 0
    THEN ROUND(ABS(vw_cusven.CUSTO) / vw_cusven.QUANTIDADE, 2)
    ELSE 0
    END AS CUSTO_UNIT,

    vw_cusven.CUSTO AS CUSTO_TOTAL,

    CASE
    WHEN vw_cusven.QUANTIDADE <> 0
    THEN ROUND(vw_cusven.LUCRO / vw_cusven.QUANTIDADE, 2)
    ELSE 0
    END AS LUCRO_UNIT,

    vw_cusven.LUCRO AS LUCRO,
    vw_cusven.PORCENTAGEM AS PERCENTUAL,
    vw_cusven.COD_BUDGET AS COD_BUDGET,
    vw_cusven.ORIGEM AS ORIGEM,
    vw_cusven.DT_CANHOTO AS DT_CANHOTO,
    vw_cusven.REPRESENTANTE AS REPRESENTANTE,
    ficha_tecnica.TIPO AS TIPO_PRODUTO,
    vw_cusven.CT_CODIGO AS COD_CONTA_CONTABIL,
    vw_cusven.DES_TIT_CTBL AS DESC_CONTA_CONTABIL

    FROM reports.vw_cusven vw_cusven

    LEFT JOIN reports.ficha_tecnica ficha_tecnica
    ON vw_cusven.IT_CODIGO = ficha_tecnica.IT_CODIGO

    WHERE vw_cusven.DT_EMISSAO >= TO_DATE:)DT_EMISSAO_INI, 'DD/MM/YYYY')
    AND vw_cusven.DT_EMISSAO <= TO_DATE:)DT_EMISSAO_FIM, 'DD/MM/YYYY')

    AND vw_cusven.COD_ESTABEL >= :COD_ESTABEL_INI
    AND vw_cusven.COD_ESTABEL <= :COD_ESTABEL_FIM

    AND vw_cusven.IT_CODIGO >= :IT_CODIGO_INI
    AND vw_cusven.IT_CODIGO <= :IT_CODIGO_FIM

    AND UPPER(vw_cusven.NOME_ABREV) LIKE UPPER:)NOME_ABREV) || '%'

    Ao tentar salvar esta consulta deixando os parâmetros da forma como estão acima:

    TO_DATE:)DT_EMISSAO_INI, 'DD/MM/YYYY')

    o smart view não salva a query. Se substituir os parâmetros por valores fixos, como destacado em vermelho no exemplo abaixo:
    TO_DATE('01/04/2026', 'DD/MM/YYYY')
    o programa executa a pré-visualização e permite salvar.

    upload_2026-6-10_10-0-21.png

    Alguém já chegou a passar por este ponto?

    Agradeço quem puder ajudar!

    Abraços!
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Não entendi sua query
    o parâmetro "AS" é pra definição de apelido na SQL, tipo
    Select username as "Nome de Usuário" From usuarios

    Sendo assim, o título da coluna fica como "Nome de Usuário" ao invés de "username"

    Não entendi o que tu quis dizer com "salvar", SELECT não foi feito pra salvar, para salvar dados na tabela, usa-se UPDATE para registros já existentes, e INSERT para novos registros
  3. Marcelo Goncalves

    Marcelo Goncalves Membro Participativo

    Oi Rafael, tudo bem?
    Coloquei a query apenas como exemplo. É que dentro do editor da consulta do Smart View(que é o sistema desenvolvido pela Totvs para criação de relatórios em seus ERPs(Datasul inclusive)), ele só deixa Salvar(ou gravar a query que coloquei no editor), caso eu clique no botão Pre-visualizar consulta.
    Neste momento ele faz uma "validação" do conteúdo da query, ok?
    Nesse caso que citei como exemplo, ao tentar utilizar parâmetros dentro da query, como por exemplo to_date:)'DT_EMISSAO_INI','DD/MM/YYYY'), o editor não aceita o parâmetro :'DT_EMISSAO_INI' da mesma forma que utilizo no PL-SQL. Acredito que seja uma limitação da ferramenta ou tem alguma outra forma.
    Por isso criei esta dúvida para saber se mais alguém da comunidade está usando o Smart View e possa me ajudar com este problema.

Compartilhe esta Página