摘要: 现在的系统发现这样一个问题,报价单上的“创建订单”按钮在激活的报价单以后,系统管理员打开时是可以点击的,而用自定义的角色打开的时候是灰显的通过查看这个按钮的Enable Rule,发现有两条Custom Rule,一条是要求报价单已激活或者赢单关闭,另一条是canAppendToCustomer()返回true经过调试,第一条符合条件,而第二条返回了false依照canAppendToCustomer这个函数的字面意思,检查发现客户、联系人、订单,报价单的创建、追加、追加到等权限都已经设为了组织级,仍然是灰显的我想请问一下有谁研究过底层架构,知道这个函数的判断逻辑吗?是需要哪个权限?这个函数的 阅读全文
posted @ 2013-04-24 16:45 随乄风 阅读(319) 评论(0) 推荐(0) 编辑
摘要: statecode和statuscode是一对好基友,想直接通过修改statecode的值来激活或者停用一条记录,系统会报错正确的方法应该是通过调用SetStateRequest来执行状态的改变SetStateRequest setStateReq = new SetStateRequest();setStateReq.EntityMoniker = new EntityReference(entityName, guid);setStateReq.State = new OptionSetValue(statecode);setStateReq.Status = new OptionSetV 阅读全文
posted @ 2012-11-09 15:47 随乄风 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 1,如果一个实体的FORM中包含另下个实体类型的字段,直接将关联的实体的字段指向被关联实体的EntityReference就OK了2,如果一个实体与另一个实体FORM中都没有包含相应的字段,而只是出现在左侧的导航中,则应调用AssociateEntitiesRequest将两者关联起来AssociateRequest teamToProfile = new AssociateRequest{ Target = new EntityReference(FieldSecurityProfile.EntityLogicalName, _profileId), RelatedEntitie... 阅读全文
posted @ 2012-11-09 14:33 随乄风 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 经常会有这样的业务场景,客户想在商机中查看关联的订单信息,但不希望直接在商机中新建订单,所以当客户在商机中查看订单的时候,要把订单的Subgrid中的新建按钮禁用Visual Ribbon Editor是一个不错的工具,使用非常简单,但功能有限,此时可以用别一个工具——Ribbon WorkBench来实现我们的需求1,创建一个解决方案,把订单加进来2,在解决方案的功能区打开RibbonWorkbench,导入新建的解决方案3,在右侧选择Subgrid4,在要禁用的按钮上右击,点自定义,并在Properties:ButtonControl中找到这个按钮对应的Command5,在DisplayR 阅读全文
posted @ 2012-11-09 14:22 随乄风 阅读(882) 评论(0) 推荐(0) 编辑
摘要: 前几天写了一段JS,是商机产品中选了产品以后自动将产品对应的单位带过来,在自己的虚拟机里运行正常,然后放到开发环境下没有反应,经过调试,发现已经执行了,只是执行以后系统的JS会执行一个清除单位的操作,和虚拟机里的对比了一下,代码一样,只是crm版本稍微低一点,把开发环境版本升级以后果然就不做任务修改就好了可是第二天把开发环境的解决方案导入到生产环境的时候,有很多实体的自定义选项集报错,后来问了别人,才知道是CRM升级后的命名规则不一致造成的,例如升级前的选项集系统会给new_jsfs加一个后缀变成new_jsfs_quote,升级以后就变成了new_quote_new_jsfs,只需要将生产环 阅读全文
posted @ 2012-05-07 15:33 随乄风 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 最近客户提出需求:他们以往查出过竞争对手进行商业间谍活动的情况(另一家公司对他们的月生产计划了如指掌),要求自己对不同角色的访问权限进行控制,按照需求,要把系统中所有可以自定义的Entity及Attribute取出,导入到Excel中,由客户自定义,再将定义好的表在系统中进行配置,如图:我使用了两种方法读取数据,第一种通过winform程序连接,然后调用RetrieveAllEntitiesMetaDataRequest获取数据进行处理,这种是比较合适的,但使用起来相对比较麻烦OrganizationService第二种,直接使用Excel连接数据库读取数据库信息,这种方式相对很方便,但不是M 阅读全文
posted @ 2012-04-10 14:09 随乄风 阅读(1506) 评论(0) 推荐(0) 编辑
摘要: 要使用早期绑定,就必须生成强类型的实体,而Dynamics CRM的实体都是用Entity来表示的,所以要使用MS提供的CrmSvcUtil.exe连接CRM Server,对所有实体生成强类型CrmSvcUtil.exe在SDK的bin文件夹下,以管理员身份打开命令提示符,定位到CrmSvcUtil.exe的位置输入命令CrmSvcUtil.exe /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration" / 阅读全文
posted @ 2012-03-29 09:39 随乄风 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 上次在看到博客园上有一篇通过winform访问查询快递的OpenAPI文章,没有交待怎么实现,也没有代码,所以自己试了下,通过两种方法成功查询到快递信息。1,通过 HttpWebRequest和HttpWebResponse HttpWebRequest request = HttpWebRequest.Create("http://api.kuaidi100.com/apione" + "?com="+comboBox2.SelectedText+"&nu="+comboBox1.SelectedText+"&am 阅读全文
posted @ 2011-10-10 11:11 随乄风 阅读(934) 评论(1) 推荐(2) 编辑
摘要: Delphi在创建item的时候有个很不好的地方,新生成的item是自动命名的,如unit1,unit2,form1公司要求每个项目的工程名,文件名都是有意义的,(unit1,unit2这样的命名方式想让别人记住都难),虽然已经改过几次了,但每次改了下次再做的时候又不记得要改哪些地方了,所以索性记下来对于form还好,只要修改form的caption属性就可以了,就是unit类型比较麻烦,直接修改pas的文件名肯定不行(除非你是高手,想证明自己对一个项目的熟悉程度),应该要选定要修改的unit,然后File->Save as,这样IDE就会把除了pas以外的相关文件一起改名了,再Proj 阅读全文
posted @ 2011-06-30 15:12 随乄风 阅读(3073) 评论(8) 推荐(1) 编辑
摘要: 以前在写webform的时候知道要对用户输入的一些字符进行处理,防止注入漏洞,例如把变量加入到sqlparameter里面现在开始写桌面程序,本以为程序的bug基本上都解决了,然后拿测试用例一试,傻眼了,在要存入数据库的文本框中输入“ ’ ”或者“~!@#$%^&*()_+`1234567890-={}|[]\;':",./<>?|\”,悲剧了,报错回过头来想一想,如果在一个连接数据库input中拼接sql,那同样会把数据库的一些资料甚至数据库的权限暴露出来,看样子,程序员在写程序的时候还是要多思考,多总结,并能举一反三后来查了下资料,只要在输入信息的地方 阅读全文
posted @ 2011-06-30 09:34 随乄风 阅读(573) 评论(0) 推荐(0) 编辑