Thursday, May 8, 2014

Multi Select Look up in MS CRM 2011

First create three text fields in Opportunity as new_sguid, new_stype, new_sname

Add the below code in the Web Resource
function onchange() {
    var originatingLeadValue = Xrm.Page.getAttribute("originatingleadid").getValue();
    if (IsNull(originatingLeadValue) || originatingLeadValue[0].type == "4") {
        // Lookup is null or there is a Lead, need to clear hidden fields. To clear one of them will be enough, we will be check this field during onload.
        Xrm.Page.getAttribute("new_sguid").setValue(null);
    }
    else {
        // Lookup contains Contact or User, so need to store lookup properties to our hidden fields.
        Xrm.Page.getAttribute("new_stype").setValue(originatingLeadValue[0].type);
        Xrm.Page.getAttribute("new_sguid").setValue(originatingLeadValue[0].id);
        Xrm.Page.getAttribute("new_sname").setValue(originatingLeadValue[0].name);
    }
}

function onsave() {
    var originatingLeadValue = Xrm.Page.getAttribute("originatingleadid").getValue();
    if (!IsNull(originatingLeadValue) && originatingLeadValue[0].type != '4') {
        Xrm.Page.getAttribute("originatingleadid").setValue(null);
    }
}

function onload() {
    debugger;
    lookuptypeIcons = '/_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif:/_imgs/ico_16_4.gif:/_imgs/ico_16_8.gif:/_imgs/ico_16_9.gif';//add the custom entity type gif image
    lookuptypenames = 'account:1:Account,contact:2:Contact,lead:4:Lead,systemuser:8:User,team:3:Team';
    lookuptypes = '1,2,4,8,9';// Here first one is entity name, the second one we can get by opening any record for our custom entity and check out the etc value in the url and the third one is the display name for your entity. And i used /_imgs/ico_16_customEntity.gif for the icons to work with.

    var savedId = Xrm.Page.getAttribute("new_sguid").getValue();
    var savedType = Xrm.Page.getAttribute("new_stype").getValue();
    var savedName = Xrm.Page.getAttribute("new_sname").getValue();
    var savedEntityName = savedType == "8" ? "systemuser" : "contact";
    document.getElementById("originatingleadid").setAttribute("lookuptypes", lookuptypes);
    document.getElementById("originatingleadid").setAttribute("lookuptypenames", lookuptypenames);
    document.getElementById("originatingleadid").setAttribute("lookuptypeIcons", lookuptypeIcons);
    document.getElementById("originatingleadid").setAttribute("defaulttype", "4"); // default type - Lead entity
    var originatingLeadValue = Xrm.Page.getAttribute("originatingleadid").getValue();
    if (IsNull(originatingLeadValue) && !IsNull(savedId)) {
        var value = new Array();
        value[0] = new Object();
        value[0].displayClass = "ms-crm-Lookup-Item";
        value[0].keyValues = new Object();
        value[0].values = new Object();
        value[0].onclick = "openlui()";
        value[0].id = savedId;
        value[0].entityType = savedEntityName;
        value[0].typename = savedEntityName;
        value[0].name = savedName;
        value[0].type = savedType;
        Xrm.Page.getAttribute("originatingleadid").setValue(value);
    }

}
call the onload function on Opportunity onload, onsave function on Opportunity onsave, onchange on Opportunity originating lead change :)

Friday, April 11, 2014

Make all the Fields Readonly in the CRM form 2011

var controls = Xrm.Page.ui.controls.get();
for (var i in controls){
var control = controls[i];
if (!control.getDisabled()){
control.setDisabled(true);
}}

No Default Value on Two Options Field Dynamics CRM 2011

function setTwoOptionNull(twoOption) {
    var isCreateForm = Xrm.Page.ui.getFormType() == 1;
    var twoOptionField = Xrm.Page.getAttribute(twoOption);
    var twoOptionValue = twoOptionField.getValue();
    if (isCreateForm) {
        twoOptionField.setValue(null); // set the value to null on create
        twoOptionField.setSubmitMode("always"); // required to store the null value
        document.getElementById("rad_" + twoOption + "1").onclick = function () { 
            if (twoOptionValue == false) {
                twoOptionField.setValue(true);
                twoOptionField.setValue(false);
            }
        }
    }
}

pass the value "new_acceptreject" as shown below

Monday, April 7, 2014

Split the String in Microsoft Dynamics CRM using Javascript

Add the below function in the onload of the lead form

function getMonth()
{
debugger;
var Day=Xrm.Page.getAttribute("createdon").getValue().toString().substring(0,3);
alert(Day);
//you will get the output as Tue
}

Now open an existing lead record then the alert will show the Day of the lead createdon.

Dynamics CRM 2013 Javascript

Enable/Disable Business Process stage field:
Xrm.Page.getControl(‘header_process_fieldname’).setDisabled(false);  //Enabled
Xrm.Page.getControl(‘header_process_fieldname’).setDisabled(true);  //Disabled
Show/Hide Business Process stage field:
Xrm.Page.getControl(‘header_process_fieldname’).setVisible(true);  //Show
Xrm.Page.getControl(‘header_process_fieldname’).setDisabled(false);  //Hide
Get Value/ Set Value Business Process stage field:
Xrm.Page.getControl(‘header_process_fieldname’).getAttribute().setValue(value);  //Set Value
Xrm.Page.getControl(‘header_process_fieldname’).getAttribute().getValue();  //Get Value
Set and Remove Notification on Business Process stage field:
Xrm.Page.getControl(‘header_process_fieldname’).setNotification(“Notification message”);  //Set Notification message
Xrm.Page.getControl(‘header_process_fieldname’).clearNotification(); // Clear Notification message
Set Required levels on Business Process stage field:
(Xrm.Page.getControl(‘header_process_fieldname).getAttribute()).setRequiredLevel(‘required’); //Required level
(Xrm.Page.getControl(‘header_process_fieldname).getAttribute()).setRequiredLevel(‘none’); //none level
(Xrm.Page.getControl(‘header_process_fieldname).getAttribute()).setRequiredLevel(‘recommended’); //Recommended level

Set field notification
Xrm.Page.getControl(fieldname).setNotification(“Notification message”);
Clear field notification
Xrm.Page.getControl(fieldname).clearNotification();
Set form notification
//First parameter is message, second is notification type, third is optional id parameter
Xrm.Page.ui.setFormNotification(‘Error! Message’,'ERROR’,’1′);
Xrm.Page.ui.setFormNotification(‘Warning!Message’,'WARNING’,’2′);
Xrm.Page.ui.setFormNotification(‘Information! Message’,'INFORMATION’,’3′);
Clear form notification
//Pass parameter id of notification which needs to be cleared
Xrm.Page.ui.clearFormNotification(’1′);

I noticed that currency field value on CRM forms were not accessible using Xrm.Page.getAttribute(“Currency field name”).getValue() and Xrm.Page.getAttribute(“Currency field name”).setValue(Value)
The resolution is in such cases is:
// To get currency field
Xrm.Page.data.entity.attributes.get(“Currency field name”).getValue();
// To set currency field
Xrm.Page.data.entity.attributes.get(“Currency field name”).setValue(Value);

Friday, March 28, 2014

Differences Between the SQL-based and Fetch-based Reports


Area
SQL-based Report
Data Provider
The <DataProvider> element value in the .rdl file is set to SQL. For example:
<DataProvider>SQL</DataProvider>
Report query
The query specified for retrieving data is in the <CommandText> sub-element under the<Query> element in the report definition (.rdl file) is a SQL query. For example, the query for retrieving all account names for a SQL-based report will be:
<CommandText>SELECT name FROM FilteredAccount;</CommandText>

Area
Fetch-based report
Data Provider
The <DataProvider> element value in the .rdl file is set to MSCRMFETCH. For example:
<DataProvider>MSCRMFETCH</DataProvider>
Report query
The query specified for retrieving data is in the <CommandText> sub-element under the <Query> 
element in the report definition (.rdl file) is a FetchXML query. For example, the query for retrieving
 all account names for a Fetch-based report will be:
<CommandText>&lt;fetch version="1.0" output-format="xml-platform" mapping="logical"&gt;
    &lt;entity name="account"&gt;
        &lt;attribute name="name" /&gt;
    &lt;/entity&gt;
&lt;/fetch&gt;</CommandText>

Tuesday, March 18, 2014

Get all the tables from the SQL database

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, 
NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, DATETIME_PRECISION FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME