الأربعاء، 6 سبتمبر 2017

Dynamics 365 / CRM 2016 : Using Web API Operations - Retrieve Single or Multiple Records

In MS CRM 2016, Web API introduced to perform operations on MS CRM using JavaScript. 

      function retrieveSingleRecord (entityDefinitions, recordId) {
        /// <summary>
        /// Retrieving single record using Web API by record ID.
        /// </summary>
        /// <param name="entityDefinitions" type="string">
        /// EntitySetName (ex:for Account entity, the entity set name is accounts)
        /// </param>
        /// <param name="recordId" type="string">
        /// A string represents a guid for record Id.
        /// </param>
        /// <returns type="Object" />

        recordId = recordId.replace(/[\{\}]+/g, '');

        var apiUrl = Xrm.Page.context.getClientUrl() + "/api/data/v8.1/" + entityDefinitions + "(" + recordId + ")";

        var req = GetRequestObject();

        if (req != null) {
            req.open("GET", apiUrl, false);
            req.setRequestHeader("OData-MaxVersion", "4.0");
            req.setRequestHeader("OData-Version", "4.0");
            req.setRequestHeader("Accept", "application/json");
            req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");
            req.send(null);

            var requestResults = JSON.parse(req.response)

            return requestResults;
        }
        return false;
    }
//**************************************************************************
    function retrieveSingleRecord_WithCallBack (entityDefinitions, recordId, successCallBackFun) {
        /// <summary>
        /// Retrieving single record using Web API by record ID with callback function.
        /// </summary>
        /// <param name="entityDefinitions" type="string">
        /// EntitySetName (ex:for Account entity, the entity set name is accounts)
        /// </param>
        /// <param name="recordId" type="string">
        /// A string represents a guid for record Id.
        /// </param>
        /// <param name="successCallBackFun" type="function">
        /// callback function.
        /// </param>
        /// <returns type="void" />

        recordId = recordId.replace(/[\{\}]+/g, '');

        var apiUrl = Xrm.Page.context.getClientUrl()+ "/api/data/v8.1/" + entityDefinitions + "(" + recordId + ")";

        //Ex:https://vvvvv.crm4.dynamics.com/api/data/v8.2/accounts(A0A00F3A-1166-E711-80E1-3863BB343B78)

        var req = new XMLHttpRequest();
        req.open("GET", apiUrl, true);
        req.setRequestHeader("OData-MaxVersion", "4.0");
        req.setRequestHeader("OData-Version", "4.0");
        req.setRequestHeader("Accept", "application/json");
        req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");

        req.onreadystatechange = function () {
            if (this.readyState === 4) {
                req.onreadystatechange = null;
                if (this.status === 200) {
                    var result = JSON.parse(this.response);
                    //alert(result["name"]);
                    successCallBackFun(result);
                }
                else {
                    alert(this.statusText);
                }
            }
        };
        req.send();
    }

//**************************************************************************

    function retrieveMultiple (entityDefinitions, filterUrl) {

        /// <summary>
        /// Retrieving multiple records based on specific filter criteria.
        /// </summary>
        /// <param name="entityDefinitions" type="string">
        /// EntitySetName (ex:for Account entity, the entity set name is accounts)
        /// </param>
        /// <param name="filterUrl" type="string">
        /// a string url to specify filter criteria using $filter(ex:$filter=cusomerid eq cusomeridvalue).
        /// </param>
        /// <returns type="Object" />

        var apiUrl = Xrm.Page.context.getClientUrl() + "/api/data/v8.1/" + entityDefinitions + "?" + filterUrl + "&$count=true";

        var req = GetRequestObject();

        if (req != null) {
            req.open("GET", apiUrl, false);
            req.setRequestHeader("OData-MaxVersion", "4.0");
            req.setRequestHeader("OData-Version", "4.0");
            req.setRequestHeader("Accept", "application/json");
            req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");
            req.send(null);
            var requestResults = JSON.parse(req.response)

            return requestResults;
        }
        return false;
    }

ليست هناك تعليقات:

إرسال تعليق