2013-05-16 11 views
8

Ich verwende derzeit InvalidPluginExecutionException, um die Nachricht an den Benutzer zu senden, aber es stellt sich heraus, dass die Nachricht in Englisch ist "Business Process Error", über die das Fehlerfeld erscheint die Schaltfläche "download log file". Dies ist kein Fehler, da der Benutzer versucht, einen Datensatz zu duplizieren, wie im Code zu sehen ist. Gibt es einen anderen Weg, ohne InvalidPluginExecutionException zu verwenden, um eine Warnung anzuzeigen?So senden Sie eine Warnung an den Benutzer über ein Plug-in, ohne InvalidPluginExecutionException zu verwenden?

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."); 
     } 
    } 
} 

Antwort

8

Die einzige Methode zum Anzeigen eines Meldungsfelds für den Benutzer von einem Plug-in ist die Verwendung einer Ausnahme aus der Validierungsphase. Sie könnten jedoch Javascript verwenden, eine einfache OData-Abfrage für das Ereignis On_Save des Formulars ausführen und eine Warnmeldung mit den gewünschten Informationen anzeigen und das Speichern des Formulars abbrechen.

Dies würde Ihnen ermöglichen, jede benutzerdefinierte Nachricht anzuzeigen, die Sie möchten, und verhindern, dass das Plugin den Download-Dialog startet und anzeigt.

1

Ich bin vielleicht etwas spät, aber in neueren Versionen von CRM gibt es mehrere Möglichkeiten zu erreichen, was Sie wollen. Die besseren beeing:

  1. Business Rules
  2. Validation JS verwenden und den Benutzer zu benachrichtigen mit

Ich hoffe Microsoft nicht lies das aber ...

Sie können auch ein synchrones Plugin verwenden und sich mit dem Business Process Error Dialogfeld zufriedengeben. Ich habe gerade herausgefunden, dass dieser Dialog bis zu einem gewissen Grad hackbar ist. Geben Sie einfach HTML in der Ausnahme-Nachricht wie folgt zurück:

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.  

"); 

Welche Ergebnisse in etw. dies wie:

enter image description here

+1

Nichts davon ist in CRM 2011 verfügbar (vielleicht den Hacky HTML funktioniert, obwohl) – Alex

+0

Ja, richtig. Guter Punkt. – nozzleman

+0

Ich mag die html smylie hack –