当前位置: 首页 > 知识库问答 >
问题:

使用CRM Dynamics WebApi创建“Global-OptionSet”属性时出现问题

傅朗
2023-03-14
{
  "@odata.type": "Microsoft.Dynamics.CRM.PicklistAttributeMetadata",
  "OptionSet": {
    "@odata.type": "Microsoft.Dynamics.CRM.OptionSetMetadata",
    "IsGlobal": true,
    "Name": "sd_MyPickList",
    "OptionSetType": "Picklist",
    "MetadataId": "a50cfc0a-e206-ea11-a811-000d3ab82e70"
  },
  "AttributeType": "Picklist",
  "SchemaName": "sd_MyAttribute",
  "Description": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "This is the attribute I want to create.",
        "LanguageCode": 1033
      }
    ]
  },
  "DisplayName": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "This is the attribute I want to create.",
        "LanguageCode": 1033
      }
    ]
  },
  "RequiredLevel": {
    "Value": "None",
    "CanBeChanged": true
  }
}

我希望得到一个Status204响应,这表明使用sd_MyPickList选项集在实体上创建了一个新的Picklist属性。

不幸的是,得到的回应是:

{
  "error": {
    "code": "0x80048403",
    "message": "Only Local option set can be created through the attribute create. IsGlobal flag must be set to 'false'.",
    "innererror": {
      "message": "Only Local option set can be created through the attribute create. IsGlobal flag must be set to 'false'.",
      "type": "Microsoft.Crm.CrmException",
      "stacktrace": "   ...)"
    }
  }
}

github项目中已经存在一个问题(请参见https://github.com/microsoftdocs/dynamics-365-customer-engagement/issues/601),但是我想知道是否有解决这个问题的方法--我需要发送什么json来创建一个全局选项集的属性?是否有人通过Web-API成功地创建了这样的实体属性?

有一个用法,我没有能力使用现有的库,导入解决方案在我的情况下不是一个选项。

如果有人能提供一个可以发送的简单json,例如使用Contact实体和任何全局OptionSet,那将是完美的。

共有1个答案

公西飞鸾
2023-03-14

最后,我找到了一个方法来完成我需要的事情。要指定全局选项集,我需要在JSON数据中使用“@odata.bind”操作。对于一个属性“sd_myattribute”,它使用带有元AID“62654906-7A0B-EA11-A817-000D3AB826FD”的全局选项集,我需要执行post:

{
  "@odata.type": "Microsoft.Dynamics.CRM.PicklistAttributeMetadata",
  "GlobalOptionSet@odata.bind": "/GlobalOptionSetDefinitions(62654906-7A0b-ea11-a817-000d3ab826fd)",
  "AttributeType": "Picklist",
  "SchemaName": "sd_MyAttribute",
  "Description": { ... },
  "DisplayName": { ... },
  "RequiredLevel": { ... }
}

如果实体确实具有元AID“70916B01-EDB2-4840-A16B-6A2EFBC75D84”,则POST的URI将是“/api/data/v9.0/entityDefinitions(70916B01-EDB2-4840-A16B-6A2EFBC75D84)/attributes”(不支持逻辑名称或模式名称)。

希望我的问题和答案能帮助得到同样错误信息的人。

 类似资料:
  • 我正在尝试使用GLFW创建一个窗口。窗口已创建,但经过几次尝试,创建窗口需要很长时间。 https://drive.google.com/file/d/1zq4IEjcSIJxy5wnXWLrGe46ptHMbKM5R/view?usp=sharing 我找不到任何解决办法,也不知道这是由什么引起的。 这是我正在使用的代码: 程序输出为 所以看起来初始化glfw需要很长时间,但我不知道如何修复它。

  • 当我像这样创建时,它工作得很好: 但当我尝试发送消息创建if时,它会抛出一个异常: 发送功能: 函数有什么问题?

  • 我正在尝试编写一个小作业DSL,但是在访问类属性时,我正在努力获得错误。 因此,甚至不需要复杂的脚本。请参见以下脚本 ​ 当在Groovy web控制台上运行时,它工作得很好,但是当在我的Jenkins上运行时,我得到: 如何在Jenkins上运行的Groovy脚本中访问类属性,而不出现< code>StackOverflowError异常? 我的系统: 詹金斯版本是 2.73.3 工作DSL插件

  • 我们正在将我们的事件系统迁移到函数式编程模型。我们遵循了下一个“指南”,它对消费者非常有效,但使用StreamBridge的生产者没有正确创建消息。 我们有下一个错误: 我们正在使用< code > 2021 . 0 . 0 spring-cloud版本。 通过简单的配置: 这是我们的自定义,它用于我们所有的微服务,因此,保持消息的格式很重要: 我们还使用< code>StreamBridge来生

  • 我想克隆git仓库与TortoiseGit的帮助下,但我得到错误: 错误:SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:访问时证书验证失败https://git.assembla.com/pplconnect-PL.webserver.git/info/refs?service=git-上载包致命:HTTP请求失败 git

  • 我正在使用openjdk 14.0.1 我一直跟着教程 https://openjfx.io/openjfx-docs/#install-javafx 遵循CLI中的运行时图像模块化教程 我已经使用jlink成功创建了运行时映像。创建的运行时映像如下所示,使用bin中的jvm,我可以运行此应用程序。 以便从此运行时创建包 我正在使用命令 这将创建一个安装程序,如下所示 但当我运行安装程序时,一声巨