标签: dynamics-crm

MS Dynamics CRM - 数据库GUID

我正在使用SDK for CRM,并在我们的一个实体的一堆实例上打印出PK.我用数据库的过滤视图重复了它,得到了相同的答案:

    1a6c691d-391a-de11-8b0e-0050568407cb
    bd7b0ff0-391a-de11-8b0e-0050568407cb
    ed272bfe-391a-de11-8b0e-0050568407cb
    ... and so on ...

这些似乎不是有效的GUID.首先,他们看错了 - 它们几乎完全相同,这是自从旧版本1和2 GUID基于MAC地址和时钟时间以来GUID没有的属性.而且,事实上GUID中的某个半字节表示GUID的版本 - 这里的半字节不正确.(第三部分的第一个半字节,即:1a6c691d-391a - **d**e11-8b0e-0050568407cb) - 有效值为1-5)(使用MS的GUID生成器生成GUID - 该插槽始终为4.(至少对于我的版本.))

这些GUID,还是ID,我怎么知道?

guid dynamics-crm

8
推荐指数
1
解决办法
4078
查看次数

Microsoft Dynamic CRM集成SharePoint

有没有人完成了MS CRM 4.0和SharePoint集成.任何指针?我是CRM和SharePoint的新手.

经过一番研究,我想改进我的问题.我基本上想要使用IFRAME添加一个SharePoint选项卡,该选项卡将显示我创建的SharePoint页面.有关如何做到这一点的任何提示?

另外,我如何访问SharePoint中的CRM数据字段.即如果我在SharePoint中添加文件,我希望它拥有CRM属性页面中的所有元数据.

sharepoint crm dynamics-crm

8
推荐指数
1
解决办法
3708
查看次数

如何加入dbo.LocalizedLabelView以获取Dynamics CRM中的表单标签?

在Dynamics CRM中,我经常从业务用户那里获得创建报告的要求.业务用户了解并谈论实体显示名称属性标签.要编写查询,我需要将它们映射到实体名称属性名称.我想用一个查询来查看.

我将如何加入dbo.LocalizedLabelView视图以获取以下查询中的AttributeLabel列?我无法弄清楚ObjectId应该引用什么.(如果你能告诉我你是如何找到答案我会特别感激的!)

select
    [EntityName]           = entityNames.Name,
    [EntityDisplayName]    = entityDisplayNames.Label,
    [AttributeName]        = attributeNames.PhysicalName,
    [AttributeDisplayName] = attributeDisplayNames.Label
    --[AttributeLabel]     = attributeLabels.Label
from 
    dbo.EntityView entityNames

    inner join dbo.LocalizedLabelView entityDisplayNames
        on entityDisplayNames.ObjectId = entityNames.EntityId
        and entityDisplayNames.ObjectColumnName = 'LocalizedName'

    left outer join dbo.AttributeView attributeNames
        on attributeNames.EntityID = entityNames.EntityID

    inner join dbo.LocalizedLabelView attributeDisplayNames
        on attributeDisplayNames.ObjectId = attributeNames.AttributeID
        and attributeDisplayNames.ObjectColumnName = 'DisplayName'
        and attributeDisplayNames.LanguageID = entityDisplayNames.LanguageID

    --inner join dbo.LocalizedLabelView attributeLabels
    --  on attributeLabels.ObjectId = ?????
    --  and attributeLabels.LanguageID = …
Run Code Online (Sandbox Code Playgroud)

sql label reporting dynamics-crm

8
推荐指数
1
解决办法
3476
查看次数

为什么我的CRM工作流程会触发无限循环保护?

更新

我应该从一开始就添加 - 这是在Microsoft Dynamics CRM 2011中


我很了解CRM,但我无法解释当前部署的行为.

请阅读我的场景概要,以帮助我理解我的哪些假设/理解是错误的(因此导致此错误的原因).这与我的期望不符.

基本情景

  • 要求要求每X分钟调用一次Web服务(它将待处理项添加到数据库索引)
  • 我选择使用工作流/自定义实体触发器模型(即我有一个自定义实体,其中注册了一个CREATE插件.该插件执行我的逻辑.当"完成"时间+ [超时时间]到期时,启动伴随工作流程.到期时,它会创建一个新的触发记录,工作流程结束).
  • 插件逻辑工作得很好.工作流概念在某种程度上可以正常工作,但经过一段时间后,工作流失败了:

    此工作流作业已取消,因为启动它的工作流包含无限循环.更正工作流逻辑,然后重试.有关工作流逻辑的信息,请参阅帮助.

简而言之 - 标准的无限循环检测.我理解这个概念及其存在的原因.

具体部署

首先,我认为在这种情况下忽略插件代码的内容是非常安全的.它工作正常,它是原子的,几乎不接触CRM(很明显,它是一个运行远程Web服务的事件前插件,等待响应,然后在我的Trigger记录上设置"完成日期"日期/时间属性,然后通过目标实体回到管道中).只要创建了一个Trigger记录,该代码就会运行并执行它应有的操作.

打了插件的内容后,可能会有一个问题,我不喜欢在实体的预创建步骤中注册插件...

这就离开了工作流程本身.这是一个简单的.它如此运行:

  1. 在创建新的Trigger实体时......
  2. 它有一个Trigger.new_completedon超时15分钟
  3. 在超时时,它会创建一个新的Trigger记录(没有"completed on"值 - 这是由插件设置记住)
  4. 这就是全部 - 没有明确的"终端工作流程"(虽然我现在刚刚添加了一个并将其设置为测试......)

通过这种设置,我手动创建一个新的Trigger记录,并且该过程很好地实现了动作.向前滚动1小时58分钟(基于我运行的最后一个循环 - 记住我的插件代码可能需要一分钟才能完成运行),经过7个成功的执行周期(即创建并完成新的工作流程作业)后,第8个失败了上述错误.

我已经知道的(纠正我错在哪里)

默认情况下,递归深度设置为8.如果工作流/插件自身调用8次,则会检测到无限循环.

递归深度每隔一小时重置一次(或10分钟 - 请参阅链接博客中的"警告"?)

可以在内部部署中使用部署Web服务 通过PowerShell或SDK代码设置递归深度设置(通过Set-CrmSetting Cmdlet)

我不想听的(请)

"更改递归深度设置"

我无法更改部署递归深度设置,因为这不是在线方案中的选项 - 最终我也将部署到CRM Online.

" 延长工作流程的超时时间 "

这也不是一个选项 - 重新索引需要每15分钟发生一次,理想情况下更快.

更新

@Boone在下面建议递归深度超时在60分钟不活动后重置,而不是每60分钟重置一次.这是第一个误解.

在与@alex讨论时,我建议在通过工作流创建实体和产生最终产生的工作流之间可能存在一些持久性的CorrelationId ......好吧.插件和工作流中的CorrelationId相同,并且该线程的任何记录都是相同的.我现在正在研究如何从实体和工作流中分离CorrelationId(或者可能是创建记录).

dynamics-crm infinite-loop dynamics-crm-2011

8
推荐指数
1
解决办法
9532
查看次数

找出从CRM Dynamics返回的实体中所有属性的名称

我自己进入了服务器,我已经检索了(希望)正确的数据集.然后,我尝试通过以下代码列出所有公司.

EntityCollection result = proxy.RetrieveMultiple(expression);
foreach (var entity in result.Entities)
{
  String output = String.Empty;
  if (entity.Attributes.Contains("account"))
    output = entity.Attributes["account"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

但是,运行一个遍历所有可用属性的内部循环会很不错result.Entities.我应该使用entity.Attributes.Keys还是有更好的方法?

c# dynamics-crm

8
推荐指数
1
解决办法
2万
查看次数

无效的CRM 2011 LINQ查询:"无效",其中'条件.实体成员正在调用无效的属性或方法."

我正在尝试执行此查询以检索特定实体类型的审核项目

public List<Audit> GetAuditChangesSince(DateTime since, string entityType)
{
    return (from a in OrgContext.CreateQuery<Audit>()
        where
            a.ObjectId != null && a.ObjectId.LogicalName == entityType &&
            a.CreatedOn > since
        select a).ToList();
}
Run Code Online (Sandbox Code Playgroud)

a.ObjectId!= NULL && a.ObjectId.LogicalName ==的EntityType &&条款导致的问题.我知道.Equals()可能会导致问题(因此==)并且LINQ提供程序存在以下限制:

子句的左侧必须是属性名称,子句的右侧必须是值

左侧是属性,右侧是常量.是.ObjectId.LogicalName导致问题吗?

linq crm dynamics-crm dynamics-crm-2011

8
推荐指数
1
解决办法
9915
查看次数

如何在单元测试中模拟CRM插件沙箱隔离模式?

上下文

我想针对CRM 2016 CodeActivity和Plugin类将使用的类编写一些单元测试.最终的程序集将以沙箱隔离模式注册.

我想确定在运行单元测试时测试用例是否为绿色,在CRM中注册和运行时,沙箱隔离安全限制不会受到更多限制.

有没有办法在运行单元测试时模拟沙箱隔离?

unit-testing dynamics-crm

8
推荐指数
1
解决办法
522
查看次数

Watin - 如何使用弹出页面测试网站

我正在使用WatiN(.Net中的Web应用程序测试)在Dynamics CRM 4.0网站上进行集成测试.CRM使用大量弹出窗口 - 例如,单击列表中的联系人会打开一个带有联系人详细信息的新浏览器窗口.

我想测试一下:

  • 登录CRM(完成)
  • 转到联系人列表(完成)
  • 点击一个联系人,从而触发弹出窗口(完成)
  • Contact实体/表单中的测试功能(不能做)

所以我需要抓住弹出的窗口.怎么样?

谢谢.

watin automated-tests dynamics-crm dynamics-crm-4

7
推荐指数
2
解决办法
5475
查看次数

是否可以使用Microsoft Dynamics CRM 4.0中的FetchXml进行复合连接?

我正在使用FetchXml来查询CRM 4.0.我们有一个特殊情况需要在CRM entites之间进行复合连接.所述FetchXml模式表示的多个链路实体元件是允许的,并且它也表明,多个过滤器/条件的元素可以被添加到链路的实体.我面临的问题是条件元素的value属性似乎不允许实体/列名称.它期望明确声明的值.

例如,FetchXml允许您指定:

<link-entity name='myentity' from='column1' to='column2'/>
Run Code Online (Sandbox Code Playgroud)

...这与T-SQL相当:

JOIN myentity on column1 = column2
Run Code Online (Sandbox Code Playgroud)

它可以让你指定:

<link-entity name='myentity' from='column1' to='column2'>
   <filter type='and'>
      <condition attribute='column3' operator='eq' value='myvalue' />
   </filter>
</link>
Run Code Online (Sandbox Code Playgroud)

...这是T-SQL的等价物:

JOIN myentity on column1 = column2 AND column3 = 'myvalue' 
Run Code Online (Sandbox Code Playgroud)

但是,FetchXml不会出现以下内容:

JOIN myentity on column1 = column2 AND column3 = column4 
Run Code Online (Sandbox Code Playgroud)

注意区别.FetchXml提供了连接中的条件,但它似乎提供了复合连接,即跨多个列的连接.

有没有人在网络空间中能够使用CRM 4.0中的FetchXml执行复合连接?谢谢!

更多信息:

我正在寻找一个使用FetchXml来完成此任务的答案 - 而不是SQL或QueryExpression语法.上面的SQL只是为了解释这个概念.

dynamics-crm fetchxml

7
推荐指数
1
解决办法
4908
查看次数

相当于SQL IN子句

我有一个名为new_trexmail的实体,其中包含一个名为new_contextline的字符串属性.

我正在尝试获取一个实体列表,其中new_contextlineis在定义的列表中.

以下代码失败并显示错误: NotSupportedException: Invalid 'where' condition. An entity member is invoking an invalid property or method.

string[] test = new[]{"aaa", "hhh"};

var query = from n in New_trexmailSet
            where test.Contains(n.New_contextline)
            select n;
Run Code Online (Sandbox Code Playgroud)

我理解为什么会抛出这个错误,但我想知道是否可以使用XRM进行IN子句的等效.

如果可能的话,我该如何让XRM执行SELECT * FROM new_trexmail WHERE new_contextline in ('aaa', 'hhh')

谢谢,

大卫

linq microsoft-dynamics crm dynamics-crm dynamics-crm-2011

7
推荐指数
1
解决办法
2477
查看次数