[gelöst] Speichern bei Duplikaten unterbinden

27. November 2015 15:25

Moin zusammen,

unser CRM wird immer mehr verwendet. Was auf der einen Seite sehr schön ist, auf der anderen Seite brauche ich jedoch immer speziellere Lösungen.
Zwar habe ich inzwischen die Duplikatserkennungsregeln zum Laufen bekommen (es wurde das falsche Feld genutzt, weil es das zwei mal gibt). Bei erkannten Doppelungen ploppt zwar ein schöner Dialog auf, der Benutzer kann aber trotzdem speichern.
Nun ist es nicht so, dass ich meinen Nutzern nicht traue oder sie für doof erkläre. Das Problem vielmehr ist, dass beim Speichern einer Firma ein Sync-Dienst losläuft, der die Änderungen in eine andere DB schreibt, welche andere Software füttert. Und da kann es natürlich gefährlich werden.
Was kann ich jetzt noch machen? Ich weiß, dass man mittels JScript das Speichern unterbinden kann, aber wie mache ich das mit dem Feldabgleich, um auf Doppelungen zu prüfen?


Besten Dank und schönes Wochenende!
Zuletzt geändert von airliner am 1. Dezember 2015 08:55, insgesamt 1-mal geändert.

Re: Speichern bei Duplikaten unterbinden

30. November 2015 12:26

Hallo,

ich würde das mit einem PlugIn erledigen. Hier kannst du das speichern verhindern, den Benutzern eine vernünftige Meldung anzeigen und beliebige Filterregeln hinterlegen oder auch Duplikaterkennunsregeln einbinden und verwenden.

Re: Speichern bei Duplikaten unterbinden

1. Dezember 2015 08:55

Da ich mich mit Plugin-Entwicklung so gar nicht auskenne, habe ich den Katakomben des alten CRMs weiter gegraben und siehe da, es gb da schonmal ein ähnliches Skript. :roll:

Code:
function kdnr_vorh_check ()
{
var kdnr_akt=Xrm.Page.getAttribute("kundennummer").getValue();
var x=top.document.getElementById("account|NoRelationship|Form|Mscrm.Form.account.SaveAndClose");
var y=top.document.getElementById("account|NoRelationship|Form|Mscrm.Form.account.Save");

if (kdnr_akt == null)
   {
      kdnr_akt = 1;
   }
// Service Url
     var serverUrl = Xrm.Page.context.getServerUrl();
     var dataServiceUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc";
// Datenabfrage
  var oDataSelect = dataServiceUrl + "/AccountSet?$filter=kundennummer eq '" + kdnr_akt + "'";
// request generieren
     $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: oDataSelect,
        beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); },
        success: function (data, textStatus, XmlHttpRequest)           
                          {
                    if (data.d.results.length > 0)
                    {
                          var kdnr_vorh = data.d.results[0].kundennummer;
                    if (kdnr_akt == kdnr_vorh)
                          {
                     alert("Diese Kundennummer ist bereits vergeben."+"\n"+"Speichern ist nicht möglich");
                     console.log(data.d.results[0]);
                     x.style.visibility="hidden";
                     y.style.visibility="hidden";
                     $("#savefooter_statuscontrol").hide()
                    }
                    }else{
                       x.style.visibility ="visible";
                       y.style.visibility ="visible";
                       $("#savefooter_statuscontrol").show()
                    }
                  },
        error: function (XmlHttpRequest, textStatus, errorThrown)
                              { alert('OData Select Failed: ' + oDataSelect); return false;}
             });
}


Letztlich unterbinde ich das Speichern damit, dass die drei Speichern-Button versteckt werden.
Vielleicht hilft es ja dem einen oder anderen weiter...

Re: [gelöst] Speichern bei Duplikaten unterbinden

1. Dezember 2015 12:27

kleiner Hinweis: getDocumentById und generelle DOM Modifikationen sind nicht offiziell supported.

Re: [gelöst] Speichern bei Duplikaten unterbinden

1. Dezember 2015 16:49

Roxxinger hat geschrieben:kleiner Hinweis: getDocumentById und generelle DOM Modifikationen sind nicht offiziell supported.


Das ist richtig. Ich denke aber, dass diese Änderung überschaubar ist und notfalls abgeschaltet werden kann. Generell hast du aber Recht (obwohl ich gerade nicht weiß, warum sich MS hier so sperrt. Selbst bei SharePoint haben die sich in der 2013er Version durchaus geöffnet).