Como saber onde um objeto está sendo utilizado?

Por acaso existe alguma forma de pesquisar os lugares que são chamados um formulário?

Exemplo: Estou alterando o frm 289, mas queria saber se é chamado em outro lugar, para verificar possível impacto.

Olá @Deia!

Seja bem vinda a comunidade!

Atualmente não temos nenhum utilitário nativo para fazer essa busca. Até existe um formulário de pesquisa no módulo “LATROMI Tool” mas o mesmo já está obsoleto.

Está nos nossos planos desenvolver uma nova tela de pesquisa.

Por enquanto, você pode executar o Comando SQL abaixo no banco do Latromi para descobrir onde um objeto é utilizado.

Basta substituir o valor da coluna “upgradecode” da query “filter” pelo Código de Atualização do objeto que você deseja procurar.

SET search_path = wecdb;

WITH filter AS
(
   -- Informar a chave que será pesquisada aqui
   SELECT 'UPGRADE_CODE_AQUI'::TEXT AS upgradecode
)

-- Tradução da Consulta
SELECT 
'Consulta'              AS containingobjecttype
, c.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, NULL::TEXT            AS containingmembertype
, NULL::TEXT            AS containingmembername
FROM consulta c
JOIN globalidmapping g ON g.id = c.globalid
JOIN filter ON c.translatesetupgradecode = filter.upgradecode

UNION ALL

-- Parâmetros da Consulta
SELECT 
'Consulta'              AS containingobjecttype
, c.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, 'Parâmetro'::TEXT     AS containingmembertype
, p.nome                AS containingmembername
FROM consulta c
JOIN globalidmapping g ON g.id = c.globalid
JOIN consulta_parametro p ON p.idconsulta = c.id
JOIN filter ON p.browsersettings LIKE ('%upgradeCode="'||filter.upgradecode||'"%')

UNION ALL

-- Links da Consulta
SELECT 
'Consulta'              AS containingobjecttype
, c.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, 'Link'::TEXT          AS containingmembertype
, l.nome                AS containingmembername
FROM consulta c
JOIN globalidmapping g ON g.id = c.globalid
JOIN consulta_query q ON q.idconsulta = c.id
JOIN consulta_query_coluna col ON col.idquery = q.id
JOIN link l ON l.id = col.idlink
JOIN link_referencia lr ON lr.idlink = l.id
JOIN filter ON filter.upgradecode = lr.targetupgradecode

UNION ALL

-- Botões da Consulta
SELECT
'Consulta'              AS containingobjecttype
, c.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, 'Botão'::TEXT         AS containingmembertype
, l.nome                AS containingmembername
FROM consulta c
JOIN globalidmapping g ON g.id = c.globalid
JOIN consulta_query q ON q.idconsulta = c.id
JOIN consulta_query_botao botao ON botao.idquery = q.id
JOIN link l ON l.id = botao.idlink
JOIN link_referencia lr ON lr.idlink = l.id
JOIN filter ON filter.upgradecode = lr.targetupgradecode

UNION ALL

-- Tradução do Browser
SELECT 
'Browser'               AS containingobjecttype
, b.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, NULL::TEXT            AS containingmembertype
, NULL::TEXT            AS containingmembername
FROM browsedinamico b
JOIN globalidmapping g ON g.id = b.globalid
JOIN filter ON b.translatesetupgradecode = filter.upgradecode

UNION ALL

-- Tradução do Form
SELECT 
'Form'                  AS containingobjecttype
, f.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, NULL::TEXT            AS containingmembertype
, NULL::TEXT            AS containingmembername
FROM formdinamico f
JOIN globalidmapping g ON g.id = f.globalid
JOIN filter ON f.translatesetupgradecode = filter.upgradecode

UNION ALL

-- Campos do Form
SELECT 
'Form'                  AS containingobjecttype
, f.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, 'Campo'::TEXT         AS containingmembertype
, c.nome                AS containingmembername
FROM formdinamico f
JOIN globalidmapping g ON g.id = f.globalid
JOIN campodinamico c ON c.idformdinamico = f.id
JOIN filter ON c.referencesxml LIKE ('%upgradeCode="'||filter.upgradecode||'"%')

UNION ALL

-- Janelas do Form
SELECT 
'Form'                  AS containingobjecttype
, f.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, 'Janela'::TEXT        AS containingmembertype
, w.name                AS containingmembername
FROM formdinamico f
JOIN globalidmapping g ON g.id = f.globalid
JOIN formdinamico_windows fw ON fw.idformdinamico = f.id
JOIN windows w ON w.id = fw.windowid
JOIN filter ON w.targetreferences LIKE ('%upgradeCode="'||filter.upgradecode||'"%')

UNION ALL

-- Documentos vinculados
SELECT 
'Documento'             AS containingobjecttype
, doc.id                AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, g.objectdescription   AS containingobjectname
, NULL::TEXT            AS containingmembertype
, NULL::TEXT            AS containingmembername
FROM markdowndocument doc
JOIN globalidmapping g ON g.id = doc.globalid
JOIN markdowndocument_use use ON use.markdowndocumentid = doc.id
JOIN filter ON use.objectupgradecode = filter.upgradecode

UNION ALL

-- Alvo do Menu
SELECT 
'Menu'                  AS containingobjecttype
, m.id                  AS containingobjectid
, g.upgradecode         AS containingobjectupgradecode
, fnc_get_menupath(m.id, ' / ') AS containingobjectname
, NULL::TEXT            AS containingmembertype
, NULL::TEXT            AS containingmembername
FROM menu m
JOIN globalidmapping g ON g.id = m.globalid
JOIN filter ON m.targetupgradecode = filter.upgradecode

UNION ALL

-- Menu Pai
SELECT 
'Menu'                  AS containingobjecttype
, mp.id                 AS containingobjectid
, gmp.upgradecode       AS containingobjectupgradecode
, fnc_get_menupath(mp.id, ' / ') AS containingobjectname
, NULL::TEXT            AS containingmembertype
, NULL::TEXT            AS containingmembername
FROM menu m
JOIN globalidmapping g ON g.id = m.globalid
JOIN menu mp ON mp.id = m.idmenupai
JOIN globalidmapping gmp ON gmp.id = mp.globalid
JOIN filter ON g.upgradecode = filter.upgradecode

ORDER BY 
   containingobjecttype, 
   containingobjectid, 
   containingmembertype, 
   containingmembername

Abaixo uma explicação sobre as colunas retornadas.

Coluna Descrição
containingobjecttype Tipo do objeto que contém a referência.
containingobjectid Id do objeto que contém a referência.
containingobjectupgradecode Código de Atualização do objeto que contém a referência.
containingobjectname Nome do objeto que contém a referência.
containingmembertype Tipo do membro do objeto que contém a referência.
containingmembername Nome do membro do objeto que contém a referência.
2 curtidas

@Deia, adicionei uma Consulta no módulo LATROMI Tool chamada “Referências de Objeto”.

Essa Consulta executa exatamente o mesmo SELECT que coloquei na outra resposta.

Segue o link para baixar o pacote LATROMI Essentials Atualizado: LATROMI Tools.lcp

2 curtidas

Bah deu certinho, valeu!

1 curtida