none
Deaktivieren von Firmen verhindern RRS feed

  • Frage

  • Hallo Zusammen,

    hat mir jemand ne Info (oder gar ein Beispiel) wie ich verhindern kann, dass Firmen deaktiviert werden?


    Viele Grüße
    Benni
    Mittwoch, 7. Oktober 2009 14:28

Antworten

  • Plugin mit der Message SetState im Account abfangen und bei active belassen...

    gruß
    localh0rst
    • Als Antwort markiert Benni_1983 Donnerstag, 8. Oktober 2009 11:22
    Mittwoch, 7. Oktober 2009 14:39
  • Hallo Benni,

    um die Menüeinträge im OnLoad des Formulars zu ändern, kannst du folgenden Code verwenden:

    if (document.all._MIchangeStatedeactivate100145 != null)

    {

    document.all._MIchangeStatedeactivate100145.style.display = "none";

    }

    if (document.all._MIchangeStateactivate100146 != null)

    {

    document.all._MIchangeStateactivate100146.style.display = "none";

    }


    Um diese Einträge auch aus der Gridübersicht zu entfernen, musst du etwas mehr machen. Es gibt im Standard kein OnLoad einer Übersicht, die du anpassen kannst. Aber im CRM können ja alle Seiten über URL aufgerufen werden.
    Schau dir einmal diese Seite an. 

    http://mscrm4ever.blogspot.com/2008/09/decorating-crmgrid-columns.html


    Du must nur den Teil mit der E-Mail entfernen und in das OnLoad den Code zum deaktivieren der Menüeinträge einfügen.
    Durch diesen "Trick" hast du mit JavaScript vollen Zugriff auf das Grid, die Buttons, etc.




    Viele Grüße

    Michael Sulz
    axcentro GmbH
    MVP für Microsoft Dynamics CRM
    • Als Antwort markiert Benni_1983 Donnerstag, 8. Oktober 2009 11:22
    Donnerstag, 8. Oktober 2009 06:50
  • Alles klar.

    bin nun ganz auf nummer sicher gegangen;-)

    plugin:

      public class AccountDisableVerhindern : IPlugin
        {
    
                public void Execute(IPluginExecutionContext context)
                {
                try
                {
    
                    string new_statecode = context.InputParameters[Microsoft.Crm.Sdk.ParameterName.State].ToString();
                    string new_statuscode = context.InputParameters[Microsoft.Crm.Sdk.ParameterName.Status].ToString();
                    
               
                    if (new_statuscode == "2")
                    {
                        string errorText = "Accounts dürfen nicht deaktiviert werden!";
                        throw new InvalidPluginExecutionException(errorText);
                    }
                    //}
                }
                catch(Exception ex)
                {
                    throw ex;
    
                }
            }
        }
    danke für die Hilfe!
    • Als Antwort markiert Benni_1983 Mittwoch, 21. Oktober 2009 20:33
    Donnerstag, 8. Oktober 2009 08:01

Alle Antworten

  • Plugin mit der Message SetState im Account abfangen und bei active belassen...

    gruß
    localh0rst
    • Als Antwort markiert Benni_1983 Donnerstag, 8. Oktober 2009 11:22
    Mittwoch, 7. Oktober 2009 14:39
  • Hi,

    localh0rst hat bereits alles gesagt ;)
    Zusätzlich solltest du das Plugin auch für die Message SetStateDynamic registrieren.
    Mittwoch, 7. Oktober 2009 14:41
  • Hallo Benni,

    alternativ zum PlugIn kannst du auch einfach die Einträge für das aktivieren und deaktivieren der Datensätze aus dem Menü entfernen. Du musst dies nur im Formular und in der Tabellenübersicht machen. Habe ich letztens noch bei einem Kunden gemacht, dauert nur 10 Minuten.

    Viele Grüße

    Michael
    Viele Grüße

    Michael Sulz
    axcentro GmbH
    MVP für Microsoft Dynamics CRM
    Mittwoch, 7. Oktober 2009 14:46
  • Vielen Dank für die Antworten.

    @Michael: hast du mir vielleicht ein Beispiel wie das geht? was heißt in den Tabellenübersichten? wie komme ich da ran?

    Gruß
    Benni

    Mittwoch, 7. Oktober 2009 18:19
  • Hallo Benni,

    um die Menüeinträge im OnLoad des Formulars zu ändern, kannst du folgenden Code verwenden:

    if (document.all._MIchangeStatedeactivate100145 != null)

    {

    document.all._MIchangeStatedeactivate100145.style.display = "none";

    }

    if (document.all._MIchangeStateactivate100146 != null)

    {

    document.all._MIchangeStateactivate100146.style.display = "none";

    }


    Um diese Einträge auch aus der Gridübersicht zu entfernen, musst du etwas mehr machen. Es gibt im Standard kein OnLoad einer Übersicht, die du anpassen kannst. Aber im CRM können ja alle Seiten über URL aufgerufen werden.
    Schau dir einmal diese Seite an. 

    http://mscrm4ever.blogspot.com/2008/09/decorating-crmgrid-columns.html


    Du must nur den Teil mit der E-Mail entfernen und in das OnLoad den Code zum deaktivieren der Menüeinträge einfügen.
    Durch diesen "Trick" hast du mit JavaScript vollen Zugriff auf das Grid, die Buttons, etc.




    Viele Grüße

    Michael Sulz
    axcentro GmbH
    MVP für Microsoft Dynamics CRM
    • Als Antwort markiert Benni_1983 Donnerstag, 8. Oktober 2009 11:22
    Donnerstag, 8. Oktober 2009 06:50
  • Alles klar.

    bin nun ganz auf nummer sicher gegangen;-)

    plugin:

      public class AccountDisableVerhindern : IPlugin
        {
    
                public void Execute(IPluginExecutionContext context)
                {
                try
                {
    
                    string new_statecode = context.InputParameters[Microsoft.Crm.Sdk.ParameterName.State].ToString();
                    string new_statuscode = context.InputParameters[Microsoft.Crm.Sdk.ParameterName.Status].ToString();
                    
               
                    if (new_statuscode == "2")
                    {
                        string errorText = "Accounts dürfen nicht deaktiviert werden!";
                        throw new InvalidPluginExecutionException(errorText);
                    }
                    //}
                }
                catch(Exception ex)
                {
                    throw ex;
    
                }
            }
        }
    danke für die Hilfe!
    • Als Antwort markiert Benni_1983 Mittwoch, 21. Oktober 2009 20:33
    Donnerstag, 8. Oktober 2009 08:01
  • Hallo Benni,

    machen wir doch gerne :-)

    Ich würde das übrigens nicht so umsetzen, da es für die usability nicht so schön ist, einen menüpunkt anzubieten und dann zu sagen, darfst du aber nicht, aber das ist sicherlich Ansichtssache.

    Es wärte nett, wenn du eine beantwortete Frage als beantwortet markieren würdest. Es erleichtert allen Benutzern des Forum die Suche und die Übersicht.



    Viele Grüße

    Michael Sulz
    axcentro GmbH
    MVP für Microsoft Dynamics CRM
    Donnerstag, 8. Oktober 2009 11:20
  • Hi Michael,

    ich baue deinen Typ auch noch mit ein, aber das Plugin sichert es auf jeden Fall ab, auch wenn es jemand schafft das javascript zu umgehen und die firma deaktivieren will.
    User sind fiese Menschen und kommen oft auf seltsame Ideen ;-)

    Gruß
    Benni
    Donnerstag, 8. Oktober 2009 11:24
  • Hi,

    wenn es bei euch generell so sein soll, dass Firmen nicht deaktiviert werden dürfen, dann musst du auf jeden Fall das Plugin verwenden. Es geht dabei nicht nur um das Umgehen des Scripts, etc. es soll ja schließlich auch nicht per SDK möglich sein.

    Zusätzlich würde ich aber aus den gleichen Gründen, wie Michael genannt hat, die Buttons dazu entfernen.
    Donnerstag, 8. Oktober 2009 11:29
  • Hi,

    stimmt, z.B. können auch Workflows Firmen definieren. Und je nachdem, wer Workflows erstellen darf .....
    Viele Grüße

    Michael Sulz
    axcentro GmbH
    MVP für Microsoft Dynamics CRM
    Donnerstag, 8. Oktober 2009 11:35