2013-05-16 7 views
8

Obecnie używam InvalidPluginExecutionException, aby wysłać wiadomość do użytkownika, ale okazuje się, że wiadomość jest w języku angielskim "Business Process Error", po przekroczeniu której pojawia się komunikat błędu o przycisku "download log file". Nie jest to błąd, ponieważ użytkownik próbuje zduplikować rekord, co widać w kodzie. Czy jest inny sposób, bez konieczności używania InvalidPluginExecutionException, aby wyświetlić alert?Jak wysłać alert do użytkownika za pomocą wtyczki bez użycia wyjątku 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."); 
     } 
    } 
} 

Odpowiedz

8

Jedyną metodą wyświetlenia okna komunikatu użytkownikowi z wtyczki jest użycie wyjątku od etapu sprawdzania poprawności. Możesz jednak użyć javascript, wykonać proste zapytanie OData w zdarzeniu On_Save w formularzu i wyświetlić okno z dowolnymi informacjami, a następnie anulować zapisanie formularza.

Umożliwia to wyświetlenie dowolnej niestandardowej wiadomości i uniemożliwi uruchamianie wtyczki oraz wyświetlenie okna dialogowego pobierania pliku.

1

Być może trochę się spóźniłem, jednak w nowszych wersjach CRM istnieje kilka możliwości osiągnięcia tego, co chcesz. Lepszych beeing:

  1. Business Rules
  2. walidacji za pomocą JS i powiadamiania użytkownika za pomocą

Mam nadzieję, że Microsoft nie przeczytaj to, ale ...

Można również użyć wtyczki synchronicznej i być zadowolonym z powodu błędu Business Process Error . Właśnie dowiedziałem się, że ten dialog jest do pewnego stopnia hakowany. Po prostu zwróć HTML w komunikacie Exeptions, tak:

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.  

"); 

Co skutkuje czymś. tak:

enter image description here

+1

Nic z tego nie jest dostępny w CRM 2011 (być może hacky prac HTML, choć) – Alex

+0

Tak, racja. Słuszna uwaga. – nozzleman

+0

Podoba mi się html smylie hack –

Powiązane problemy