none
Bug no Script RRS feed

  • 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.

    terça-feira, 13 de abril de 2010 18:49

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
    terça-feira, 9 de novembro de 2010 17:22
  • 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
    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
    domingo, 14 de novembro de 2010 18:41

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
    sexta-feira, 23 de abril de 2010 06:55
  • 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.

    sexta-feira, 23 de abril de 2010 14:12
  • 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
    terça-feira, 9 de novembro de 2010 17:22
  • 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
    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
    domingo, 14 de novembro de 2010 18:41