Showing posts with label Crm_java Script. Show all posts
Showing posts with label Crm_java Script. Show all posts

Friday 28 September 2012

Code snippet for custom wcf service calling from mscrm 2011 form java script:




Call the Custom WCF request in Java Script:

Var xmlhttp = new XMLHttpRequest ();

Retrieve the WCF URL from from “ApplicationConfig” Entity using following method.

Var WcfServiceUrlValue= GetConfigValueByKey (Key Name);

WcfServiceUrlValue=WcfServiceUrlValue.avd_ConfigValue;

xmlhttp.open('POST', WcfServiceUrlValue , false);

//Get the request XML from WCF Test Client or Using Feddler Tool

//Place the Inteface name and Method Name following highlighted text.

xmlhttp.setRequestHeader('SOAPAction', 'http://tempuri.org/IDynamicsPaymentService/UpdateExpiredCheque ');

xmlhttp.setRequestHeader('Content-Type', 'text/xml');

var data = '';

data+='<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">';

data+='<s:Body>';

   data+='UpdateExpiredCheque  xmlns="http://tempuri.org/">';

   data+='<data xmlns:d4p1="http://schemas.datacontract.org/2004/07/ UU.Crm.WCFService.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">';

       data+='<d4p1:CaseNumber>12345</d4p1:CaseNumber>';

        data+='<d4p1:ChequeAmount>200</d4p1:ChequeAmount>';

        data+='<d4p1:ChequeNumber>23421213</d4p1:ChequeNumber>';

        data+='<d4p1:OriginalPaymentDate>1/10/2012</d4p1:OriginalPaymentDate>';

        data+='<d4p1:OriginalPaymentReference>1234</d4p1:OriginalPaymentReference>';

      data+='</data>';

    data+='</UpdateExpiredCheque>';

  data+='</s:Body>';

  data += '</s:Envelope>';

            xmlhttp.send(data);

            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

            xmlDoc.async = false;

            xmlDoc.loadXML(xmlhttp.responseXML.xml);

//Check the Response Object  and Retrieve the tag values following way.

if (xmlDoc.xml != "") {

                var Msg;

                var ResponseCollection = xmlDoc.getElementsByTagName("a:ResponseCollection");

                if (ResponseCollection.length > 0) {

                    if (ResponseCollection[0].firstChild != null) {

                        Msg = "Message Severity :" + ResponseCollection[0].firstChild.childNodes[0].nodeTypedValue + '\n';

                        Msg += "Warning :" + ResponseCollection[0].firstChild.childNodes[1].nodeTypedValue;

                        alert(Msg);

                    }

                }

            }

Friday 21 September 2012

ODATA  restrictions in mscrm 2011:

 

Operator

Restrictions

$expand
· Max expansion 6
$top
· Page size is fixed to max 50 records
· $top gives the total records returned across multiple pages
$skip
· When using with distinct queries, we are limited to the total (skip + top) record size = 5000.
· In CRM the distinct queries does not use paging cookie are and so we are limited by the CRM platform limitation to the 5000 record.
$select
· One level of navigation property selection is allowed I.e.
…/AccountSet?$select=Name,PrimaryContactId,account_primary_contact
…/AccountSet?$select=Name,PrimaryContactId,account_primary_
contact/LastName&$expand=account_primary_contact
$filter
· Conditions on only one group of attributes are allowed. By a group of attribute I am referring to a set of conditions joined by And/Or clause.
· The attribute group may be on the root entity
.../TaskSet?$expand=Contact_Tasks&$filter=Subject eq 'test' and Subject ne null
· (or) on the expanded entity.
.../TaskSet?$expand=Contact_Tasks&$filter=Contact_Tasks/FirstName eq '123‘
· Arithmetic, datetime and math operators are not supported
· Under string function we support Substringof, endswith, startswith
$orderby
· Order are only allowed on the root entity.
Navigation
· Only one level of navigation is allowed in any direction of a relationship. The relationship could be 1:N, N:1, N:N

Thursday 13 September 2012

code to open dialog from form java script in mscrm 2011:



function opendialog() {

    // If on a create form then save and reload sot he dialog can open
    if(Xrm.Page.ui.getFormType() == 1)
    {
        Xrm.Page.data.entity.save(null);
        return;
    }

    // If sale appointment then trigger dialog
    if (Xrm.Page.getAttribute("new_issalesappointment").getValue() == true) {

        window.open("/" + Xrm.Page.context.getOrgUniqueName() + "/cs/dialog/rundialog.aspx?DialogId=%7b9D975EF8-74E0-4EE3-9D50-78FE7BAABF74%7d&EntityName=appointment&ObjectId=" + Xrm.Page.data.entity.getId());

        // Set as being displayed so it doesn't trigger again on load
        Xrm.Page.getAttribute("new_displayeddialog").setValue(true);

    }
}

function opendialogonload() {

    if (Xrm.Page.getAttribute("new_displayeddialog").getValue() == null
      || Xrm.Page.getAttribute("new_displayeddialog").getValue() == false) {
        opendialog();
    }

 

 

Trigger workflow with JavaScript:

if (typeof (SDK) == "undefined")

   { SDK = { __namespace: true }; }

       //This will establish a more unique namespace for functions in this library. This will reduce the

       // potential for functions to be overwritten due to a duplicate name when the library is loaded.

       SDK.SAMPLES = {

           _getServerUrl: function () {

               ///<summary>

               /// Returns the URL for the SOAP endpoint using the context information available in the form

               /// or HTML Web resource.

               ///</summary>

               var OrgServicePath = "/XRMServices/2011/Organization.svc/web";

               var serverUrl = "";

               if (typeof GetGlobalContext == "function") {

                   var context = GetGlobalContext();

                   serverUrl = context.getServerUrl();

               }

               else {

                   if (typeof Xrm.Page.context == "object") {

                         serverUrl = Xrm.Page.context.getServerUrl();

                   }

                   else

                   { throw new Error("Unable to access the server URL"); }

                   }

                  if (serverUrl.match(/\/$/)) {

                       serverUrl = serverUrl.substring(0, serverUrl.length - 1);

                   }

                   return serverUrl + OrgServicePath;

               },

           ExecuteWorkflowRequest: function () {

               var requestMain = ""

               requestMain += "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";

               requestMain += "  <s:Body>";

               requestMain += "    <Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";

               requestMain += "      <request i:type=\"b:ExecuteWorkflowRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";

               requestMain += "        <a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";

               requestMain += "          <a:KeyValuePairOfstringanyType>";

               requestMain += "            <c:key>EntityId</c:key>";

               requestMain += "            <c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">a46fa1c1-e38d-e011-86ba-1cc1dee8ea49</c:value>";

               requestMain += "          </a:KeyValuePairOfstringanyType>";

               requestMain += "          <a:KeyValuePairOfstringanyType>";

               requestMain += "            <c:key>WorkflowId</c:key>";

               requestMain += "            <c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">d009c04f-f826-4b3b-90cd-209581cfc2ff</c:value>";

               requestMain += "          </a:KeyValuePairOfstringanyType>";

               requestMain += "        </a:Parameters>";

               requestMain += "        <a:RequestId i:nil=\"true\" />";

               requestMain += "        <a:RequestName>ExecuteWorkflow</a:RequestName>";

               requestMain += "      </request>";

               requestMain += "    </Execute>";

               requestMain += "  </s:Body>";

               requestMain += "</s:Envelope>";

               var req = new XMLHttpRequest();

               req.open("POST", SDK.SAMPLES._getServerUrl(), true)

               // Responses will return XML. It isn't possible to return JSON.

               req.setRequestHeader("Accept", "application/xml, text/xml, */*");

               req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

               req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");

               var successCallback = null;

               var errorCallback = null;

               req.onreadystatechange = function () { SDK.SAMPLES.ExecuteWorkflowResponse(req, successCallback, errorCallback); };

               req.send(requestMain);

           },

       ExecuteWorkflowResponse: function (req, successCallback, errorCallback) {

               ///<summary>

               /// Recieves the assign response

               ///</summary>

               ///<param name="req" Type="XMLHttpRequest">

               /// The XMLHttpRequest response

               ///</param>

               ///<param name="successCallback" Type="Function">

               /// The function to perform when an successfult response is returned.

               /// For this message no data is returned so a success callback is not really necessary.

               ///</param>

               ///<param name="errorCallback" Type="Function">

               /// The function to perform when an error is returned.

               /// This function accepts a JScript error returned by the _getError function

               ///</param>

               if (req.readyState == 4) {

               if (req.status == 200) {

               if (successCallback != null)

               { successCallback(); }

               }

               else {

                   errorCallback(SDK.SAMPLES._getError(req.responseXML));

               }

           }

       },

       _getError: function (faultXml) {

           ///<summary>

           /// Parses the WCF fault returned in the event of an error.

           ///</summary>

           ///<param name="faultXml" Type="XML">

           /// The responseXML property of the XMLHttpRequest response.

           ///</param>

           var errorMessage = "Unknown Error (Unable to parse the fault)";

           if (typeof faultXml == "object") {

               try {

                   var bodyNode = faultXml.firstChild.firstChild;

                   //Retrieve the fault node

                   for (var i = 0; i < bodyNode.childNodes.length; i++) {

                       var node = bodyNode.childNodes[i];

                       //NOTE: This comparison does not handle the case where the XML namespace changes

                       if ("s:Fault" == node.nodeName) {

                       for (var j = 0; j < node.childNodes.length; j++) {

                           var faultStringNode = node.childNodes[j];

                           if ("faultstring" == faultStringNode.nodeName) {

                               errorMessage = faultStringNode.text;

                               break;

                           }

                       }

                       break;

                   }

               }

           }

           catch (e) { };

        }

        return new Error(errorMessage);

     },

 __namespace: true

};

Tuesday 20 March 2012

Synchronous ODATA call in MSCRM 2011 :



var odataSelect ="http://servername/organization/XRMServices/2011/OrganizationData.svc/OpportunitySet(guid'"+oppid[0].id+"')?$select=new_status"
var retrieveRecordsReq = new XMLHttpRequest();
retrieveRecordsReq.open("GET",odataSelect , false);
retrieveRecordsReq.setRequestHeader("Accept", "application/json");
retrieveRecordsReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
var temp= retrieveRecordsReq.send();
if (retrieveRecordsReq.readyState == 4 && retrieveRecordsReq.status == 200)
 {
var retrievedRecords = JSON.parse(retrieveRecordsReq.responseText).d
}