Usuário com melhor resposta
Bug no Script

Pergunta
-
Olá pessoal,
Por mais simples que seja, não sei porque está dando bug no meu scrip, vamos lá.
Criei um script no Onload de um campo que se ele tiver um valor, tornará outros campos obrigatórios:
if ( crmForm.all.new_fasedorelatorio.DataValue >= 2 ) {
crmForm.SetFieldReqLevel("new_participantes", 2);
crmForm.SetFieldReqLevel("new_objetivos", 2);
crmForm.SetFieldReqLevel("actualdurationminutes", 2);//esta dando bug
}
else {
crmForm.SetFieldReqLevel("new_participantes", 0);
crmForm.SetFieldReqLevel("new_objetivos", 0);
crmForm.SetFieldReqLevel("actualdurationminutes", 0);//esta dando bug
}O campo fica com o '*' como deveria ficar, mas na hora de salvar ele acusa que o campo "actualdurationminutes" está vazio, sendo ele obrigatório e estando preenchido.
para ajudar o campo actualdurationminutes é do tipo "int", Formato igual a "Duração", Modo IME (que eu nao sei o que é, se souberem, plz) igual a Desabilitada.
O Script certamente não tem erro, estou apostando que seja alguma configuração no tipo do atributo.
se puderem me ajudar.
Valew.
Respostas
-
Olá Ulysses,
Esse script está na minha entidade "Compromissos", no Onload do campo "Fase do Relatório" (new_fasedorelatorio). Esse campo é do tipo picklist não obrigatório.
A intenção seria de que quando o usuário selecionar uma determinada opçao, outros campos se tornem obrigatórios.
Com o Script ativo, ocorre o erro que relatei acima, ou seja, o sistema informa que o campo "actualdurationminutes" que está preenchido e é obrigatório conforme o script, não está preenchido.
Quanto ao seu script, antes de mais nada, só para deixarmos claro que estamos tratando de algo não suportado, visto que esta função não está documentada pelo SDK.
Não entendi, você quer dizer que o CRM não suporta personalização de enventos nos onloads dos formulários, que não está homologado?
Sempre realizei personalizações com scripts nos campos dos formulários, até mesmo para preencher campos automáticos, criar novos registros, etc...e sempre funcionou.
Att.
Meier,O que o o Ulysses falou é que esta função de configuração de obrigatoriedade de atributos não é suportada. Ela não está documentada no SDK como outras funções comumente utilizadas. A Microsoft não garante que ela irá funcionar em todos os casos e atributos. Muito provavelmente é este seu problema, ao tentar aplicá-la num atributo padrão. Quanto as customizações JSCRIPT no ONLOAD, ONSAVE e ONCHANGE, você pode continuar utilizando normalmente.
[]'s Juliano Bassetto - [MCT/MCP/MCITP/MCTS] - Semper Fi! Carry On!- Sugerido como Resposta Matt Biondi terça-feira, 9 de novembro de 2010 17:22
- Marcado como Resposta RicardoAlves sábado, 13 de novembro de 2010 19:45
-
O Juliano está correto,
Está função
crmForm.SetFieldReqLevel("campo", 2);
apesar de ser muito utilizada, é uma função interna da arquitetura do Dynamics CRM e sua utilização não é suportada. (como você ver, ela não está presente no SDK, que contém o conteúdo de extensão da plataforma).
Abraço,
Ricardo Alves
www.ricardoalves.me- Marcado como Resposta RicardoAlves sábado, 13 de novembro de 2010 19:45
-
Olá,
Se ainda assim quiser utilizar seu script, veja se este código funciona:
function crmForm.SetRequiredLevel(field, level)
{
field.req = level;
var fieldLabel = document.getElementById(field.id + "_c");
if (fieldLabel != null)
{
switch (level)
{
case 0: //normal
fieldLabel.className = "n";
break;
case 1: //recommended
fieldLabel.className = "rec";
break;
case 2: //required
fieldLabel.className = "req";
break;
}
}
}Do seguinte blog: http://blogs.inetium.com/blogs/bvandervoort/archive/2007/10/03/dynamic-required-fields-in-crm.aspx
Abraço
Bruno Rodrigues Desenvolvimento .Net- Marcado como Resposta RicardoAlves segunda-feira, 15 de novembro de 2010 12:06
Todas as Respostas
-
Olá,
A característica IME significa Input Method Editor, o que nos dá suporte a diversos teclados, inclusive com ideogramas.
Quanto ao seu script, antes de mais nada, só para deixarmos claro que estamos tratando de algo não suportado, visto que esta função não está documentada pelo SDK.
De qualquer forma, gostaria de saber qual entidade vc está tratando?
Abraços,
Ulysses Neto
Microsoft Dynamics CRM Specialist and Professional | Consultoria para Vendas, Implantação e Treinamento | http://DynamicsCRM.Blog.br -
Olá Ulysses,
Esse script está na minha entidade "Compromissos", no Onload do campo "Fase do Relatório" (new_fasedorelatorio). Esse campo é do tipo picklist não obrigatório.
A intenção seria de que quando o usuário selecionar uma determinada opçao, outros campos se tornem obrigatórios.
Com o Script ativo, ocorre o erro que relatei acima, ou seja, o sistema informa que o campo "actualdurationminutes" que está preenchido e é obrigatório conforme o script, não está preenchido.
Quanto ao seu script, antes de mais nada, só para deixarmos claro que estamos tratando de algo não suportado, visto que esta função não está documentada pelo SDK.
Não entendi, você quer dizer que o CRM não suporta personalização de enventos nos onloads dos formulários, que não está homologado?
Sempre realizei personalizações com scripts nos campos dos formulários, até mesmo para preencher campos automáticos, criar novos registros, etc...e sempre funcionou.
Att.
-
Olá Ulysses,
Esse script está na minha entidade "Compromissos", no Onload do campo "Fase do Relatório" (new_fasedorelatorio). Esse campo é do tipo picklist não obrigatório.
A intenção seria de que quando o usuário selecionar uma determinada opçao, outros campos se tornem obrigatórios.
Com o Script ativo, ocorre o erro que relatei acima, ou seja, o sistema informa que o campo "actualdurationminutes" que está preenchido e é obrigatório conforme o script, não está preenchido.
Quanto ao seu script, antes de mais nada, só para deixarmos claro que estamos tratando de algo não suportado, visto que esta função não está documentada pelo SDK.
Não entendi, você quer dizer que o CRM não suporta personalização de enventos nos onloads dos formulários, que não está homologado?
Sempre realizei personalizações com scripts nos campos dos formulários, até mesmo para preencher campos automáticos, criar novos registros, etc...e sempre funcionou.
Att.
Meier,O que o o Ulysses falou é que esta função de configuração de obrigatoriedade de atributos não é suportada. Ela não está documentada no SDK como outras funções comumente utilizadas. A Microsoft não garante que ela irá funcionar em todos os casos e atributos. Muito provavelmente é este seu problema, ao tentar aplicá-la num atributo padrão. Quanto as customizações JSCRIPT no ONLOAD, ONSAVE e ONCHANGE, você pode continuar utilizando normalmente.
[]'s Juliano Bassetto - [MCT/MCP/MCITP/MCTS] - Semper Fi! Carry On!- Sugerido como Resposta Matt Biondi terça-feira, 9 de novembro de 2010 17:22
- Marcado como Resposta RicardoAlves sábado, 13 de novembro de 2010 19:45
-
O Juliano está correto,
Está função
crmForm.SetFieldReqLevel("campo", 2);
apesar de ser muito utilizada, é uma função interna da arquitetura do Dynamics CRM e sua utilização não é suportada. (como você ver, ela não está presente no SDK, que contém o conteúdo de extensão da plataforma).
Abraço,
Ricardo Alves
www.ricardoalves.me- Marcado como Resposta RicardoAlves sábado, 13 de novembro de 2010 19:45
-
Olá,
Se ainda assim quiser utilizar seu script, veja se este código funciona:
function crmForm.SetRequiredLevel(field, level)
{
field.req = level;
var fieldLabel = document.getElementById(field.id + "_c");
if (fieldLabel != null)
{
switch (level)
{
case 0: //normal
fieldLabel.className = "n";
break;
case 1: //recommended
fieldLabel.className = "rec";
break;
case 2: //required
fieldLabel.className = "req";
break;
}
}
}Do seguinte blog: http://blogs.inetium.com/blogs/bvandervoort/archive/2007/10/03/dynamic-required-fields-in-crm.aspx
Abraço
Bruno Rodrigues Desenvolvimento .Net- Marcado como Resposta RicardoAlves segunda-feira, 15 de novembro de 2010 12:06