微软CRM系统的二次开发主要包括四个方面:1)自定义实体的设置;2):站点图的设置;3)ISV.Config文件(实体页面导航条以及功能菜单)的配置;4)客户端JavaScript的设计。
特别注意:对系统中进行的二次开发之后一定要在自定义界面选择“发布”,不然是不能使用的。
一:自定义实体的设置
微软CRM系统提供按照自己需求要求,对CRM系统功能进行扩充,因此也涉及到用户自定义实体的设计工作,在白沙集团,按照烟草行业的需求,以及结合微软CRM系统的要求,做出了一个烟草行业的自定义实体的数据库文件,见《微软CRM自定义实体》,在该文件中定义了31张自定义数据库表。
进入自定义设置的方法是依次按照系统导航条选择:设置→设置→组织设置→系统设置→自定义,进入自定义设置界面,然后“新建”,按照系统以及自定义实体数据库表的要求,对系统进行表的添加,注意的是:对于自定义的表名系统是要提供默认前缀的,系统默认的是new_,同时系统要求提供一个真正的数据库表的名称和一个显示名称,还要注意的是系统只提供数据库的一对多,和多对一的关系,不提供多对多关系的数据库设计。
添加完表后,就要添加相关的表字段的设置,一般的字段设置直接添加,涉及到表与表之间的关联字段,则是通过字段之间的关系设置完成的,有专门的“关系”菜单进行设置,如果要想直接通过关系,直接在页面上直接显示,则要把关系字段进行影射,注意的是在做关系和影射时,两个字段的类型要一定一样才行。
以下为在实体定义中的关系和影射设置图:
定义完好表以及字段之后,则要对表单和视图进行设计,以便在页面上进行显示操作,以下是设置表单的页面界面:
在上图中的Add a Tab表示添加一个标签,如上图中的Detail;Add a Section表示添加一个节,如上图中的“Business Information”,Add Fields表示在那个节中添加具体的字段,如“Ownership”;Add an IFrame表示添加一个页面框架,跟html中的IFrame是一致的,用来引用外部的页面。如果要删除以上的标签,节或字段,直接选中某个字段或节,选Remove即可。要改变某属性,先选中该控件,选择“Change Properties”进入属性配置页面,如下图(其中一部分)所示:
自定义实体的操作,主要是要直接操作,微软CRM系统提供的接口,直接在该接口中进行添加,完成设置后系统会自动生成相关的页面表单,但还需要对表单以及视图进行相关的配置,当配置好后就可以在系统中使用了。
二:站点图的配置
站点图只要是一个XML的配置文件,通过配置站点图的方法,可以调整在系统主页面中的站点导航显示功能,其结构如下所示:
1.Area中的各个属性的含义
2.Group中的各个属性的含义
3.SubArea中的各个属性的含义
4.Privilege中的各个属性的含义:
注:CRM_PrivilegeId的值为Read,Write,Append,AppendTo,Create,Delete,Share,Assign,All中的一项或者是多项组合。如果是组合用“,”间隔,中间不能有空格。
5.操作方法
1)导出站点图:设置→自定义→导出自定义项,选择“站点图”,然后选择“其他动作”→“导出所选自定义项”。或者之间使用
http:// 站点名/Tools/SystemCustomization/ExportCustomizations/exportCustomizations.aspx
2)修改导出的XML文档:使用Visual Stdio.net 2003直接修改该XML文档,各个标签的含义如上所示。
3)导入站点图:设置→自定义→导入自定义项,选择要导入的站点图XML文档,然后点“上载”,等该文件显示在列表中时,点“导入所有自定义项”或“其他动作”→“导入所选自定义项”。也可以通过
http://站点名/Tools/SystemCustomization/ImportCustomizations/importCustomizations.aspx
6.站点图实例
特别注意:对系统中进行的二次开发之后一定要在自定义界面选择“发布”,不然是不能使用的。
一:自定义实体的设置
微软CRM系统提供按照自己需求要求,对CRM系统功能进行扩充,因此也涉及到用户自定义实体的设计工作,在白沙集团,按照烟草行业的需求,以及结合微软CRM系统的要求,做出了一个烟草行业的自定义实体的数据库文件,见《微软CRM自定义实体》,在该文件中定义了31张自定义数据库表。
进入自定义设置的方法是依次按照系统导航条选择:设置→设置→组织设置→系统设置→自定义,进入自定义设置界面,然后“新建”,按照系统以及自定义实体数据库表的要求,对系统进行表的添加,注意的是:对于自定义的表名系统是要提供默认前缀的,系统默认的是new_,同时系统要求提供一个真正的数据库表的名称和一个显示名称,还要注意的是系统只提供数据库的一对多,和多对一的关系,不提供多对多关系的数据库设计。
添加完表后,就要添加相关的表字段的设置,一般的字段设置直接添加,涉及到表与表之间的关联字段,则是通过字段之间的关系设置完成的,有专门的“关系”菜单进行设置,如果要想直接通过关系,直接在页面上直接显示,则要把关系字段进行影射,注意的是在做关系和影射时,两个字段的类型要一定一样才行。
以下为在实体定义中的关系和影射设置图:
定义完好表以及字段之后,则要对表单和视图进行设计,以便在页面上进行显示操作,以下是设置表单的页面界面:
在上图中的Add a Tab表示添加一个标签,如上图中的Detail;Add a Section表示添加一个节,如上图中的“Business Information”,Add Fields表示在那个节中添加具体的字段,如“Ownership”;Add an IFrame表示添加一个页面框架,跟html中的IFrame是一致的,用来引用外部的页面。如果要删除以上的标签,节或字段,直接选中某个字段或节,选Remove即可。要改变某属性,先选中该控件,选择“Change Properties”进入属性配置页面,如下图(其中一部分)所示:
自定义实体的操作,主要是要直接操作,微软CRM系统提供的接口,直接在该接口中进行添加,完成设置后系统会自动生成相关的页面表单,但还需要对表单以及视图进行相关的配置,当配置好后就可以在系统中使用了。
二:站点图的配置
站点图只要是一个XML的配置文件,通过配置站点图的方法,可以调整在系统主页面中的站点导航显示功能,其结构如下所示:
1.Area中的各个属性的含义
属性名 |
描述 |
类型 |
值 |
是否必须 |
ID | ASCII唯一标示(不含空格) | CRM_Identifier | [a-zA-Z0-9_]+ | 是 |
Title | 标签显示名称,覆盖 ResourceId. | String | 例如"Sales" | 否 |
ResourceId | 被用于默认标签显示的名称 | String | [a-zA-Z0-9_]+ | 否 |
Icon | 有效的图象URL地址 | String | URL | 否 |
Url | 在Outlook点击目录时弹出的页面的URL | String | 有效的URL | 否 |
ShowGroups | 在导航栏中的子目录中是否显示组名称 | Boolean | True | false | 否 |
2.Group中的各个属性的含义
属性名 |
描述 |
类型 |
Values | 是否必须 |
ID | ASCII唯一标示(不含空格) | CRM_Identifier | [a-zA-Z0-9_]+ | 是 |
Title | 标签显示名称,覆盖 ResourceId. | string | 例如"Sales" | 否 |
ResourceId | 被用于默认标签显示的名称 | String | [a-zA-Z0-9_]+ | 否 |
URL | 在Outlook点击组名称时弹出的页面的URL | String | 有效的 URL | 否 |
IsProfile | 控制是否要在个性化工作区进行选择,然后在我的工作区进行显示 | Boolean | true | false | 否 |
属性名 |
描述 |
类型 |
是否必须 |
ID | ASCII唯一标示(不含空格) | CRM_Identifier | 是 |
Title | 标签显示名称,覆盖 ResourceId. | string | 否 |
ResourceId | 被用于默认标签显示的名称 | String | 否 |
Icon | 显示的Icon图标的URL | String | 否 |
URL | 指向子目录页面的URL | String | 否 |
Client | 客户端类型 Defaults 或 All | CRM_Client | 否 |
AvailableOffline | 控制该自目录是否离线可用 | Boolean | 否 |
Entity | Schema名称 | string | 否 |
属性名 |
描述 |
类型 |
是否必须 |
Entity | 实体Schema 名称 | string | 是 |
Privilege | 自目录显示所需要的权限 | CRM_PrivilegeId | 否 |
5.操作方法
1)导出站点图:设置→自定义→导出自定义项,选择“站点图”,然后选择“其他动作”→“导出所选自定义项”。或者之间使用
http:// 站点名/Tools/SystemCustomization/ExportCustomizations/exportCustomizations.aspx
2)修改导出的XML文档:使用Visual Stdio.net 2003直接修改该XML文档,各个标签的含义如上所示。
3)导入站点图:设置→自定义→导入自定义项,选择要导入的站点图XML文档,然后点“上载”,等该文件显示在列表中时,点“导入所有自定义项”或“其他动作”→“导入所选自定义项”。也可以通过
http://站点名/Tools/SystemCustomization/ImportCustomizations/importCustomizations.aspx
6.站点图实例
<!--客户服务管理-->
<AreaId="CS"Title="客户服务管理"ResourceId="Area_Service"ShowGroups="true"Icon="/_imgs/services_24x24.gif"DescriptionResourceId="Customer_Service_Description">
<GroupId="CS"Title="客户服务管理"IsProfile="true">
<SubAreaId="nav_managekb"ResourceId="Homepage_KBManager"Icon="/_imgs/ico_18_126.gif"Url="/cs/home_managekb.aspx" Client="Web">
<PrivilegeEntity="kbarticle"Privilege="Read,Write,Create"/>
</SubArea>
<SubAreaId="nav_contracts"Title="客户请求跟踪"Entity="contract"/>
</Group>
</Area>
三:ISV.ConfigXML1“Entity”NameSchema“”2“NavBarItem”Area“Sales”3“Entity”4“MenuBar”5“ToolBar”6“NavBar”1“Toolbar”“ValidForCreate”ValidForCreate=“0”ValidForCreate=“1”2“Toolbar”“ValidFor”ValidForUpdate =“0”ValidForUpdate =“1”3ToolBarr4Button1“NavBar”“ValidForCreate”ValidForCreate=“0”ValidForCreate=“1”2“NavBar”“ValidForUpdate”ValidForUpdate =“0”ValidForUpdate =“1”3NavBarItem1“Menu”“ValidForCreate”ValidForCreate=“0”ValidForCreate=“1”2“Menu”“ValidForUpdate”ValidForUpdate =“0”ValidForUpdate =“1”3)“Menu”“Title”4“SubMenu”5“MenuSpacer”6MenuItem“”“”“”http:// /Tools/SystemCustomization/ExportCustomizations/exportCustomizations.aspx Visual Stdio.net 2003XMLXML“”“”“”“”http:///Tools/SystemCustomization/ImportCustomizations/importCustomizations.aspx JavaScriptCRMJavascriptOnLoad,OnSaveOnChange,,“Form Properties”JavaScriptJavaScriptCRMWordSQL Report OfficeSQL Server Report ServiceVisual Stdio.net 2003,Visual Stdio.net 2003Visual Stdio.net 2005SQL Server Report Service2000CRM,CRMCRMCRM””””SQL Server Services2.4 Microsoft CRM “”“”“” “”“”“”:“:”“”“”“:”“”“:”“”“”11CRM12“ ”“ ”“ ”“ :”“ ”“ ”“ ”1314“”“”“”15view16“”“”“”“”“”“”“”“”“”“”“”“”“”“”1718POST URL3.01920SQLCRMAF_CRMAF_21CRMWeb.Config<add key="DevErrors" ="Off"/>value=“true”CRM22CRMWeb.Config<add key="ISVIntegration" value="None"/>valueAllOutlookOutlookLaptopClientOutlookWorkstationClientWebNone