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:

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

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