none
Lookup Filtrado CRM 4.0 RRS feed

  • Pergunta

  • Olá pessoal, na entidade Conta quero fazer a seguinte customização:

    Ao escolher uma opção no campo Conta Primária, o campo Contato Primário deverá filtrar somente os contatos referentes ao campo Conta Primária.

    Bom isso todo mundo já sabe que se resolve com uma solução não suportada, então estou me baseando neste post

    http://crm.georged.id.au/post/2008/02/16/Filtering-lookup-data-in-CRM-4.aspx

    Meu código ficou assim no evento OnChange do campo Conta Primária:

    //TENTATIVA PARA CARREGAR CONTATO PRIMÁRIO DA CONTA
    var field =crmForm.all.primarycontactid;
    if (crmForm.ObjectId == null)
    { 
     // Disable lookup for new account record as there can be no contacts 
     field.Disabled = true;
     } 
    else 
    { 
     
     field = crmForm.all.primarycontactid
     alert(field.DataValue) //aqui busca um valor nulo
    
     // Ensure that search box is not visible in a lookup dialog
     field.lookupbrowse = 1; 
     alert('fora if valor accountid = ' + crmForm.AccountId.DataValue )
      
     // Pass fetch xml through search value parameter 
     field.AddParam("search", 
      "<fetch mapping='logical'><entity name='contact'>" 
     + "<filter><condition attribute='accountid' operator='eq' value='" 
     + crmForm.AccountId 
     + "' /></filter></entity></fetch>"); 
    }

     Percebi que primarycontactid e accountid   sempre retornam NULO ou UNDEFINID, gostaria de saber o que esta errado e como resolvo este problema????

    Obrigado pela atenção.

    terça-feira, 11 de maio de 2010 15:44

Respostas

Todas as Respostas

  • Adriano,

     

    Faça dessa maneira

    var Cliente = new Array();

    Cliente = crmForm.all.primarycontactid.DataValue;

    var fieldContatos = crmForm.all.responsiblecontactid;

        fieldContatos.lookupbrowse = 1;

        fieldContatos.AddParam('search',

          '<fetch mapping='logical'><entity name='contact'>'

        +'<filter><condition attribute='parentcustomerid' operator='eq' value=''

        + Cliente[0].id

        + '' /></filter></entity></fetch>');


    Luiz Henroqie
    terça-feira, 11 de maio de 2010 18:11
  • Obrigado Luiz por responder tão rápido,

     

    Coloquei o teu código no evento onChange do meu campo, mas não ocorre absolutamente nada no outro campo que desejo filtrar e e seguida gera um erro de relatório do CRM.

    Também inserir um Alert('testando') abaixo da linha  var Cliente = new Array(); para testar mas parece que não esta rodando o código. Tem algo que possa fazer???

     

    Obs: o evento OnChange está habilitado!

     

    terça-feira, 11 de maio de 2010 18:34
  • Adriano,

    Vamos lá:

    var Cliente = new Array();

    Cliente = crmForm.all.NOME_CAMPO_CONTA_PRIMARIA.DataValue;

     

    var fieldContatos = crmForm.all.NOME_CAMPO_CONTATO_PRIMARIO;

        fieldContatos.lookupbrowse = 1;

        fieldContatos.AddParam('search',

          '<fetch mapping='logical'><entity name='contact'>'

        +'<filter><condition attribute='parentcustomerid' operator='eq' value=''

        + Cliente[0].id

        + '' /></filter></entity></fetch>');

    Com isso acho que vai dar certo. Qualquer coisa é só falar.

    Obs. Desculpe a demora em responder !


    Luiz Henroqie
    segunda-feira, 17 de maio de 2010 00:39
  •  

    Luiz,

    Tentei este código no evento onChange do campo conta Primária:

    var Cliente = new Array();
    Cliente = crmForm.all.parentaccountid.DataValue; 
    var fieldContatos = crmForm.all.primarycontactid;
      fieldContatos.lookupbrowse = 1; 
      fieldContatos.AddParam('search', 
       '<fetch mapping='logical'><entity name='contact'>' 
      +'<filter><condition attribute='parentcustomerid' operator='eq' value='' 
      + Cliente[0].id 
      + '' /></filter></entity></fetch>');

    Após a publicação da alteração ao escolher uma conta, não acontece nada no outro campo e quando vou fechar o formulário gera este erro padrão:

    Microsoft CRM encontrou um erro

    Este código que tu passou funcionou pra ti???   e outra  como pode-se verificar se as variáveis Cliente e fielContatos receberam valores??

    Valeu.

    segunda-feira, 17 de maio de 2010 19:39
  • Tenta assim:

     

    var Cliente = new Array
        Cliente = crmForm.all.parentaccountid.DataValue;

        var fieldContatos = crmForm.all.primarycontactid;
            fieldContatos.lookupbrowse = 1;
            fieldContatos.AddParam("search",
              "<fetch mapping='logical'><entity name='contact'>"
            +"<filter><condition attribute='parentcustomerid' operator='eq' value='"
            + Cliente[0].id
            + "' /></filter></entity></fetch>");


    Luiz Henroqie
    domingo, 23 de maio de 2010 01:40
  • Olá,

     

    Aqui tem uma solução funcional:

    http://mscrmfilteredlookup.codeplex.com/

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me
    • Marcado como Resposta RicardoAlves terça-feira, 9 de novembro de 2010 00:12
    terça-feira, 9 de novembro de 2010 00:12