我目前正在使用Dynamics CRM 4.0 Web服务.我做的第一件事是Java/JAX-WS基于webservice的WSDL为wsimport生成正确的类.在生成类时,我遇到了一些错误:
[ERROR] A class/interface with the same name
"com.microsoft.schemas.crm._2007.webservices.RetrieveResponse" is already in use. Use a class customization to resolve this conflict.
line 979 of file://src/main/webapp/WEB-INF/classes/META-INF/wsdl/CrmServiceWsdl.wsdl
[ERROR] (Relevant to above error) another "RetrieveResponse" is generated from here.
line 12274 of file://src/main/webapp/WEB-INF/classes/META-INF/wsdl/CrmServiceWsdl.wsdl
Run Code Online (Sandbox Code Playgroud)
979行告诉我们:
<s:element name="RetrieveResponse">
<s:complexType>
<s:sequence>
<s:element name="RetrieveResult" type="s3:BusinessEntity" />
</s:sequence>
</s:complexType>
</s:element>
Run Code Online (Sandbox Code Playgroud)
第12274行给了我们:
<s:complexType name="RetrieveResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element ref="s3:BusinessEntity" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
Run Code Online (Sandbox Code Playgroud)
两个部分都在同一名称空间中.两者都将生成为RetrieveResponse.class,因此它们会发生碰撞.我找到了这个问题的解决方案,即JAX-B绑定xml文件:
<bindings node="//xsd:complexType[@name='RetrieveResponse']">
<jaxb:class name="RetrieveResponseType"/>
</bindings>
Run Code Online (Sandbox Code Playgroud)
这有效(不确定这是否是正确的方法..?)..
所以在此之后,我成功地创建了一些成功的Web服务调用,这很棒! …
我正在使用WatiN(.Net中的Web应用程序测试)在Dynamics CRM 4.0网站上进行集成测试.CRM使用大量弹出窗口 - 例如,单击列表中的联系人会打开一个带有联系人详细信息的新浏览器窗口.
我想测试一下:
所以我需要抓住弹出的窗口.怎么样?
谢谢.
我们基于Dynamics CRM 4.0中复杂的实体关系对复杂系统进行建模
由于开发的性质,我们必须实现存储库样式模式,并且具有许多彼此相关的不同提供者.
我真正想要做的是描述他们的构造函数和各种懒惰的getter,但我想在顶层建模.
问题当然是Scope - 如果我将构造函数包装在using块中,它就不可用于其他任何东西.如果我扩展using块以便引用我正在分析的对象的所有内容都进入范围,那么探查器不仅仅是对构造函数进行分析 - 它是其他所有内容的计时.
同样,有一定程度的嵌套,如果我正确嵌套使用,那么代码就变得不可读了.
我已经看过Profiler.Inline,但这不符合我的目的.
我真正想做的是:
ref = Profiler.StartStep("Creating CRM Model");
//Do horrible CRM work
var myNewHorribleObject = CRM.ModelHorribleStuff(...);
Profiler.StopStep(ref);
ref = Profiler.StartStep("How long does it take to get X");
var data = Repository.GetSomething(myNewHorribleObject.SomeId);
Profiler.StopStep(ref);
ref = Profiler.StartStep("How long does it take to get Y");
var newData = Repository.GetSomethingElse(myNewHorribleObject.ContextId);
Profiler.StopStep(ref);
Run Code Online (Sandbox Code Playgroud)
那有意义吗 ?希望我在Mini Profiler中忽略了一些东西,但我欢迎任何建议!
我想稍微改造代码,但是没有时间,虽然它看起来很奇怪,但实际上我们有很好的圈复杂度.
我有两个相关的问题.
第一:我希望对Dynamics CRM 4.0中的自定义实体进行全文搜索.有没有人以前做过这个或知道怎么做?
我知道我可以使用Web服务和sdk构建QueryExpressions但是我可以使用此方法使用布尔类型语法进行全文搜索吗?据我所知,这不会成功.
第二:有没有其他人对Dynamics CRM 4.0提供的搜索功能感到受限?我知道有一些第三部分的搜索产品,但我还没找到我喜欢的产品.任何建议,将不胜感激.
我正在尝试构建Dynamics CRM 4查询,以便我可以获取名为"事件A"或"事件B"的日历事件.
QueryByAttribute似乎没有完成这项工作,因为我无法指定"event_name"="事件B"的"event_name"="Event A"字段.
使用QueryExpression时,我发现FilterExpression适用于引用实体.我不知道FilterExpression是否可以在Referenced Entity上使用.下面的示例类似于我想要实现的内容,尽管这将返回一个空结果集,因为它将在名为"my_event_response"的实体中查找"name"属性.它开始看起来我需要运行几个查询才能得到这个,但这比我一次提交所有内容的效率低.
ColumnSet columns = new ColumnSet();
columns.Attributes = new string[]{ "event_name", "eventid", "startdate", "city" };
ConditionExpression eventname1 = new ConditionExpression();
eventname1.AttributeName = "event_name";
eventname1.Operator = ConditionOperator.Equal;
eventname1.Values = new string[] { "Event A" };
ConditionExpression eventname2 = new ConditionExpression();
eventname2.AttributeName = "event_name";
eventname2.Operator = ConditionOperator.Equal;
eventname2.Values = new string[] { "Event B" };
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.Or;
filter.Conditions = new ConditionExpression[] { eventname1, eventname2 };
LinkEntity link = new LinkEntity(); …Run Code Online (Sandbox Code Playgroud) 我是MS Dynamics的新手,我想知道是否有一种向视图添加列的方法,这是一些其他列的串联,例如:
Firstname + ' ' + Lastname As Fullname
Run Code Online (Sandbox Code Playgroud)
似乎没有明显(优雅)的解决方案,我看到的所有建议都建议使用javascript来维护新属性.
更进一步,如果我想从另一列中导出或计算一个列,例如一个人从出生日期开始的年龄,那么在视图加载时需要动态计算,对吗?我再也无法立即看到一种方法来为CRM框架提供这种简单的功能.也许我错过了什么?
任何建议将不胜感激.
正如标题所述,我正在寻找一种方法来区分由我的代码或基本CRM功能引起的错误与可能安装在客户端系统上的任何自定义插件引发的错误.
我们不断受害的是我们的客户定制的第三方插件,无论是他们在内部创建还是从另一个ISV购买.他们在我们接触的CRM实体上注册它,或者甚至在最近的一个案例中注册我们自己的实体.我们尝试做一些事情,插件尝试做它的事情并失败.在最近的例子中,插件在我们将其放入CRM后没有正确编码.该插件抛出错误,CRM将其抛回给我们.
如何在不浪费时间调查的情况下判断插件是罪魁祸首?到目前为止,我只看到一家公司通过将插件堆栈跟踪作为错误消息告诉它很容易.
编辑清晰度:
c# error-handling dynamics-crm dynamics-crm-2011 dynamics-crm-4
我有一个包含3个字段的表单,数据类型为多行文本.即使输入的文本值对于这3个字段来说很长,我也被要求显示完整的内容.
所以我继续检查Automatically expand to use available space表格编辑器中的字段格式部分,了解这三个字段中的每一个.
但是,似乎CRM只允许其中一个字段Automatically expand to use available space 检查此属性,这就是表单现在的样子 -
在上图中,Co-insurance,Reinsurance和Activity Record等字段都是多行文本.
任何有关扩展所有字段以占用表单上可用文本空间的帮助都将受到高度赞赏.请注意,页面在页面加载时应仅显示一行文本.
提前致谢.仅供参考 - 我正在使用Microsoft CRM 2016在线实例.
microsoft-dynamics dynamics-crm dynamics-crm-4 dynamics-crm-2013
我需要在未来3个月内与Pharmaceutical客户合作开发Dynamics项目.我在过去几年一直从事.NET技术的研究.现在我有兴趣学习Microsoft Dynamics.
请建议动态初学者如何以及从哪里开始......您的想法/任何教程链接/材料/书籍/培训/您的经历?
感谢你的时间.
谢谢
我想删除PreSearch文件管理器,我的代码如下.我怎样才能实现同样的目标?
Xrm.Page.getControl("productid").removePreSearch(function () {
Object
});
Xrm.Page.getControl("productid").addPreSearch(function () {
fetchxml2();
});
function fetchxml2() {
var fetchXml1 = "<filter type='and'>"
fetchXml1 += "<condition attribute='productid' operator='in' >";
for (var i = 0; i < Itemid.length; i++) {
fetchXml1 += "<value>" + Itemid[i] + "</value>";
}
fetchXml1 += "</condition>";
fetchXml1 += "</filter>";
Xrm.Page.getControl("productid").addCustomFilter(fetchXml1);
//Xrm.Page.getControl("productid").removePreSearch(fetchXml1);
};
Run Code Online (Sandbox Code Playgroud) crm dynamics-crm dynamics-crm-2011 dynamics-crm-4 dynamics-crm-2013