Auxiliary Force Technology

Dynamics CRM Clone A Record With JavaScript

A very common request we often get is to have a clone record button added to an Entity. The JavaScript code tends to be the bigger issue than adding the ribbon button so to keep this post clean and direct the following code with cycle through every Field (unless one is excluded) to create a new record, ready for review, that can be saved as a clone.


function cloneLead() {
debugger;

var lookupItems = {};

var attributes = Xrm.Page.data.entity.attributes.get();
for (var i in attributes) {
var j = attributes[i].getName();
var p = attributes[i].getValue();

if (p != null && j != "excluded_Field_Do_Not_Copy") {
switch (attributes[i].getAttributeType()) {
case "string":
lookupItems[j] = p;
break;
case "optionset":
lookupItems[j] = p;
break;
case "boolean":
lookupItems[j] = p;
break;
case "money":
lookupItems[j] = Number(p);
break;
case "decimal":
lookupItems[j] = Number(p);
break;
case "datetime":
var date1 = new Date(p);
var dd = date1.getDate();
var mm = date1.getMonth() + 1;
var yyyy = date1.getFullYear();
var time = date1.getTime();
var hour = date1.getHours();
var AMPM;
if (hour == 12) {
AMPM = "PM";
}
else if (hour == 0) {
AMPM = "AM";
}
else if (hour < 12) {
AMPM = "AM";
}
else if (hour > 12) {
hour = Number(hour) - 12;
AMPM = "PM";
}
var minutes = date1.getMinutes();
var reqDate = mm + '/' + dd + '/' + yyyy + ' ' + hour + ':' + minutes + ' ' + AMPM;

lookupItems[j] = reqDate;
break;
case "lookup":
var id = p[0].id;
var id1 = id.replace("{", "");
var id2 = id1.replace("}", "");

lookupItems[j] = id2;
lookupItems[j + "name"] = p[0].name;
if (j == "ownerid") {
lookupItems[j + "type"] = p[0].entityType;
}
break;
}
}
}
var windowOptions = {
openInNewWindow: true
};
Xrm.Utility.openEntityForm("lead", null, lookupItems, windowOptions);
}


by

Tags: