Wednesday, 25 February 2009
Sunday, 22 February 2009
Tuesday, 17 February 2009
Thursday, 12 February 2009
Tuesday, 10 February 2009
Hide the Whole Application Menu Toolbar
very unsupported!
http://blogs.msdn.com/rextang/archive/2008/08/28/8900674.aspx
http://blogs.msdn.com/rextang/archive/2008/08/28/8900674.aspx
Monday, 9 February 2009
Form Events
var FormEventId_None = 0;
var FormEventId_Save = 1;
var FormEventId_SaveAndClose = 2;
var FormEventId_Delete = 3;
var FormEventId_Load = 4;
var FormEventId_Deactivate = 5;
var FormEventId_Reactivate = 6;
var FormEventId_EmailSend = 7;
var FormEventId_EmailReply = 8;
var FormEventId_EmailForward = 9;
var FormEventId_KbSubmit = 10;
var FormEventId_KbReject = 11;
var FormEventId_KbPublish = 12;
var FormEventId_KbUnPublish = 13;
var FormEventId_KbRate = 14;
var FormEventId_LeadUnqualify = 15;
var FormEventId_LeadQualify = 16;
var FormEventId_QuoteAccept = 17;
var FormEventId_QuoteCreateOrder = 18;
var FormEventId_OrderProcessOrder = 19;
var FormEventId_OpportunityAddRelatedOrder = 21;
var FormEventId_OpportunityAddRelatedQuote = 22;
var FormEventId_OpportunityAddRelatedInvoice = 23;
var FormEventId_QuoteCreateRevision = 24;
var FormEventId_QuoteCloseQuote = 25;
var FormEventId_OrderCancelOrder = 26;
var FormEventId_InvoiceClose = 27;
var FormEventId_QuoteGetProducts = 28;
var FormEventId_QuoteActivate = 29;
var FormEventId_EmailReplyAll = 30;
var FormEventId_ContractHold = 31;
var FormEventId_ContractReleaseHold = 32;
var FormEventId_ContractCancel = 33;
var FormEventId_ContractRenew = 34;
var FormEventId_ProductConvertToKit = 35;
var FormEventId_ProductConvertFromKit = 36;
var FormEventId_ContractDetailCancel = 37;
var FormEventId_ContractInvoice = 38;
var FormEventId_ContractClone = 39;
var FormEventId_IncidentCancel = 40;
var FormEventId_EmailAssign = 41;
var FormEventId_ChangeSalesStage = 42;
var FormEventId_SalesOrderGetProducts = 43;
var FormEventId_InvoiceGetProducts = 44;
var FormEventId_TemplateMakeOrgAvailable = 45;
var FormEventId_TemplateMakeOrgUnavailable = 46;
var FormEventId_Assign = 47;
var FormEventId_IncidentAssignToUser = 49;
var FormEventId_OrderLock = 50;
var FormEventId_OrderUnlock = 51;
var FormEventId_InvoiceLock = 52;
var FormEventId_InvoiceUnlock = 53;
var FormEventId_ConvertResponse = 54;
var FormEventId_ReportMakeOrgAvailable = 60;
var FormEventId_ReportMakeOrgUnavailable = 61;
var FormEventId_WorkflowAddCheckStep = 62;
var FormEventId_WorkflowUpdateCondition = 63;
var FormEventId_WorkflowCreateAction = 64;
var FormEventId_SendInvite = 65;
var FormEventId_WorkflowAddElseIfStep = 66;
var FormEventId_WorkflowAddElseStep = 67;
var FormEventId_WorkflowDeleteStep = 68;
from: \_static\_common\scripts\formevt.js
var FormEventId_Save = 1;
var FormEventId_SaveAndClose = 2;
var FormEventId_Delete = 3;
var FormEventId_Load = 4;
var FormEventId_Deactivate = 5;
var FormEventId_Reactivate = 6;
var FormEventId_EmailSend = 7;
var FormEventId_EmailReply = 8;
var FormEventId_EmailForward = 9;
var FormEventId_KbSubmit = 10;
var FormEventId_KbReject = 11;
var FormEventId_KbPublish = 12;
var FormEventId_KbUnPublish = 13;
var FormEventId_KbRate = 14;
var FormEventId_LeadUnqualify = 15;
var FormEventId_LeadQualify = 16;
var FormEventId_QuoteAccept = 17;
var FormEventId_QuoteCreateOrder = 18;
var FormEventId_OrderProcessOrder = 19;
var FormEventId_OpportunityAddRelatedOrder = 21;
var FormEventId_OpportunityAddRelatedQuote = 22;
var FormEventId_OpportunityAddRelatedInvoice = 23;
var FormEventId_QuoteCreateRevision = 24;
var FormEventId_QuoteCloseQuote = 25;
var FormEventId_OrderCancelOrder = 26;
var FormEventId_InvoiceClose = 27;
var FormEventId_QuoteGetProducts = 28;
var FormEventId_QuoteActivate = 29;
var FormEventId_EmailReplyAll = 30;
var FormEventId_ContractHold = 31;
var FormEventId_ContractReleaseHold = 32;
var FormEventId_ContractCancel = 33;
var FormEventId_ContractRenew = 34;
var FormEventId_ProductConvertToKit = 35;
var FormEventId_ProductConvertFromKit = 36;
var FormEventId_ContractDetailCancel = 37;
var FormEventId_ContractInvoice = 38;
var FormEventId_ContractClone = 39;
var FormEventId_IncidentCancel = 40;
var FormEventId_EmailAssign = 41;
var FormEventId_ChangeSalesStage = 42;
var FormEventId_SalesOrderGetProducts = 43;
var FormEventId_InvoiceGetProducts = 44;
var FormEventId_TemplateMakeOrgAvailable = 45;
var FormEventId_TemplateMakeOrgUnavailable = 46;
var FormEventId_Assign = 47;
var FormEventId_IncidentAssignToUser = 49;
var FormEventId_OrderLock = 50;
var FormEventId_OrderUnlock = 51;
var FormEventId_InvoiceLock = 52;
var FormEventId_InvoiceUnlock = 53;
var FormEventId_ConvertResponse = 54;
var FormEventId_ReportMakeOrgAvailable = 60;
var FormEventId_ReportMakeOrgUnavailable = 61;
var FormEventId_WorkflowAddCheckStep = 62;
var FormEventId_WorkflowUpdateCondition = 63;
var FormEventId_WorkflowCreateAction = 64;
var FormEventId_SendInvite = 65;
var FormEventId_WorkflowAddElseIfStep = 66;
var FormEventId_WorkflowAddElseStep = 67;
var FormEventId_WorkflowDeleteStep = 68;
from: \_static\_common\scripts\formevt.js
Adding Presence to CRM Form fields
add to Form onLoad event:
var ocs = new ActiveXObject("Name.NameCtrl");
function OnCrmPageLoad()
{
AddPresence( "emailaddress1" , 0 );
AddPresence( "telephone1" , 0 );
}
function AddPresence( elementId , tabIndex )
{
if( typeof(ocs) == "object" )
{
var element = document.getElementById( elementId );
element.tab = tabIndex;
element.attachEvent( "onmouseover" , ShowOOUI );
element.attachEvent( "onmouseout" , HideOOUI );
window. attachEvent( "onscroll" , HideOOUI );
}
}
// show Messenger icons
function ShowOOUI()
{
var element = event.srcElement;
var elemVal = element.DataValue;
if( !(element && elemVal) )
return;
var offsetX = -20;
var offsetY = -2;
for (var parent = element; parent; parent = parent.offsetParent)
{
if (parent.offsetLeft)
{
offsetX += parent.offsetLeft;
}
if (parent.offsetTop)
{
offsetY += parent.offsetTop;
}
}
var scrollTop = document.getElementById("tab" + element.tab).scrollTop;
ocs.ShowOOUI(elemVal, 0, offsetX + element.offsetWidth, offsetY - scrollTop);
}
function HideOOUI()
{
ocs.HideOOUI();
}
OnCrmPageLoad();
from here: http://mscrm4ever.blogspot.com/2008/09/adding-presence-to-crm-form-fields.html
var ocs = new ActiveXObject("Name.NameCtrl");
function OnCrmPageLoad()
{
AddPresence( "emailaddress1" , 0 );
AddPresence( "telephone1" , 0 );
}
function AddPresence( elementId , tabIndex )
{
if( typeof(ocs) == "object" )
{
var element = document.getElementById( elementId );
element.tab = tabIndex;
element.attachEvent( "onmouseover" , ShowOOUI );
element.attachEvent( "onmouseout" , HideOOUI );
window. attachEvent( "onscroll" , HideOOUI );
}
}
// show Messenger icons
function ShowOOUI()
{
var element = event.srcElement;
var elemVal = element.DataValue;
if( !(element && elemVal) )
return;
var offsetX = -20;
var offsetY = -2;
for (var parent = element; parent; parent = parent.offsetParent)
{
if (parent.offsetLeft)
{
offsetX += parent.offsetLeft;
}
if (parent.offsetTop)
{
offsetY += parent.offsetTop;
}
}
var scrollTop = document.getElementById("tab" + element.tab).scrollTop;
ocs.ShowOOUI(elemVal, 0, offsetX + element.offsetWidth, offsetY - scrollTop);
}
function HideOOUI()
{
ocs.HideOOUI();
}
OnCrmPageLoad();
from here: http://mscrm4ever.blogspot.com/2008/09/adding-presence-to-crm-form-fields.html
Hidden buttons reappear when resizing a crmForm
HideButton = function()
{
var ULListItems = document.getElementById(”mnuBar1″).rows[0].cells[0].getElementsByTagName(”UL”)[0].getElementsByTagName(”LI”);
for(var i=0; i -1)
{
ULListItems[i].style.display = “none”;
}
}
}// Execute the function when loading the form
HideButton();// Execute the function when the form is resized.
window.onresize = HideButton;
from here: http://kennyvaes.wordpress.com/2009/02/03/hidden-buttons-reappear-when-resizing-a-crmform/
Putting a DateTime value in a CrmDateTime field
When you want to assign a DateTime value to a CrmDateTime field while using the Webservice API it is not as simple as converting the DateTime field to a string and assigning the value.
The string has to be in a specific format.
CrmDateTime sEndDate = new CrmDateTime(MyDateTimeValue.ToString(“s”));from here: http://kennyvaes.wordpress.com/2009/02/03/putting-a-datetime-value-in-a-crmdatetime-field/
Hiding custom buttons in CRM 4.0 Toolbar
var ULListItems = document.getElementById("mnuBar1").rows[0].cells[0].getElementsByTagName("UL")[0].getElementsByTagName("LI");
for(var i=0; i -1)
{
ULListItems[i].style.display = "none";
}
}
from here: http://kennyvaes.wordpress.com/2009/02/03/hiding-custom-buttons-in-crm-40-toolbar/
Sunday, 8 February 2009
Extending duplicate detection with Soundex algorithm
Instructions here: http://advantageworks.blogspot.com/2008/01/extending-duplicate-detection-with.html
Algorithm script from here: http://www.creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm
Algorithm script from here: http://www.creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm
/*
* v 1.0d TESTED-OK 20060112
* -----------------------
*
* The following SoundEx function is:
*
* (C) Copyright 2002 - 2006, Creativyst, Inc.
* ALL RIGHTS RESERVED
*
* For more information go to:
* http://www.Creativyst.com
* or email:
* Support@Creativyst.com
*
* Redistribution and use in source and binary
* forms, with or without modification, are
* permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must
* retain the above copyright notice, this
* list of conditions and the following
* disclaimer.
*
* 2. Redistributions in binary form must
* reproduce the above copyright notice,
* this list of conditions and the
* following disclaimer in the
* documentation and/or other materials
* provided with the distribution.
*
* 3. All advertising materials mentioning
* features or use of this software must
* display the following acknowledgement:
* This product includes software developed
* by Creativyst, Inc.
*
* 4. The name of Creativyst, Inc. may not be
* used to endorse or promote products
* derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY CREATIVYST CORPORATION
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
* WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
function SoundEx(WordString, LengthOption, CensusOption)
{
var TmpStr;
var WordStr = "";
var CurChar;
var LastChar;
var SoundExLen = 10;
var WSLen;
var FirstLetter;
if(CensusOption) {
LengthOption = 4;
}
if(LengthOption != undefined) {
SoundExLen = LengthOption;
}
if(SoundExLen > 10) {
SoundExLen = 10;
}
if(SoundExLen < 4) {
SoundExLen = 4;
}
if(!WordString) {
return("");
}
WordString = WordString.toUpperCase();
/* Clean and tidy
*/
WordStr = WordString;
WordStr = WordStr.replace(/[^A-Z]/gi, " "); // rpl non-chars w space
WordStr = WordStr.replace(/^\s*/g, ""); // remove leading space
WordStr = WordStr.replace(/\s*$/g, ""); // remove trailing space
if(!CensusOption) {
/* Some of our own improvements
*/
WordStr = WordStr.replace(/DG/g, "G"); // Change DG to G
WordStr = WordStr.replace(/GH/g, "H"); // Change GH to H
WordStr = WordStr.replace(/GN/g, "N"); // Change GN to N
WordStr = WordStr.replace(/KN/g, "N"); // Change KN to N
WordStr = WordStr.replace(/PH/g, "F"); // Change PH to F
WordStr =
WordStr.replace(/MP([STZ])/g, "M$1"); // MP if fllwd by ST|Z
WordStr = WordStr.replace(/^PS/g, "S"); // Chng leadng PS to S
WordStr = WordStr.replace(/^PF/g, "F"); // Chng leadng PF to F
WordStr = WordStr.replace(/MB/g, "M"); // Chng MB to M
WordStr = WordStr.replace(/TCH/g, "CH"); // Chng TCH to CH
}
/* The above improvements
* may change this first letter
*/
FirstLetter = WordStr.substr(0,1);
/* in case 1st letter is
* an H or W and we're in
* CensusOption = 1
*/
if(FirstLetter == "H" || FirstLetter == "W") {
TmpStr = WordStr.substr(1);
WordStr = "-";
WordStr += TmpStr;
}
/* In properly done census
* SoundEx the H and W will
* be squezed out before
* performing the test
* for adjacent digits
* (this differs from how
* 'real' vowels are handled)
*/
if(CensusOption == 1) {
WordStr = WordStr.replace(/[HW]/g, ".");
}
/* Begin Classic SoundEx
*/
WordStr = WordStr.replace(/[AEIOUYHW]/g, "0");
WordStr = WordStr.replace(/[BPFV]/g, "1");
WordStr = WordStr.replace(/[CSGJKQXZ]/g, "2");
WordStr = WordStr.replace(/[DT]/g, "3");
WordStr = WordStr.replace(/[L]/g, "4");
WordStr = WordStr.replace(/[MN]/g, "5");
WordStr = WordStr.replace(/[R]/g, "6");
/* Properly done census:
* squeze H and W out
* before doing adjacent
* digit removal.
*/
if(CensusOption == 1) {
WordStr = WordStr.replace(/\./g, "");
}
/* Remove extra equal adjacent digits
*/
WSLen = WordStr.length;
LastChar = "";
TmpStr = "";
// removed v10c djr: TmpStr = "-"; /* rplcng skipped first char */
for(i = 0; i < WSLen; i++) {
CurChar = WordStr.charAt(i);
if(CurChar == LastChar) {
TmpStr += " ";
}
else {
TmpStr += CurChar;
LastChar = CurChar;
}
}
WordStr = TmpStr;
WordStr = WordStr.substr(1); /* Drop first letter code */
WordStr = WordStr.replace(/\s/g, ""); /* remove spaces */
WordStr = WordStr.replace(/0/g, ""); /* remove zeros */
WordStr += "0000000000"; /* pad with zeros on right */
WordStr = FirstLetter + WordStr; /* Add first letter of word */
WordStr = WordStr.substr(0,SoundExLen); /* size to taste */
return(WordStr);
}
