none
Filtro de campo LookUp - CRM 2015 ONPRIMESE RRS feed

  • Pergunta

  • Olá pessoal,

    Tenho a seguinte tarefa a executar:

    Dentro da oportunidade tenho um Grid com equipamentos que posso adicionar a qualquer momento. Mas, na minha regra de negocio so podem aparecer os equipamentos que fazem parte da Conta da Oportunidade. (A entidade 'Equipamentos' é personalizada e dentro dela existe um lookup ligando ela a uma Conta ).

    Mando uma imagem com as seguintes etapas:

    1 - O usuário seleciona a uma conta

    2 - Dentro do Grid de equipamentos clica no sinal de + para adicionar um equimento a oportunidade.

    3 - aparece um campo lookup temporario para que possa selecionar um equimapento. (lembrando que, no momento são exibidos todos os equipamentos, mas preciso exibir neste lookup apenas equipamentos que estão ligados a conta selecionada)

    Obs: Achei um tutorial muito bom para filtrar campos lookups -> http://inogic.com/blog/2014/09/add-custom-view-in-lookup-and-disable-all-the-other-views/

    Testei em um campo lookup qualquer e deu certo, mas para este campo temporario da etapa 3... não funciona a quando tento setar a view dele -> Xrm.Page.getControl(“nome_campo_lookup”).addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);

    Fala que nao consegue setar uma Viiew em indefinido... ou seja, nao consigo usar o prefixo 'Xrm.Page.getControl' pois o campo nao parece fazer parte do formulario atual.

    Alguem tem noção do que eu poça fazer?

    Situação onde terá de ser feito um filtro no LookUp temporario


    quarta-feira, 15 de abril de 2015 13:30

Respostas

  • Boas Wagner,

    Tens aqui também um artigo mais ou menos :D

    Mas penso que o teu problema está em obter a referência para o controlo Lookup, porque desde o CRM 2013 que os controlos são carregados assincronamente, com isso deixamos de ter a certeza de quando é que os controlos ficam disponíveis no DOM. Para resolver esta questão temos que usar o método setTimeout, vê o exemplo a seguir:

    function getLookup() {
    	var lookup = Xrm.Page.getControl("nome_campo_lookup");
    
    	if(lookup == null) {
    		setTimeout("getLookup();", 1500);
    	}
    	else {
    		lookup.addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
    	}
    }
    

    Se não funcionar a mesma coloca aqui que tentamos ir por outro caminho.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011


    quarta-feira, 15 de abril de 2015 14:05

Todas as Respostas

  • Boas Wagner,

    Tens aqui também um artigo mais ou menos :D

    Mas penso que o teu problema está em obter a referência para o controlo Lookup, porque desde o CRM 2013 que os controlos são carregados assincronamente, com isso deixamos de ter a certeza de quando é que os controlos ficam disponíveis no DOM. Para resolver esta questão temos que usar o método setTimeout, vê o exemplo a seguir:

    function getLookup() {
    	var lookup = Xrm.Page.getControl("nome_campo_lookup");
    
    	if(lookup == null) {
    		setTimeout("getLookup();", 1500);
    	}
    	else {
    		lookup.addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
    	}
    }
    

    Se não funcionar a mesma coloca aqui que tentamos ir por outro caminho.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011


    quarta-feira, 15 de abril de 2015 14:05
  • Azevedo entendi a ideia e sua utilidade com o assincronismo.. mas ainda não funcionou, fica infinitamente buscando algo no campo a qual referencio. Na verdade, como ele fica dentro de um grid a aparece temporariamente, pequei o seu 'id' atravez do debugger do chrome. e usei todos os ids ao redor da div mãe. So que nenhum deles deu certo. 

    O identificador que realmente acho que poderia ser chama lookup_equipamento...mesmo ele nao pegou.

    comparei a estrutura html desse campo com as de outros campos lookups, e acabei selecionando o 'id' que fica na região em comum aos campos lookups. 

    Sinceramente não sei mais o que fazer cara.

    Obs: mas seu post abaixo é extremamente interessante. sabe me informar se um campo existente lookup do tipo contato eu posso acrescentar outro tipo de entidade nele? pois exemplo do Post é de um lookup do tipo 'customer' que ja é nativo do sistema com 3 entidades

    Customizar caixa de pesquisa de um lookup

    "

    quarta-feira, 15 de abril de 2015 17:04
  • Me desculpe pela demora Azevedo, apareceram outras demandas e tive que deixar esta atividade de lado por um tempo. Quando pude testar o trecho de código que me aconselhou fica executando infinitamente, parece que ainda não consigo acessar o controle pelo DOM. 

    Você mencionou que poderíamos tentar por outro caminho, peço perdão pela minha demora e se ainda puder me auxiliar nesta tarefa fico grato.

    sexta-feira, 17 de julho de 2015 14:55