Usuário com melhor resposta
Lookup com Filtro

Pergunta
-
Caros,
Ando com um problema um tanto chato que preciso resolver no CRM 4.0, mas ainda não encontrei a solução.
Em uma determinada entidade que criei, chamada Solicitação, preciso relacionar à ela outras duas entidades, Estado e Cidade.
Na entidade Cidade eu tenho uma relação para indicar o Estado que esta cidade pertence.
O que preciso é conseguir selecionar na entidade Solicitação o Estado e, na hora que eu for selecionar a Cidade, que só venha no Lookup as cidades que pertençam ao Estado que determinei!
Alguém pode me dar uma luz de como fazer isso?
Obrigado!
Respostas
-
Ricardo,
Notei um ponto de "limitação" no uso do Picklist dinâmico.
Realmente faz sentido o erro, porque para o CRM, o conteúdo do Picklist vem de sua base de dados (Metadados). Como estamos preenchendo o Picklist somente ao carregar o formulário, no lado do cliente, ao salvar, o CRM "fica confuso", dizendo que [antes] não existiam dados no Picklist e que, [ao salvar], agora tem dados!...gerando então a msg de erro.
Sugestão para solução:
Use o Picklist dinâmico [apenas] como repositório temporário de dados, ou seja, para visualizar o que deseja. No [OnChange] do Picklist, "copie" o conteúdo da opção selecionada para um campo simples (texto) e, ao salvar, no [OnSave]do Form, limpe novamente o Picklist para não gerar o erro novamente. Limpe da seguinte forma:
for(i=crmForm.all.new_pick.options.length-1; i>=0 ;i--)
{
crmForm.all.new_pick.remove(i);
}
Mais trabalhoso, não!!...
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Sugerido como Resposta Gilberto Tezini sexta-feira, 27 de fevereiro de 2009 15:34
- Marcado como Resposta Ricardo Brunoro terça-feira, 3 de março de 2009 13:22
Todas as Respostas
-
Olá Ricardo,
Recurso de filtro de [Lookup] ainda não é possível, somente na próxima versão do CRM, a 5.0!
Porém, é possível desenvolver um recurso para que, ao selecionar o Estado, vc popule um [PICKLIST] com as cidades correspondentes.
Segue um exemplo meu, em: http://gtezini.blogspot.com/2009/02/crm-40-preenchimento-automatico-de.html
[]s
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Gilberto, tudo bom?
Cara, já andei fuçando seu blog (muito bom por sinal, parabéns!!) e até "brinquei" um pouco com esse seu exemplo, mas tive um problema ao tentar salvar o registro com esse picklist populado "real time", ele retornou um erro dizendo que o número informado não condizia com o range possível (algo assim).
Você tem idéia do que pode ser? Vou montar esse teste que fiz novamente e te falo o erro que deu exatamente.
Outra coisa, é possível eu fazer esse picklist vir em ordem alfabética? Quando fiz o teste veio por ordem de criação dos registros.
Obrigado! -
Ricardo,
Muito grato! A idéia é realmente compartilhar experiências!
Faça o que falou, tente usar meu exemplo e depois me passe o erro exato a que se referiu.
Referente a ordenação, basta fazer o seguinte:
No meu exemplo, utilizo o método [RetrieveMultiple], em JavaScipt, para buscar os dados. Basta acrescentar o código abaixo na string que monta o método. Acrescente o código antes da TAG </query>:
" <q1:Orders>" +
" <q1:Order>" +
" <q1:AttributeName>name</q1:AttributeName>" +
" <q1:OrderType>Ascending</q1:OrderType>" +
" </q1:Order>" +
" </q1:Orders>"
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Gilberto,
Perfeito esse método de ordenar! Tá ficando perfeito o que eu preciso, o problema agora é o erro ao gravar.
O erro é o seguinte:
"Um ou mais dos valores de opção desta lista de seleção não estão no intervalo de valores permitidos."
Alguma idéia do que possa ser?
Obrigado! -
Ricardo,
Notei um ponto de "limitação" no uso do Picklist dinâmico.
Realmente faz sentido o erro, porque para o CRM, o conteúdo do Picklist vem de sua base de dados (Metadados). Como estamos preenchendo o Picklist somente ao carregar o formulário, no lado do cliente, ao salvar, o CRM "fica confuso", dizendo que [antes] não existiam dados no Picklist e que, [ao salvar], agora tem dados!...gerando então a msg de erro.
Sugestão para solução:
Use o Picklist dinâmico [apenas] como repositório temporário de dados, ou seja, para visualizar o que deseja. No [OnChange] do Picklist, "copie" o conteúdo da opção selecionada para um campo simples (texto) e, ao salvar, no [OnSave]do Form, limpe novamente o Picklist para não gerar o erro novamente. Limpe da seguinte forma:
for(i=crmForm.all.new_pick.options.length-1; i>=0 ;i--)
{
crmForm.all.new_pick.remove(i);
}
Mais trabalhoso, não!!...
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Sugerido como Resposta Gilberto Tezini sexta-feira, 27 de fevereiro de 2009 15:34
- Marcado como Resposta Ricardo Brunoro terça-feira, 3 de março de 2009 13:22
-
Gilberto,
Realmente ficou trabalhoso agora... heheh!
Até estive procurando na Internet algo sobre isso e encontrei um exemplo em um blog onde fizeram um código que transforma um campo texto num tipo de picklist... aparentemente funciona, mas acho que é uma solução um tanto complicada e com certeza não deve ser suportada heheheh.Vou tentar arrumar a solução conforme você falou também, e ver se atende a necessidade!
Obrigado!
-
Olá Ricardo,
Não sei se é tarde demais!...porém consegui alterar o código do Picklist dinâmico, de forma que não ocorre mais o erro na gravação.
Apenas um detalhe (explicado no blog): Após criar seu Picklist, preenchê-lo como uma quantidade de informações [suficientes]. O que isto significa: Por exemplo, ao selecionar uma [Conta], tente saber qual seria a quantidade [máxima] de contatos carregados no Picklist. Então carregue seu Picklist com esta qtde de linhas (o texto para o Picklist não importa).
Segue artigo atualizado: http://gtezini.blogspot.com/2009/02/crm-40-preenchimento-automatico-de.html
Acredito que melhorou um pouco! rsrs
[]s
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Olá Gilberto!
Tudo bom?
Tarde demais com certeza não é heheh!
A tua idéia então é preencher o picklist logo após criar ele vazio para que seja possível ao recarregar ele com os dados dinâmicos ele não se perder na hora de gravar o valor, certo?
Se eu tiver um picklist sendo preenchido atualmente com 15 registros, por exemplo, mas pode ser que este aumente para 25 registros, então o ideal é já criar o picklist com uns 30 registros para não ter problema? Se eu criar com 15 e ele precisar preencher 16 vai dar erro né?
Obrigado pela ajuda!! -
-
Gilberto,
Pensando na sua solução de jogar o texto do item selecionado no picklist para um campo texto e limpando o picklist para salvar, dei uma incrementada e fiz com que o texto fosse jogado para um campo lookup da cidade, o que vai facilitar inclusive para localizações avançadas, pelo que vi!
Obrigado mais uma vez! -