【问题标题】:Addressing UTCDateTime field in data entity URL for patch method in postman ~ D365FO解决 postman 中补丁方法的数据实体 URL 中的 UTCDateTime 字段 ~ D365FO
【发布时间】:2021-10-30 01:55:19
【问题描述】:

今天的问候!

我正在尝试通过邮递员更新(即补丁方法)PartyLocationPostalAddressesV2 实体以进行集成。它有一个键,其中包含三个字段 [PartyNumber, LocationID, ValidFrom]。我需要对 URL 进行寻址。

我正在尝试:

D365EnvironmentAddress/.../PartyLocationPostalAddressesV2(dataAreaId='206'PartyNumber='000219507'LocationId='L000007558'ValidFrom='2021-10-20T06:54:04Z')

但是我收到了这个错误:

"Message": "No HTTP resource was found that matches the request URI '">D365EnvironmentAddress/.../PartyLocationPostalAddressesV2(dataAreaId='206'PartyNumber='000219507'LocationId='L000007558'ValidFrom=2021-10-20T06:54:04Z)'. No route data was found for this request."

我尝试过使用过滤器而不是寻址,

D365EnvironmentAddress/.../PartyLocationPostalAddressesV2 PartyNumber eq '000219507' and LocationId eq 'L000007558' and ValidFrom eq 2021-10-20T06:54:04Z

它正在工作,但要更新字段,我们只需要根据我的知识使用寻址,所以请帮助我。我知道我需要在 validfrom 字段周围进行一些更改。但是查不出来。因为在使用过滤器时,我遇到了同样的错误,所以尝试为它工作的 validFrom 字段删除单引号。我尝试了同样的解决方法,但我错过了一些东西。请指导我完成它。 提前致谢! 我也附上了截图。

This one while using filter query

This one while using addressing

【问题讨论】:

    标签: api postman odata dynamics-365-operations data-entities


    【解决方案1】:

    我在 10.0.20 环境中使用 Contoso 演示数据完成了这项工作。

    以下是我遇到的一些问题,我在问题的示例请求中也看到了这些问题:

    • 寻址格式的请求包括dataAreaId。这不是必需的,因为PartyLocationPostalAddressesV2 实体的数据不是公司特定的。在寻址格式中包含 dataAreaId 会导致这些实体出现上述问题。
    • 与带有过滤器的请求一样,ValidFrom 的值不应包含在引号中。这也会导致上述问题。

    所以在重试之前确保这两个都已修复。

    为了记录,这是对我有用的 GET 请求:

    {{D365EnvironmentAddress}}/data/PartyLocationPostalAddressesV2(PartyNumber='000000002',LocationId='000000002',ValidFrom=2013-07-02T18:38:16Z)
    

    PATCH 请求看起来一样,我使用以下有效负载成功更新街道(确保有效负载内容类型设置为 application/json):

    {
        "Street": "123 Third Street"
    }
    

    请注意,PATCH 请求将返回 204 No Content 状态代码,但数据会更新。

    最后,这是我正在处理的记录的 JSON 数据,由 GET 请求返回:

    {
        "@odata.context": "https://usnconeboxax1aos.cloud.onebox.dynamics.com/data/$metadata#PartyLocationPostalAddressesV2/$entity",
        "@odata.etag": "W/\"JzAsNTYzNzE0NDgyNjszNjMxNDk1NjIsNTYzNzE0NDgyNic=\"",
        "PartyNumber": "000000002",
        "LocationId": "000000002",
        "ValidFrom": "2013-07-02T18:38:16Z",
        "Address": "123 Third Street\nBaldwin City, KS 66006\nUSA",
        "IsPrivate": "No",
        "Description": "Head Office",
        "IsPrimary": "Yes",
        "IsPrivatePostalAddress": "No",
        "IsRoleDelivery": "No",
        "IsPrimaryTaxRegistration": "Yes",
        "CityInKana": "",
        "ZipCode": "66006",
        "IsRoleBusiness": "No",
        "PostBox": "",
        "DunsNumber": "",
        "Apartment_RU": "",
        "DistrictName": "",
        "BuildingCompliment": "",
        "CountryRegionISOCode": "US",
        "StreetInKana": "",
        "CountryRegionId": "USA",
        "IsLocationOwner": "Yes",
        "TimeZone": null,
        "ValidTo": "2154-12-31T23:59:59Z",
        "Longitude": 0,
        "Building_RU": "",
        "County": "",
        "StreetNumber": "",
        "Latitude": 0,
        "IsRoleHome": "No",
        "IsRoleInvoice": "No",
        "City": "Baldwin City",
        "AttentionToAddressLine": "",
        "Roles": "Business",
        "Street": "123 Third Street",
        "State": "KS"
    }
    

    【讨论】:

    • 您好,感谢您的回复。我试过你说的方法。它适用于 get 方法,并且正在修补它显示“204 No Content”,正如您所提到的,但之后在使用 get 方法检查时,该值并没有改变它只保留旧数据。
    • 当我尝试直接更新 Address 字段时遇到了类似的问题。由于该信息由其他字段组成,因此仅在更新其他字段时才会更新(例如Street)。如果这没有帮助,请创建一个新问题并发布您的 PATCH 查询和有效负载以及预期与观察到的结果。
    • 我不能使用补丁,所以我在邮递员中使用了 post 方法,没有使用寻址或过滤。相反,我发送了正文中的值来修改值或创建新记录。它以这种方式工作。感谢所有花费宝贵时间的人。
    猜你喜欢
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多