本站创建于2006年,博主为Delphi老码农,暗黑忠实粉丝,主要用于学习经验分享
该日志由 samool 发表于 2010-12-24 14:50:36
该日志由 samool 发表于 2010-12-24 14:46:41
CRM定义了查找视图后,可以定义查找列,这样,在其它实体里调用的时候可以用如下方法:
if (crmForm.FormType == 2 && crmForm.ObjectId != null)
{
var name = crmForm.all.name.DataValue;
crmForm.all.proid.additionalparams = 'search=' + encodeURIComponent(name);
}
注:
crmForm.ObjectId即为当前记录的ID;
crmForm.all.proid.additionalparams中,proid为关联的ID;
encodeURIComponent方法用于对字段进行编码,防止出现乱码。
该日志标签: CRM
该日志由 samool 发表于 2010-12-24 14:45:19
MSCRM 4.0 里通过客户端编程得到当前用户权限
在MSCRM新闻组里一个常见的问题是:如何通过客户端编程的方式得到当前用户的权限 下面是转刀客的解决方案:(原文地址:http://social.microsoft.com/Forums/zh-CN/crmchinese/thread/ffbd4b92-797a-487c-9d13-40ccc6de28ab),此解决方案经过测试,可以达到控制用户的权限。 加在需要权限的实体ONLOAD事件中 var newName = document.getElementById("crmFormSubmitId").value; //如果不为"",表明是编辑;否则为新建,不用验证 |
该日志由 samool 发表于 2010-12-24 14:43:50
在直接调用CRM数据库里的时间时,你会发现和你现在的系统时间不一样,其实微软提供了两个函数:
fn_LocalTimeToUTC
fn_UTCToLocalTime
调用这两个方法就好了。
该日志由 samool 发表于 2010-12-24 14:43:12
微软的CRM 4.0的关联视图(associated view)中,Inactive的记录默认是不显示的;在3.0中微软曾经提供了一个工具来解决这个问题,但4.0中微软官方已经不提供方法来修正这个问题。
不过在4.0中解决这个问题也很简单,只需要写一个Plugin就可以解决所有问题。
Plugin的基本思路是:将我们自己的代码嵌入到RetieveMultiple 消息中,修改其中的查询条件,将过滤Inactive记录的ConditionExpression去掉。
该日志由 samool 发表于 2010-12-24 14:40:07
记得前几天, 大清早的登录MSN就收到一同事发给我的两个关于MSCRM数据审核插件的超连接
http://jianwang.blogspot.com/2009/03/im-pleased-to-introduce-data-audit.html
http://mscrm-plugins.com/purchase.htm
第一个超连接是Jian Wang的Blog, 介绍MSCRM数据审核插件的文章. 从视频上看,刚开始我还以为那是在介绍我所开发的MSCRM数据审核插件呢.因为界面的设计和风格都和我开发的那个很相识. 不过仔细看了下还是有其别的. 配置页面似乎没有我做的那个更接近于MSCRM界面的风格.
第二个超连接是关于MSCRM数据审核插件的购买.
其实MSCRM 数据审核插件早在07年的时候我就有开发一个, 因为项目中常用到有这个功能需求, 所以08年4月份的时候, 我对其进行了完善并打包.
对于MSCRM 数据审核的具体功能在此我就不再做介绍了. Jian Wang的Blog中介绍的已经很详细. 下面我将给我所开发的MSCRM数据审核插件发一些截图(该插件在怡海的官网也有简要的介绍和视频, 有兴趣的也可以登录http://www.frensworkz.com/了解).
该日志由 samool 发表于 2010-12-24 14:37:55
在MSCRM中让Lookup根据一定的条件实现过滤功能, 这个需求很常见, 在我接触的诸多项目中似乎都需要有这个功能. 但非常遗憾是, MSCRM 的SDK并没有提供实现这个功能的方法. 不过我们应该还是感到庆幸, 据说, 微软CRM产品组有透露下面这样的方法:
场景:
实体:
实体名 架构名 客户 account 联系人 contact 客户:
字段名 架构名 类型 关联实体 上级单位 parentaccountid lookup 客户 主要联系人 primarycontactid lookup 联系人 联系人:
字段名 架构名 类型 关联实体 上司 parentcustomerid lookup 客户
需求:
在客户实体中, 当选择上级单位后, 点击主要联系人Lookup按钮, 在弹出的lookup选择对话框中必须过滤出上司等于上级单位的所有联系人.
该日志由 samool 发表于 2010-12-24 14:32:03
在MSCRM中, 视图的查找功能默认是匹配首字符串的. 比如. 你在查找框中输入ABC.那么当你点击查找时. 得到的结果都是以ACD开头的所有记录. 只有当你输入*ABC得到的结果才是包含ABC的所有记录.
如何能让MSCRM视图查找功能默认实现模糊查找呢? 在这里提供一种偷梁换柱的方法.
方法很简单, 更改视图所在的页面, 在onload事件中编写代码, 将原有的查找框隐藏, 用一新的查找框代替. 当点击查找按钮时, 先将替换后查找框的值前面加*号赋给原有的查找框, 然后再执行查找事件. 具体代码如下:
默认试图中实现模糊查找:
--------------------------------------------------------------------------------------
将下面的代码写入\CRMWeb\_root\homepage.aspx页面中. 并在该页面的onload 事件中调用FindCriteria 方法
function FindCriteria(){
var criteriaObj = document.getElementById("findCriteria");
var clearCBObj = document.getElementById("clearCriteriaButton");
var criteriaObj2 = criteriaObj.cloneNode(true);
criteriaObj2.onchange = function(){
criteriaObj.value = "*"+criteriaObj2.value;
if(criteriaObj.value == "*"){criteriaObj.value = "";}
}
criteriaObj2.id = "findCriteria2";
criteriaObj.parentElement.appendChild(criteriaObj2);
criteriaObj.style.display = "none";
clearCBObj.onclick = function(){
criteriaObj2.value = "";
try{
this.parentElement.parentElement.ClearQuickFind();
}catch(e){};
}
criteriaObj2.onkeydown = function(){
if(event.keyCode==13){
criteriaObj.value = "*"+criteriaObj2.value;
if(criteriaObj.value == "*"){criteriaObj.value = "";}
}
}
}
Lookup中实现模糊查找:
--------------------------------------------------------------------------------------
将下面的代码写入\CRMWeb\_controls\lookup\lookupsingle.aspx页面中. 并在该页面的onload 事件中调用FindCriteria 方法
function FindCriteria(){
var criteriaObj = document.getElementById("findValue");
var criteriaObj2 = criteriaObj.cloneNode(true);
criteriaObj2.onchange = function(){
criteriaObj.value = "*"+criteriaObj2.value;
if(criteriaObj.value == "*"){criteriaObj.value = "";}
}
criteriaObj2.id = "findCriteria2";
criteriaObj.parentElement.appendChild(criteriaObj2);
criteriaObj.style.position = "absolute";
criteriaObj.style.zIndex = "1000";
criteriaObj.style.left = "-1000px";
criteriaObj.style.top = "-1000px";
criteriaObj2.onkeydown = function(){
if(event.keyCode==13){
criteriaObj.value = "*"+criteriaObj2.value;
if(criteriaObj.value == "*"){criteriaObj.value = "";}
document.getElementById("btnGo").click();
}
}
}
当然这种方法属于微软unsupport的方法, 如果客户并不是特别在意这个功能, 本人也并不推荐使用该方法.
文章来源:http://www.cnblogs.com/xingbake/archive/2009/04/03/1428606.html
该日志由 samool 发表于 2010-12-24 14:25:19
站点图的配置
站点图只要是一个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 |
否 |
3.SubArea中的各个属性的含义
属性名 |
描述 |
类型 |
是否必须 |
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 |
否 |
4.Privilege中的各个属性的含义:
属性名 |
描述 |
类型 |
是否必须 |
Entity |
实体Schema 名称 |
string |
是 |
Privilege |
自目录显示所需要的权限 |
CRM_PrivilegeId |
否 |
注:CRM_PrivilegeId的值为Read,Write,Append,AppendTo,Create,Delete,Share,Assign,All中的一项或者是多项组合。如果是组合用“,”间隔,中间不能有空格。
该日志由 samool 发表于 2010-12-23 22:22:22
通过魅族M9自带的邮箱功能,登陆自己的谷歌账户,同步存储在谷歌云存储服务里的通讯录联系人。
通过邮箱同步谷歌联系人过程截图
魅族M9同步谷歌联系人教程:
1、如上图,点击M9桌面上的邮件图标,填写账号和密码。
在填写的时候,一定要记着填写完全,比如xxx@gmail.com这样的格式,填写完成之后会发现原先灰色不能点击的手动设置按钮变亮,此时选择手动设置。
2、点击手动设置后,会出现一个设置POP3、IMAP和Exchange这3个选项,这里我们需要选择Exchange。
邮箱手动设置服务器选项
选择Exchange后,还是需要先将用户名填写完全,然后可以看到默认的服务器地址是m.google.com,默认就可以,点击下一步继续。
3、接下里会进行邮箱的连接验证,完成后将界面上出现的同步联系人选项勾选开启。
开启同步联系人功能
4、以上完成之后,点击下一步就进入到邮箱选项界面。与此同时手机也在自动同步谷歌账号上面的联系人通讯录,如下图。
魅族M9谷歌邮箱同步和联系人通讯录同步完成
注意:在设置过程中,最容易出现问题的就是在点击下一步的时候会出现连接不上服务器的情况,尤其是移动GPRS等网络环境差的情况下,笔者建议通过Wi-Fi进行连接,基本上就一次成功,简单方便。