+8 votos
106 visitas
Tenho um campo do tipo Tabela que está sendo apresentado na interface do WES (versão 13.1), e preciso consumir o método OnChanged deste campo pelo BEF para realizar um consulta na base de dados de acordo com o valor do campo selecionado. Alguém sabe me dizer se é possível, e se sim, como faço?
por (282 pontos) | 106 visitas

2 Respostas

+2 votos
Melhor resposta

Boa tarde, Bruno!

É possível via Phyton. Segue um exemplo que implementamos aqui:

def OnLOTEValueChanged(view, entity):
    from Benner.Tecnologia.Common import FieldDefinition
    from Benner.Tecnologia.Common import EntityDefinition
    from Benner.Tecnologia.Common import NameValueDictionary
    from System import DateTime    

    entityDefinition = EntityDefinition.GetByName(entity.Definition.EntitySource.SystemInstanceName, "SAM_TGE_MATMEDCLINICA");

    parameters = NameValueDictionary();
    parameters.Add("CLINICA", entity.Fields["CLINICA"]);
    parameters.Add("EVENTO", entity.Fields["EVENTO"]);
    parameters.Add("LOTE", entity.Fields["LOTE"]);

    result = function.Call(entityDefinition, "RETORNADATAVALIDADEDOLOTE", parameters);

    entity.Fields["DATAVALIDADE"] = result.Vars["DATAVALIDADE"];

    if result.Vars["DATAVALIDADE"] == None:
        view.FieldDefinitions["DATAVALIDADE"].DataAccessLevel = FieldDefinition.AccessLevel.Insert;
    else:
        view.FieldDefinitions["DATAVALIDADE"].DataAccessLevel = FieldDefinition.AccessLevel.Read;

Espero ter ajudado.

Tiago

por (20 pontos)
selecionada por
Obrigado Tiago Moreno, me ajudou muito esta solução, era isso mesmo que estava precisando.

Valeu...
+4 votos

É possível porém não muito recomendado:

  1. O WES permite a execução de Script IronPython no Change de campos, isso representa um postback do browser até o servidor de apresentação.
  2. No Script IronPython, é possível disparar métodos de negócio, isso representa uma chamada do servidor de apresentação até o contexto de negócio, no Provider.
  3. Se sua regra de negócio consultar o banco, será mais uma camada à ser atingida, enquanto o usuário espera o browser...

Portanto, esta abordagem pode prejudicar a usabilidade do seu aplicativo. De qualquer forma veja aqui a documentação completa.

A recomendação é processar isso ao colocar a entidade em edição, no Edited() ou Created() da entidade, ou então antes de salvar, no Saving().

JP

por (183 pontos)
Valeu João, acabei utilizando via Script IronPython mesmo, pois o usuário irá precisar dos dados assim que sair do campo em questão.

Perguntas relacionadas

+2 votos
1 resposta
perguntado 7 Jan, 2015 por tamires.bespalhok (34 pontos) | 7,0K visitas
+4 votos
1 resposta
+3 votos
1 resposta
perguntado 24 Jul, 2020 por robert.metalsystem (17 pontos) | 71 visitas
+4 votos
2 respostas
perguntado 13 Mar, 2015 por lucas.santana (19 pontos) | 121 visitas
Melhores Apr 2026
  1. CeceliaWysel

    5 Pontos

  2. VernonSchaw

    5 Pontos

  3. MargieOsterh

    5 Pontos

200 pontos
Melhores 2026 Apr 06 - 12
  1. danilo.pereira

    96 Pontos

  2. danilo.pereira

    96 Pontos

  3. danilo.pereira

    96 Pontos

  4. willian.metalsystem

    69 Pontos

  5. henrique.muller

    62 Pontos

  6. luciano.fronza

    61 Pontos

  7. luciano.fronza

    61 Pontos

  8. luciano.fronza

    61 Pontos

  9. diuari.molinari

    52 Pontos

  10. diuari.molinari

    51 Pontos

518 perguntas
567 respostas
389 comentários
772 usuários