我对复合属性的主题有疑问,如果你能帮助我,我将不胜感激.我之前在其他问题博客上发布了这个,但没有得到回应我很满意.
我正在编写JavaScript来更新复合(address1_composite)中的字段(即address1_line1,address1_line2,address1_line3,address1_city,address1_stateorprovince,address1_postalcode,address1_country).更新字段后,复合似乎不会更新.我必须打开复合材料并再次关闭它.有没有办法在JavaScript中自动执行此操作?
我尝试了以下想法:
想法1:
Xrm.Page.data.entity.save();
Run Code Online (Sandbox Code Playgroud)
建议在http://community.dynamics.com/crm/b/magnetismsolutionscrmblog/archive/2013/10/22/working-with-dynamics-crm-2013-composite-fields-fly-out-menu.aspx 这个没有任何好处,因为我的客户想要在保存页面之前查看复合材料.此外,我不想为我的客户保存页面,因为他们不想要这个.他们想自己决定何时这样做.
想法2:
Xrm.Page.data.refresh();
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,因为我不想刷新整个页面.我只想刷新复合材料.此外,它还会弹出一个弹出窗口,警告您没有保存页面,这对我的客户来说会很烦人.
想法3:
将地址从地址行写入复合.这感觉就像一个讨厌的黑客.这可能不止一种方法.我用过这个功能
Xrm.Page.getAttribute("address1_composite")._attribute.setValueForCompositeField();
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个,原因如下:
另一个想法是在对复合内部的任何字段进行更改后将焦点设置为复合字段.
Xrm.Page.data.entity.attributes.get("address1_composite").controls.get(0).setFocus();
Run Code Online (Sandbox Code Playgroud)
这是最好的主意,但它远非完美.这会强制用户按下完成按钮,因此将写入字段.我希望有更自动化的东西.
我的问题:如果有一种方法可以在JavaScript中单击复合完成按钮,那将会是多么美妙.这将给我完成按钮的格式和我需要的自动化.
更新 - 2014年4月14日自发布此问题以来,我一直与Microsoft联系,他们说没有支持通过程序单击"完成"按钮的方法.
我一直在努力解决MS Dynamics CRM Online插件中的错误.(见下文).它似乎发生在随机时间,但更有可能在活动高时发生.我已经验证并且没有尝试/捕获 - 继续问题,因为例外情况表明.并且没有成员参考OrganizationService Kept,因为这篇文章建议:
https://community.dynamics.com/crm/f/117/t/138785.aspx
有谁知道导致这个问题的原因,或者如何解决这个问题?
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ErrorCode>-2147220911</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>There is no active transaction. This error is usually caused by custom plug-ins that ignore errors from service calls and continue processing.</Message>
<Timestamp>2014-09-10T00:30:02.6905225Z</Timestamp>
<InnerFault>
<ErrorCode>-2147220911</ErrorCode>
<ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>There is no active transaction. This error is usually caused by custom plug-ins that ignore errors from service calls and continue processing.</Message>
<Timestamp>2014-09-10T00:30:02.6905225Z</Timestamp>
<InnerFault i:nil="true" />
<TraceText i:nil="true" />
</InnerFault>
<TraceText>
Run Code Online (Sandbox Code Playgroud) 我正在开发一个Windows应用商店应用程序,它使用Azure Active Directory进行身份验证,与Dynamics CRM Online进行通信.
该应用程序使用此CRM 2013 SDK示例: SampleCode\CS\ModernAndMobileApps\ModernSoapApp
并引用此nuget包进行身份验证:
Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication
我能够正确验证,主线是这样的:
AuthenticationResult result = await _authenticationContext.AcquireTokenAsync("Microsoft.CRM", ClientID, redirectUrl, string.Empty, string.Empty);
Run Code Online (Sandbox Code Playgroud)
问题是我需要添加一个注销功能,我无法摆脱持久性令牌.
我尝试使用以下行注销:
(AuthenticationContext.TokenCache as DefaultTokenCache).Clear();
Run Code Online (Sandbox Code Playgroud)
但是当我再次调用AcquireTokenAsync方法而不是显示用于输入凭据的页面时,应用程序能够自己获得有效的令牌.
执行完全注销时我缺少什么?
authentication azure dynamics-crm-online dynamics-crm-2013 azure-active-directory
我们将在CRM 2015中实现Selenium自动化测试以进行功能测试(客户端建议,因为它是开源工具),我在Google和Selenium for CRM 2015上做了很多探索.你能建议/指导我吗?如何在crm 2015中使用硒
我从我的控制台应用程序查询MS Dynamics CRM Online:
public EntityCollection GetEntities(string entityName)
{
IOrganizationService proxy = ServerConnection.GetOrganizationProxy();
string request = string.Format("<fetch mapping ='logical'><entity name = '{0}'></entity></fetch>", entityName);
FetchExpression expression = new FetchExpression(request);
var mult = proxy.RetrieveMultiple(expression);
return mult;
}
Run Code Online (Sandbox Code Playgroud)
此代码仅返回最多5000个元素mult.Entities
.我知道CRM中有更多实体.
如何检索所有的entites?
我正在使用MS Dynamics CRM 2013,我正面临下一个问题:在CRM 2011中,我通过使用下一个jscript来禁用查找和实体选择:
document.getElementById("lookup_id").setAttribute("disableViewPicker", "1");
document.getElementById("lookup_id").setAttribute("defaulttype", "1");
document.getElementById("lookup_id").setAttribute("lookuptypenames", "account:1:Account");
document.getElementById("lookup_id").setAttribute("lookuptypes", "1");
Run Code Online (Sandbox Code Playgroud)
但在迁移到Dynamics Crm 2013后,此脚本不再起作用.
你能帮我解决这个问题吗?谢谢!
我想按照MS CRM格式显示所有审核历史数据.
我已将AuditBase表中的所有记录从CRM导入到另一个数据库服务器表.
我希望这个表记录使用Dynamics CRM格式的SQL查询(如上图所示).
到目前为止我已经完成了
select
AB.CreatedOn as [Created On],SUB.FullName [Changed By],
Value as Event,ab.AttributeMask [Changed Field],
AB.changeData [Old Value],'' [New Value] from Auditbase AB
inner join StringMap SM on SM.AttributeValue=AB.Action and SM.AttributeName='action'
inner join SystemUserBase SUB on SUB.SystemUserId=AB.UserId
--inner join MetadataSchema.Attribute ar on ab.AttributeMask = ar.ColumnNumber
--INNER JOIN MetadataSchema.Entity en ON ar.EntityId = en.EntityId and en.ObjectTypeCode=AB.ObjectTypeCode
--inner join Contact C on C.ContactId=AB.ObjectId
where objectid='00000000-0000-0000-000-000000000000'
Order by AB.CreatedOn desc
Run Code Online (Sandbox Code Playgroud)
我的问题是AttributeMask是一个逗号分隔值,我需要与MetadataSchema.Attribute表的columnnumber字段进行比较.以及如何从该实体获得新价值.
我已经检查了这个链接:Sql查询从机会实体的审计历史中获取数据,但它没有给我[新值].
注意:我不能使用"RetrieveRecordChangeHistoryResponse",因为我需要在sql表(非CRM数据库)的外部网页中显示这些数据.
我需要在MS CRM 2013安装中全局提供JavaScript文件.我需要在每个页面/框架上使用它的功能.为了实现这一点,我准备好进行任何不受支持的自定义(除了MS CRM Online中没有的情况).
你知道什么是工作方法吗?
我找到了一篇文章,但是它基于MS CRM 2011并且在2013版本中不起作用.
非常感谢任何线索.
我刚刚加载了高级查找,我无法点击一半的图标/下拉,因为它们都在错误的位置.它在其他服务器和其他机器上运行良好.它似乎是一个CSS问题.有任何想法吗
我正在使用CRM2016
我创建了一个测试实体来复制问题
我没有对它进行任何定制.我用默认字段和表单创建了一个新记录.然后我尝试访问webapi
http://localhost/CRMDataBase/api/data/v8.0/new_test(bgcs0249-0a06-e611-941a-003002djlnc)
Run Code Online (Sandbox Code Playgroud)
它运作良好并带来了记录.然后我删除了记录并为它创建了一个业务流程,只需一个阶段和一个步骤
我激活它并添加了一个新的测试记录,并试图访问webapi网址,它抛出了以下错误
{"error":{"code":"","message":"属性'stageid'属于无法识别的EdmPropertyKind.实体new_test具有重复的导航属性名称.所有属性名称(Navigation和Structural属性)必须是唯一的实体","innererror":{"message":"属性'stageid'属于无法识别的EdmPropertyKind.实体new_test具有重复的导航属性名称.所有属性名称(Navigation和Structural属性)在实体","类型中必须是唯一的":" Microsoft.Crm.CrmHttpException " "堆栈跟踪":"在Microsoft.Crm.Extensibility.OData.CrmODataEntityTypeSerializer.CreateSelectExpandNode(entityInstanceContext entityInstanceContext个)\ r \n在System.Web.OData.Formatter.Serialization.ODataEntityTypeSerializer.WriteEntry(对象图,ODataWriter作家,ODataSerializerContext writeContext个)\ r \n
在System.Web.OData.Formatter.Serialization.ODataFeedSerializer.WriteFeed(IEnumerable的枚举,IEdmTypeReference的FeedType,ODataWriter作家,ODataSerializerContext writeContext个)\ r \n在 Microsoft.Crm.Extensibility.OData.CrmODataFeedSerializer.WriteObject(对象图,类型类型,ODataMessageWriter messageWriter,ODataSerializerContext writeContext个)\ r \n在System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStream(类型类型,对象的值,流writeStream, HttpContent内容,HttpContentHeaders contentHeaders)\ r \n在System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStreamAsync(Type type,Object value,Stream writeStream,HttpContent content,TransportContext transportContext,CancellationToken cancellationToken)\ r \n ---结束抛出异常的前一个位置的堆栈跟踪---\r \n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\ r \n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \n \n在System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext()","internalexception":{"message":"属性'stageid'是一个无法识别的EdmPropertyKind.","type":"Microsoft.ODa ta.Core.ODataException " "堆栈跟踪":"在Microsoft.OData.Core.UriParser.Parsers.SelectPathSegmentTokenBinder.ConvertNonTypeTokenToSegment(PathSegmentToken tokenIn,IEdmModel模型,IEdmStructuredType edmType,ODataUriResolver分解器)\ r \在Microsoft.OData.Coreñ. UriParser.Visitors.SelectPropertyVisitor.ProcessTokenAsPath(NonSystemToken tokenIn个)\ r \n在Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.Visit(NonSystemToken tokenIn个)\ r \n在Microsoft.OData.Core.UriParser.Parsers.SelectBinder.绑定(SelectToken tokenIn个)\ r \n在Microsoft.OData.Core.UriParser.Parsers.SelectExpandBinder.Bind(ExpandToken tokenIn个)\ r \n在Microsoft.OData.Core.UriParser.Parsers.SelectExpandSemanticBinder.Bind(IEdmStructuredType的ElementType,IEdmNavigationSource在Microsoft.Crm.Extensibility.OData.CrmODataE的Microsoft.OData.Core.UriParser.ODataQueryOptionParser.ParseSelectAndExpand()\ r \n中的navigationSource,ExpandToken expandToken,SelectToken selectToken,ODataUriParserConfiguration配置)\ r \n ntityTypeSerializer.CreateSelectExpandNode(EntityInstanceContext entityInstanceContext)"}}}}
如果我删除所有记录 - >停用业务流程 - >添加新数据然后检查webapi,它运行正常.但是,当我激活业务流程并添加新数据时,我收到上述错误PS:我没有对业务流程和实体进行任何编码/定制.但我仍然得到这个错误
可以做些什么来解决这个问题?
dynamics-crm dynamics-crm-2011 dynamics-crm-2013 dynamics-crm-2015 dynamics-crm-2016
dynamics-crm ×4
crm ×2
javascript ×2
azure ×1
c# ×1
jquery ×1
plugins ×1
selenium ×1
sql-server ×1