Gestão da edição em massa

by Pedro Azevedo 28. May 2015 10:14

Boas pessoal,

Mais uma vez estou aqui para falar-vos de uma solução para uma pergunta nos fóruns. A questão era prevenir a abertura de um formulário quando o tipo de formulário seja Edição Rápida, sem ler uma segunda vez a questão respondi rapidamente com este pedaço de código:

var formType= Xrm.Page.ui.getFormType();
if(formType == 6) { //Bulk Edit
    var items = Xrm.Page.ui.formSelector.items.get();
    for (var i in items) {
        var form= items[i];
        
        if (form.getLabel() == "Information") {
            form.navigate();
        }
    }
}

Erro meu pois tive logo uma resposta a dizer que não tinha funcionado e logo se fez luz, nos formulário de edição rápida a execução de Javascript está desabilitada. Já tinha tido este problema em versões anteriores então bastava ver se a resolução era idêntica, devo apenas chamar atenção que esta solução não é suportada.

Então a solução passar por primeiro adicionar a entidade que queremos ativar o Javascript numa solução e exportar essa mesma solução, extraímos a solução e editamos o ficheiro customizations.xml, procurem o formulário que querem correr o Javascript e dentro desse formulário procurem a tag events, vejam o exemplo:

<event name="onload" application="false" active="false">
  <Handlers>
    <Handler functionName="BulkEdit.OnLoad" libraryName="mvp_/scritps/bulkedit.js" handlerUniqueId="{a32493d2-a2d6-1ccd-2a0a-1cabcd6e9898}" enabled="true" parameters="" passExecutionContext="false" />
  </Handlers>
</event>

Sobre a tag event vamos adicionar o seguinte atributo BehaviorInBulkEditForm=”Enabled”

<event name="onload" application="false" active="false" BehaviorInBulkEditForm="Enabled">
  <Handlers>
    <Handler functionName="BulkEdit.OnLoad" libraryName="mvp_/scritps/bulkedit.js" handlerUniqueId="{a32493d2-a2d6-1ccd-2a0a-1cabcd6e9898}" enabled="true" parameters="" passExecutionContext="false" />
  </Handlers>
</event>

De seguida gravamos o ficheiro voltamos a compactar o ficheiro e voltamos a importar a solução. Se voltarmos a abrir o formulário de edição em massa ele vai dar erro, isto porque este formulário como vocês podem reparar não tem um seletor de formulários por isso a invocação a este objeto vai dar erro.

O objetivo da pergunta era a necessidade de abrir um formulário específico. Para vossa informação o formulário escolhido para a edição em massa é o último formulário que abrimos para essa entidade, ou seja, ao abrirmos uma entidade ele abre num determinado formulário, se mudarmos esse formulário a edição em massa vai abrir nesse último formulário.

A questão não parece mas é bastante complexa então e para não me alongar muito, neste post eu vou só demonstrar como detetar o formulário e se não for o correto dar uma mensagem e fechar esse mesmo formulário, num futuro post tratamos de abrir a edição em massa num respectivo formulário.

Um dos problemas é não termos o seletor de formulários por isso temos um problema de identificar se é um determinado formulário. Então a solução que arranjei foi buscar um determinado campo que apenas está presente nesse formulário. Se não for envio uma mensagem ao utilizador e fecho o formulário:

function OnLoad() {
    var field = Xrm.Page.getAttribute("reportingyear");
    if (!field) {
        Xrm.Utility.alertDialog("O formulário para edição em massa mal escolhido", AlertOk);
    }
}
 
function AlertOk() {
    Xrm.Page.ui.close();
}

Desta maneira conseguimos prevenir a abertura de um formulário em massa que não queiramos. Eu podia tentar abrir outro formulário em massa o problema é que a solução é complexa por isso deixamos para um post futuro.

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

Tags:

MVP Showcase - Slides

by Pedro Azevedo 19. May 2015 15:01

Boas pessoal,

Como tinha dito neste post realizei uma apresentação sobre o Dynamics CRM, desta vez centrada nos pontos onde conseguimos colocar código, aqui ficam os slides:

Até a próxima

Tags: , ,

Pesquisar registos no CRM que não obedeçam a um critério

by Pedro Azevedo 10. May 2015 22:37

Boas pessoal,

Hoje mais uma vez estou a escrever depois de uma dúvida no fórum, não é a primeira vez que respondo a este tipo de questão por isso resolvi criar este post. Hoje vou falar sobre as limitações da Pesquisa Avançada (Advanced Find), sim esta ferramenta que é amplamente utilizada tanto pelos utilizadores finais como por utilizadores avançados como nós Sorriso  e considerado por muitos o “melhor amigo”, pois consegue-se realizar pesquisas a BD com uma grande facilidade e guardar o resultado dessa query para uma vista, gráfico, etc.

Não acreditam nisto, basta colocarem a palavra não tem nas perguntas a realizar:

  • “Obter utilizadores que não tenham tarefas a mais de 3 meses”
  • “Obter contas inativas – que não tiveram leads, oportunidades ou propostas criadas nos últimos 3 meses”

Por muito que tentem não vão conseguir. Mas temos outra ferramenta para realizarmos estas pesquisas. Como? Com as listas de marketing estáticas conseguimos iterar sobre uma pesquisa inicial. Para ser mais explícito vamos fazer um step by step de como isto se pode realizar, para começar vamos criar uma lista de marketing estática:

image

Sobre esta lista de marketing vamos então fazer a nossa base, neste caso vamos acrescentar todas as contas ativas, para isso selecionamos o “Gerir Membros”:

image

Vamos adicionar através da pesquisa avançada:

image

O nosso critério para criar a base é que a conta esteja ativa:

image

Este é o resultado da nossa pesquisa, podemos escolher quem queremos adicionar ou adicionar todos e ficamos com estes membros na nossa lista de marketing:

image

Neste momento temos a nossa lista de marketing com todas as contas ativas, agora nós queremos retirar as contas que tenham oportunidades criadas nos últimos três meses, vamos novamente a “Gerir Membros” e em vez de “Adicionar …” vamos escolher “Remover utilizando a Localização Avançada” e colocar a seguinte query:

image

Obtemos um preview de quais as contas que obedecem a este critério e caso não se encontre bem, podemos voltar para trás e redefinir o nosso critério, vamos dizer que mais uma vez queremos retirar da nossa lista de marketing todas as contas aqui selecionadas:

image

Depois de remover sobra um cliente sobre o qual ainda não tinha criado nenhuma oportunidade, como as outras contas são as contas de teste e como esta instância online é nova, estas contas têm oportunidades nos últimos três meses.image

Um post simples mas muito eficaz.

 

Até a próxima

Tags: , ,

Disponibilidade do CRM 2015 Update 1

by Pedro Azevedo 5. May 2015 14:56

Boas pessoal,

Depois de dois posts a falar de dois updates para o CRM 2015 e CRM 2013 eis que surge um dos updates mais esperados para o CRM Online, o Update 1. Já tinha realizado dois overviews deste update podem ver aqui e aqui. Se fizerem um trial já estarão neste versão e já devem estar a receber notificações para aplicarem esta alteração nas vossas instâncias. Experimentem pois as novidades são muito boas.

Também já estão disponíveis as respetivas versões das aplicações “auxiliares”. Vejam aqui.

Até a próxima

Tags: , ,

About

Muito bem casado, Pai babado e um gosto muito grande pela tecnologia.

Tenho um lema "Sharing is Learning"

Mais aqui -> http://www.psazevedo.com

Month List