1

我正在尝试将一些自定义从我们的开发环境迁移到测试环境。我拥有解决方案所需的一切。当我将它导入测试环境时,它失败并出现错误;

已添加具有相同密钥的项目。

在我从解决方案导入屏幕下载的错误文件中,它针对事件实体的表单项类型列出。我的解决方案包含一个新的自定义表单,它还包含 2 个默认“信息”表单的定义。

通过详细跟踪,我可以在 xml 字符串中看到错误;

<formXml LocalizedName="Case" OriginalName="Case"
         Description="Service request case associated with a contract."
         id="Incident" processed="true">
    <result result="failure" errorcode="0x80044150"
            errortext="An item with the same key has already been added."
            datetime="09:52:28.65" datetimeticks="635049859486557248" />
</formXml>

这是在 entitySubhandlers 节点内。但是,没有什么可以准确指出问题所在。有任何想法吗?谢谢。

4

6 回答 6

2

我今天遇到了同样的问题并找到了解决方案。

在 CRM 中,您有显示名称、名称和物理(数据库列)名称。出于某种原因,物理名称有时是用大写字母生成的,有时不是。

我的场景:与字段“Field 1”(显示-名称-物理)联系开发环境:“Field 1”“new_field1”“new_Field1”测试环境:“Field 1”“newfield1”“new_field1”=>注意没有这里大写F

当我删除 dev 上的字段并重新创建它时发生。以前物理名称在 dev 上是“new_Field1”,现在是“new_field1”。

我在网上找到的建议解决方案是删除该字段并重新创建它。这显然对我不起作用,但它可能对你有用。请参阅:https://community.dynamics.com/crm/b/crmpowerobjects/archive/2013/07/01/field-is-not-unique-error-when-importing-a-solution-in-crm-2011。 aspx

我的解决方案是直接在数据库中更新字段(如果您有 CRM 在线环境,则无法执行此操作,我使用的是 CRM 2011 on-premise Rollup 15,SQL server 2008 R2 SP1)。您需要在 Metadataschema.Attributes 中修改表架构 + 记录的物理名称。这样做需要您自担风险,因为 MS 不支持此操作并进行完整备份。

于 2014-03-04T12:20:38.163 回答
1

将自定义导入开发环境时出现相同的错误: 在用户实体上添加了具有相同密钥的项目。

我看到了 James Wood 的回答,并比较了双方的用户实体。并意识到我在两边都有 3 个自定义字段。这些是由第 3 方解决方案分别在实时和开发上创建的。

我刚刚删除了开发环境中的 3 个自定义字段。当我再次尝试导入时,它工作得很好。

感谢詹姆斯的提示。

于 2013-06-24T11:35:43.250 回答
1

我有同样的问题,它是由更改现有字段的类型引起的。

当前系统有一个名为Single Line of Textecs_salutation类型的字段。解决方案已将该字段删除并重新添加为选项集

导入将失败,因为字段类型不匹配。我必须手动从表单中删除该字段,将其从实体中删除并重新发布,然后才能成功导入解决方案

于 2014-10-20T01:47:56.660 回答
0

我相信当您在两个环境中都有一个字段(具有相同的模式名称)但它们属于不同类型时,就会发生这种情况。

您是否已经自定义了测试环境?如果是这样,我会比较该实体上的自定义字段。

于 2013-05-25T07:01:14.713 回答
0

我今天在将定制从开发导入生产时遇到了这个问题。原来有一个自定义字段在 dev 中被删除,然后使用相同的模式名称重新创建,但数据类型不同。我在生产中删除了该字段,并且自定义导入成功。

于 2014-09-18T23:57:36.307 回答
0

我无法解决这个问题。我记录了我的定制,恢复了我们的测试环境(这本身就是恢复生产)作为一个新的开发环境。一旦我这样做了,一切都按预期工作。

于 2013-05-31T11:58:49.037 回答