2013-05-16 10 views
8

Attualmente sto usando InvalidPluginExecutionException per inviare il messaggio all'utente, ma si scopre che il messaggio è in inglese "Business Process Error" oltre il quale la casella di errore appare il pulsante "download log file". Questo non è un errore perché l'utente sta tentando di duplicare un record, come si può vedere nel codice. C'è un altro modo senza dover usare InvalidPluginExecutionException per mostrare un avviso?Come inviare un avviso all'utente tramite plugin senza utilizzare InvalidPluginExecutionException?

QueryExpression query1 = new QueryExpression(); 
query1.ColumnSet = new ColumnSet(true); 
query1.EntityName = "new_appraisers"; 

EntityCollection ec = service.RetrieveMultiple(query1); 

if (ec.Entities.Count <= 0) 
{ 
    log.Tb_Log_Create("Appraiser created"); 
} 
else 
{ 
    foreach (Entity app in ec.Entities) 
    { 
     if (app["fcg_appraiser"].ToString() == name) 
     { 
      log.Tb_Log_Create("appraiser allready exist"); 

      throw new InvalidPluginExecutionException("The name allready exists"); 
     } 

     if (app["new_login"].ToString() == login) 
     { 
      log.Tb_Log_Create("appraiser allready exist"); 

      throw new InvalidPluginExecutionException("The login allready exists."); 
     } 
    } 
} 

risposta

8

L'unico metodo per visualizzare una finestra di messaggio per l'utente da un plug-in è l'utilizzo di un'eccezione dalla fase di convalida. Puoi comunque utilizzare javascript, eseguire una semplice query OData sull'evento On_Save del modulo e visualizzare una finestra di avviso con qualsiasi informazione desideri e annullare il salvataggio del modulo.

Ciò consentirebbe di visualizzare qualsiasi messaggio personalizzato desiderato e di impedire l'attivazione del plug-in e la visualizzazione della finestra di dialogo del file di download.

1

Posso essere un po 'in ritardo, tuttavia, nelle versioni più recenti di CRM ci sono diverse possibilità per ottenere ciò che si desidera. Quei migliori beeing:

  1. Business Rules
  2. convalida utilizzando JS e notificare l'utente che usa

spero che Microsoft non lo fa leggi questo ma ...

È inoltre possibile utilizzare un plug-in sincrono ed essere felici con la finestra di dialogo Errore processo interruzione. Ho appena scoperto che questo Dialog è hackerabile in una certa misura. Basta restituire HTML nel messaggio Exeptions in questo modo:

throw new InvalidPluginExecutionException(
@"<img height='16px' src='http://emojione.com/wp-content/uploads/assets/emojis/1f644.svg'> <strong>Oh snap!</strong> 

It seems the record can not be saved in its current state.  

"); 

Quali risultati in sth. in questo modo:

enter image description here

+1

Niente di tutto questo è disponibile in CRM 2011 (forse le opere HTML hacky, però) – Alex

+0

Sì, giusto. Buon punto – nozzleman

+0

Mi piace l'html smylie hack –

Problemi correlati