2009/12/18

【MSCRM4.0】更新プログラム ロールアップ 8

更新プログラム ロールアップ 8


Microsoft Dynamics CRM 4.0 の更新プログラム ロールアップ 8 (KB 975995)



Microsoft Dynamics CRM 4.0 の更新プログラム ロールアップ 8 がリリースされました。この更新プログラムにはバグ修正とさまざまなパフォーマンス強化機能が含まれており、簡単に展開できるようにパッケージ化されています。

2009/12/10

【MSCRM4.0】パフォーマンス改善ストアドプロシージャ

下記のスクリプトをSQLServer上で実行します。

---------------------------------------------------------------------------

exec sp_configure 'show adv', 1;


RECONFIGURE WITH OVERRIDE;

exec sp_configure 'max degree', 1;

RECONFIGURE WITH OVERRIDE;

exec sp_configure;
---------------------------------------------------------------------------

2009/12/07

【MSCRM4.0】予定エンティティのマルチlookup制御

●複数エンティティ選択を1つ選択に制限します。(図1 → 図2)



(図1)



(図2)




onLoadイベントに下記のスクリプトを追加します。

-----------------------------------------------------------------------------------

FilterLookup = function(target)


{

target.setAttribute("lookuptypes", "2");  //2 ・・・ 取引先担当者

target.setAttribute("defaulttype", "2");  //2 ・・・ 取引先担当者

}



FilterLookup(crmForm.all.requiredattendees);

-----------------------------------------------------------------------------------


※requiredattendees ・・・ 必須出席者

2009/12/03

【MSCRM4.0】フォームにボタン追加

・あるフォーム上にボタンを追加するためには、ボタンに変身してもらう属性が必要です。
 下記の手順で属性を作成し、フォームに追加します。
 
 ①new_button というテキスト形式の新しい属性を作成します。
 ②フォームに①で作成した属性を追加します。
 ③new_buttonのラベルを非表示にします。フォーム上のnew_buttonのプロパティを表示し、
  フォームでラベルを表示のチェックを外します。(図1参照)


(図1)

・追加後、onLoadイベントに下記のスクリプトを追加します。
-----------------------------------------------------------------------------------

function InlineToolbar(containerId)


{



var toolbar = this;

var container = document.all[containerId];



if (!container)

{

return alert("ボタン属性: " + containerId + "が存在しません");

}



container.style.display = "none";

container = container.parentElement;



toolbar.AddButton = function(id,text,width,callback,imgSrc)

{

var btn = document.createElement("button");

var btStyle = new StyleBuilder();

btStyle.Add( "font-family" , "Arial" );

btStyle.Add( "font-size" , "12px" );

btStyle.Add( "line-height" , "16px" );

btStyle.Add( "text-align" , "center" );

btStyle.Add( "cursor" , "hand" );

btStyle.Add( "border" , "1px solid #3366CC" );

btStyle.Add( "background-color" , "#CEE7FF" );

btStyle.Add( "background-image" , "url( '/_imgs/btn_rest.gif' )" );

btStyle.Add( "background-repeat" , "repeat-x" );

btStyle.Add( "padding-left" , "5px" );

btStyle.Add( "padding-right" , "5px" );

btStyle.Add( "overflow" , "visible" );

btStyle.Add( "width" , width );



btn.style.cssText = btStyle.ToString();

btn.attachEvent("onclick",callback);

btn.id = id;



if (imgSrc)

{

var img = document.createElement("img");

img.src = imgSrc;

img.style.verticalAlign = "middle";

btn.appendChild(img);

btn.appendChild(document.createTextNode(" "));

var spn = document.createElement("span");

spn.innerText = text;

btn.appendChild(spn);

}

else

{

btn.innerText = text;

}



container.appendChild(btn);

container.appendChild(document.createTextNode(" "));



return btn;

}



toolbar.RemoveButton = function(id)

{

var btn = toolbar.GetButton(id)

if (btn)

{

btn.parentNode.removeChild(btn);

}

}



toolbar.GetButton = function(id)

{

return document.getElementById(id);

}



function StyleBuilder()

{

var cssText = new StringBuilder();

this.Add = function( key , value ){cssText.Append( key ).Append( ":" ).Append( value ).Append( ";" );}

this.ToString = function(){return cssText.ToString();}

}



function StringBuilder()

{

var parts = [];

this.Append = function( text ){parts[ parts.length ] = text;return this;}

this.Reset = function(){parts = [];}

this.ToString = function(){return parts.join( "" );}

}

}





function makeButton()

{

window.GeneralToolbar = new InlineToolbar("new_button");

GeneralToolbar.AddButton("btnClear","クリア","15%",Clear_Click);

}



function Clear_Click()

{

alert('クリアします');

}



makeButton();
 
-----------------------------------------------------------------------------------

・ボタンが表示され、クリックするとイベントを発生します。(図2参照)


(図2)

2009/11/27

【MSCRM4.0】左メニューのグループ非表示

●詳細画面のあるメニューセクションを非表示にします。(図1 → 図2)

                     (図1)

                    (図2)
onLoadイベントに下記のスクリプトを追加します。
-----------------------------------------------------------------------------------
var NavGroup = {
Details : "_NA_Info",
Sales : "_NA_SFA",
Service : "_NA_CS",
Marketing : "_NA_MA"
}

var Display = {
Show : "inline",
Hide : "none"
}

function HideNavBlock(group, display ){
    var objNavBlock = document.getElementById(group);
    objNavBlock.parentElement.style.display = display;
}

HideNavBlock(NavGroup.Sales, Display.Hide);
-----------------------------------------------------------------------------------




2009/11/26

【MSCRM4.0】左メニューの非表示

●詳細画面のあるメニュー項目を非表示にします。(図1 → 図2)

                     (図1)


                     (図2)


onLoadイベントに下記のスクリプトを追加します。
-----------------------------------------------------------------------------------



var Display = {

Show : "inline",

Hide : "none"

}



var NavGroup = {

Details : "_NA_Info",

Sales : "_NA_SFA",

Service : "_NA_CS",

Marketing : "_NA_MA"

}


HiddenNavigation( NavGroup.Details , "履歴" , Display.Hide );


function HiddenNavigation( group , item , display ) {

try {

     var navGroup = document.getElementById( group );

      if( !navGroup ) return alert( "Navigation Group is missing" );



     for( var i = 0 ; i <>
        var menuItem = navGroup.nextSibling.childNodes[i];

        if( menuItem.childNodes[0].childNodes[1].innerText == item )menuItem.style.display = display;

     }

} catch( err ) {

//alert( "Navigation Item " + item + " is missing" );

}

}


-----------------------------------------------------------------------------------


※カスタマイズの関連付けの場合、設定画面より設定できます。(図3参照)

                      (図3)

2009/11/25

【MSCRM4.0】セクションの非表示

●詳細画面のあるセクションを非表示にします。(図1 → 図2)

                    (図1)

                    (図2)

onLoadイベントに下記のスクリプトを追加します。

-----------------------------------------------------------------------------------

function InitPage() {

//1番目タブの3番目セクションを非表示する

HiddenSection( 0 , 2 , "none" /* "inline" */); //0 ・・・ タブのindex番号  2 ・・・ セクションのindex番号

}

function HiddenSection( tabIndex , sectionIndex , displayType ) {

var sec = document.getElementById( "tab" + tabIndex );

sec.childNodes[0].rows[ sectionIndex ].style.display = displayType;

}

//Entry Point

InitPage();

-----------------------------------------------------------------------------------

※表示する場合、displayTypeがinlineになる。

HiddenSection( 0 , 2 , "inline");

2009/11/24

【MSCRM4.0】lookup属性に値セット

●onLoadイベントに下記のスクリプトを追加する

---------------------------------------

var lookupData = new Array();

//Create an Object add to the array.
var lookupItem= new Object();

//Set the id, typename, and name properties to the object.
lookupItem.id = currentUserId [0].text; //GUIDをセット
lookupItem.typename = 'systemuser'; //エンティティ名をセット
lookupItem.name = currentUserFullName[0].text; //表示名称をセット

lookupData[0] = lookupItem;
crmForm.all.new_detail_contents1.DataValue = lookupData;

---------------------------------------

※new_detail_contents1 ・・・ lookup属性

2009/11/20

【MSCRM4.0】ユーザ名選択時、ユーザのメールアドレス取得

ユーザ名を選択するとユーザ情報よりメールアドレスを選択し、ユーザアドレスにセットします。


(図1参照)





                 (図1)





●ユーザ名のonChangeイベントに下記のスクリプトを追加します。



==============================================




==============================================

※responsiblecontactid ・・・ ユーザ名
※new_email1 ・・・ メールアドレス

【MSCRM4.0】フォーム内すべてをdisableにする

onLoadイベントに

for (var index in crmForm.all) {
var control = crmForm.all[index];
if (control.req && (control.Disabled != null)) {
control.Disabled = true;
}
}

追加します。