+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 Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários