Apesar dos avanços significativos que tivemos da versão 4 para com a versão 2011 em relação aos javascripts, ainda encontramos muita coisa no mercado fora dos padrão e das melhores práticas. Sendo assim, decidi assim que possível ir postando boas práticas no desenvolvimento de codificação client (javascript) no Dynamics CRM, irei sempre demostrar o funcionamento para com as duas versões mais atuais (4 e 2011).
Vamos a primeira dica…
Em algumas ocasiões as validações que pretendemos fazer nos formulários CRM exigem que sejam aplicadas para algum “estado” e outro não, por exemplo a regra X só deve ser aplicada quando o registro já existir. O que vemos muito por ai seria uma codificação que iniciaria comparando o ID da entidade do formulário se não está Nulo (campoID != null) ou a data de criação (createdon != null), não é verdade!?
Porém as boas prática recomendam que se faça uso do objeto/método crmForm.FormType – versão 4 ou Xrm.Page.ui.getFormType() – versão 2011. Pois com seu uso fica claro em qual estado do formulário que iremos aplicar alguma validação.
Vejam um exemplo na versão 4:
var CRMFORMTYPE_CREATE = 1; var CRMFORMTYPE_UPDATE = 2; var CRMFORMTYPE_READONLY = 3; var CRMFORMTYPE_DISABLED = 4; var CRMFORMTYPE_QUICKCREATE = 5; var CRMFORMTYPE_BULKEDIT = 6; switch (crmForm.FormType) { case CRMFORMTYPE_CREATE: case CRMFORMTYPE_UPDATE: alert("ok"); break; case CRMFORMTYPE_READONLY: case CRMFORMTYPE_DISABLED: case CRMFORMTYPE_QUICKCREATE: case CRMFORMTYPE_BULKEDIT: default: // não faça nada break; }
Na versão 2011:
var CRMFORMTYPE_CREATE = 1; var CRMFORMTYPE_UPDATE = 2; var CRMFORMTYPE_READONLY = 3; var CRMFORMTYPE_DISABLED = 4; var CRMFORMTYPE_QUICKCREATE = 5; var CRMFORMTYPE_BULKEDIT = 6; switch (Xrm.Page.ui.getFormType()) { case CRMFORMTYPE_CREATE: case CRMFORMTYPE_UPDATE: alert("ok"); break; case CRMFORMTYPE_READONLY: case CRMFORMTYPE_DISABLED: case CRMFORMTYPE_QUICKCREATE: case CRMFORMTYPE_BULKEDIT: default: // não faça nada break; }
Da forma que a codificação foi feita, teríamos uma validação apenas no Create e Update dos registros de uma entidade.
Assim teremos muito mais controle do que é “feito” e “desfeito” nos formulários, além da facilidade no entendimento da codifição por toda equipe.
Vamos a parte II…
Material Microsoft que utilizei no post:
Olá Tiago,
Muito interessante sua dica. Estou em busca de maiores materiais de boas práticas de programação Javascript voltado para o CRM 2011.
Trabalho atualmente como Consultor de Implantação de CRM, minha equipe compõe 3 pessoas, e acaba ficando um pouco fora de padrão os códigos, já que cada um raciocina de uma maneira (natural do ser humano). Caso tenha algo que possa compartilhar serei imensamente grato.
Desde já agradeço sua atenção.
CurtirCurtir
Leandro,
Obrigado pelo comentario. Usamos com muito frequencia a biblioteca xrmservicetoolkit, veja se pode lhe ajudar.
att,
Tiago
CurtirCurtir