Produto: ECM
Em um determinado fluxo, dependendo da tarefa alguns campos são exibidos normalmente e outros são exibidos desabilitados. No evento displayFields, utilizei o método form.setShowDisabledFields(true) e habilitei os campos específicos da tarefa, mas quando abro o formulário todos os campos estão habilitados.
O método form.setShowDisabledFields(true) sendo utilizado antes do form.setEnabled não funciona? Existe alguma alternativa?
Como obter uma lista com o nome de todos os campos do formulário para eu inabilitar todos em um loop e depois habilitar apenas os necessário depois?
Verificamos que o método form.setShowDisabledFields() tem efeito apenas quando o formulário é carregado no modo de visualização. Nas páginas 7 e 8 da documentação oficial Guia de Referência Customização de Fichários.pdf disponível em <ECM>\docs-ECM\Documentos de Customizacao\pt são disponibilizados mais detalhes sobre esta função.
Para desabilitar ou habilitar todos os campos, utilize o método form.getCardData() que retorna um Mapa com todos os campos e valores do formulário. Em seguida, utilize o método form.getCardData().keySet() para obter o nome dos campos e crie um laço de repetição para habilitar ou desabilitar, utilizando o form.setEnabled().
Abaixo segue um exemplo:
function displayFields(form,customHTML){
var habilitar = false; // Informe True para Habilitar ou False para Desabilitar os campos
var mapaForm = new java.util.HashMap();
mapaForm = form.getCardData();
var it = mapaForm.keySet().iterator();
while (it.hasNext()) { // Laço de repetição para habilitar/desabilitar os campos
var key = it.next();
form.setEnabled(key, habilitar);
}
}