Thursday, 13 December 2012

Set default view for Partylist or Lookup field in CRM 2011 using javascript.

function lookforuser()
{
document.getElementById("to").setAttribute("lookuptypes", "8");// set as user view
document.getElementById("to").setAttribute("defaulttype", "8");
//Copy the ID of View
Xrm.Page.getControl("to").setDefaultView("FCFB3A47-6760-E211-BACF-00155D000B45");
}

Monday, 10 December 2012

Set the value of Option set field from one entity to another entity in CRM 2011 using javascript

var createContact = new XrmServiceToolkit.Soap.BusinessEntity("contact");// Target entity name

var country=Xrm.Page.data.entity.attributes.get("tvsi_countryregion").getValue();//Optionset value
if(country != null)
{
    createContact.attributes["tvsi_countryregion0"]={ value: country, type: "OptionSetValue" };
}

Call custom activity form in CRM 2011 using javascript




  1. Add this javascript into your webresources.


function OpenForm(pids) {
    var serverUrl;
    var errorMessage = "Context is not available.";
    var context;
    if (typeof GetGlobalContext != "undefined") {
        context = GetGlobalContext();
    }
    else {
        if (typeof Xrm != "undefined") {


            context = Xrm.Page.context;
        }
        else {
            alert(errorMessage);
            return;
        }
    }
    var entityId = context.getQueryStringParameters().id


    var entityEtc = context.getQueryStringParameters().etc


    var serverUrl = context.getServerUrl();
    if (serverUrl.match(/\/$/)) { serverUrl = serverUrl.substring(0, serverUrl.length - 1); }
    var recordUrl = serverUrl + "/userdefined/edit.aspx?";

//Here i used Fiddler tool to get TypeCode of my custom Activity.
    var params = "contactInfo=&etc=10004&pId="; // 10004 is type code of my custom activity.
    params += pids[0]; // Xrm.Page.data.entity.getId();
    params += "&pType=3"; // here type 3 is type code of Opportunity

    var URL = recordUrl + params;
    window.open(URL, "_blank", "width=900px,height=600px,resizable=1");
}


  1. Create a New button using visual ribbon editor.
  2. Click Action tab of Selected custom button.
  3. Then click Add link and then select JavaScriptFunction.
  4. There you have to give a function name and library path as follows:
  • Function Name: OpenForm
  • Library: $webresource:<created web resource name> //new_filename
  • Click Add link and the select CrmParameter.
  • Then select value: PrimaryItemIds


Saturday, 8 December 2012

Get Guid from the PartyList in CRM 2011 using C#


Entity entity = (Entity)context.InputParameters["Target"];
var retrievedApprovalRequest = service.Retrieve(entity.LogicalName, entity.Id, new ColumnSet(true)).ToEntity<tvsi_approvalrequest>();

Guid salesmanagerId=new Guid();              
ActivityParty ap=new ActivityParty();
EntityCollection receiverIds = retrievedApprovalRequest.GetAttributeValue<EntityCollection>("to");
 for (int i = 0; i < Recipients.Entities.Count; i++)
 {
      ap = receiverIds[i].ToEntity<ActivityParty>();
      salesmanagerId = ap.PartyId.Id;                  
 }  

Share record with User/Team in CRM 2011 using c#


Share record with User / Team


GrantAccessRequest shareToUser = new GrantAccessRequest()
 {
  Target = new EntityReference("opportunity", opportunityId), //Entity Logical name and record Id
         PrincipalAccess = new PrincipalAccess
          {
                 Principal = new EntityReference(SystemUser.EntityLogicalName, userId_or_teamId),
                 AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess | AccessRights.ShareAccess
           }

};
GrantAccessResponse grantresponse = (GrantAccessResponse)service.Execute(shareToUser);

Remove record sharing from the User / Team

ModifyAccessRequest removeSharing = new ModifyAccessRequest
 {
  Target = new EntityReference("opportunity", opportunityId), //Entity Logical name and record Id
        PrincipalAccess = new PrincipalAccess
         {
                Principal = new EntityReference(SystemUser.EntityLogicalName, userId_or_teamId),
                AccessMask = AccessRights.None
          }
   };
ModifyAccessResponse modifyresponse = (ModifyAccessResponse)service.Execute(removeSharing);

Thursday, 29 November 2012

Visible tab based on Optionset field value in crm 2011 using javascript


var fieldname = Xrm.Page.data.entity.attributes.get("new_fieldname").getText();
var tabvisible = Xrm.Page.ui.tabs.get("Status");
    if ( fieldname == "Qualified") {
            tabvisible.setVisible("true");
    }

Wednesday, 28 November 2012

Get current user roles in CRM 2011 using javascript


// JScript source code
GetCurrentUserRoles = 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=\"a:RetrieveMultipleRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">";
    requestMain += "        <a:Parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <b:key>Query</b:key>";
    requestMain += "            <b:value i:type=\"a:QueryExpression\">";
    requestMain += "              <a:ColumnSet>";
    requestMain += "                <a:AllColumns>false</a:AllColumns>";
    requestMain += "                <a:Columns xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">";
    requestMain += "                  <c:string>name</c:string>";
    requestMain += "                </a:Columns>";
    requestMain += "              </a:ColumnSet>";
    requestMain += "              <a:Criteria>";
    requestMain += "                <a:Conditions />";
    requestMain += "                <a:FilterOperator>And</a:FilterOperator>";
    requestMain += "                <a:Filters />";
    requestMain += "              </a:Criteria>";
    requestMain += "              <a:Distinct>false</a:Distinct>";
    requestMain += "              <a:EntityName>role</a:EntityName>";
    requestMain += "              <a:LinkEntities>";
    requestMain += "                <a:LinkEntity>";
    requestMain += "                  <a:Columns>";
    requestMain += "                    <a:AllColumns>false</a:AllColumns>";
    requestMain += "                    <a:Columns xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />";
    requestMain += "                  </a:Columns>";
    requestMain += "                  <a:EntityAlias i:nil=\"true\" />";
    requestMain += "                  <a:JoinOperator>Inner</a:JoinOperator>";
    requestMain += "                  <a:LinkCriteria>";
    requestMain += "                    <a:Conditions>";
    requestMain += "                      <a:ConditionExpression>";
    requestMain += "                        <a:AttributeName>systemuserid</a:AttributeName>";
    requestMain += "                        <a:Operator>Equal</a:Operator>";
    requestMain += "                        <a:Values xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">";
    requestMain += "                          <c:anyType i:type=\"d:string\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + Xrm.Page.context.getUserId() + "</c:anyType>";
    requestMain += "                        </a:Values>";
    requestMain += "                      </a:ConditionExpression>";
    requestMain += "                    </a:Conditions>";
    requestMain += "                    <a:FilterOperator>And</a:FilterOperator>";
    requestMain += "                    <a:Filters />";
    requestMain += "                  </a:LinkCriteria>";
    requestMain += "                  <a:LinkEntities />";
    requestMain += "                  <a:LinkFromAttributeName>roleid</a:LinkFromAttributeName>";
    requestMain += "                  <a:LinkFromEntityName>role</a:LinkFromEntityName>";
    requestMain += "                  <a:LinkToAttributeName>roleid</a:LinkToAttributeName>";
    requestMain += "                  <a:LinkToEntityName>systemuserroles</a:LinkToEntityName>";
    requestMain += "                </a:LinkEntity>";
    requestMain += "              </a:LinkEntities>";
    requestMain += "              <a:Orders />";
    requestMain += "              <a:PageInfo>";
    requestMain += "                <a:Count>0</a:Count>";
    requestMain += "                <a:PageNumber>0</a:PageNumber>";
    requestMain += "                <a:PagingCookie i:nil=\"true\" />";
    requestMain += "                <a:ReturnTotalRecordCount>false</a:ReturnTotalRecordCount>";
    requestMain += "              </a:PageInfo>";
    requestMain += "              <a:NoLock>false</a:NoLock>";
    requestMain += "            </b:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "        </a:Parameters>";
    requestMain += "        <a:RequestId i:nil=\"true\" />";
    requestMain += "        <a:RequestName>RetrieveMultiple</a:RequestName>";
    requestMain += "      </request>";
    requestMain += "    </Execute>";
    requestMain += "  </s:Body>";
    requestMain += "</s:Envelope>";
    var req = new XMLHttpRequest();
    req.open("POST", _getServerUrl(), false)
    // 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 () { RetrieveMultipleResponse(req, successCallback, errorCallback); };
    req.send(requestMain);  
    var resultXml = req.responseXML;
    return (resultXml);
}

function rolename() {
    var oXml = GetCurrentUserRoles();
    if (oXml != null) {
        //select the node text
        var roles = oXml.selectNodes("//a:Entities/a:Entity/a:Attributes/a:KeyValuePairOfstringanyType");
        if (roles != null) {
            for (j = 0; j < roles.length; j++) {
                   alert(roles[j].childNodes[1].text);               
            }
        }

    }
}