You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

D365通过OData API创建库存移动日记账触发字段必填报错

问题根因

报错提示的必须填写字段'Journal'不是指实体或底层表存在名为Journal的物理字段,是系统校验时抛出的字段标签提示,实际对应InventJournalTable表的JournalId(日记账编号)字段。
触发报错的核心原因是:你调用接口传入的日记账名称(JournalNameId)没有绑定有效的自动编号规则,系统在写入InventJournalTable记录时无法自动生成日记账编号,导致validateWrite校验失败。
你之前用InventoryCountingJournalHeaders创建盘点日记账能成功,是因为当时传入的盘点类日记账名称提前配置好了正确的编号序列,系统可以自动生成JournalId,不会触发该校验。
常见触发场景包括:

  • 传入的JournalNameId对应的日记账类型不是「移动」(Movement),和库存移动日记账实体不匹配
  • 对应日记账名称配置中,编号序列栏位留空,或关联的编号序列已停用、作用域不匹配当前操作的法人
  • 关联的编号序列设置为手动编号,但请求中没有主动传入JournalId值
解决方案

按以下步骤排查修复即可,不需要自定义扩展实体:

  1. 前端校验日记账名称配置
    进入D365 FO路径:库存管理 > 设置 > 日记账名称 > 库存,找到接口请求中使用的JournalNameId对应记录,确认两项配置:
    • 日记账类型 必须选择移动
    • 编号序列 栏位必须绑定已激活、作用域匹配当前法人、可用的编号序列,禁止留空
  2. 调整接口请求参数
    不需要在请求中传递名为Journal的字段,该字段不属于InventInventoryMovementJournalHeaderEntity的公开属性,强行传递反而会触发OData字段不存在错误。
    自动编号场景下,仅需传对必填的JournalNameId即可,可选传Description等业务字段;如果对应编号序列设置为手动编号,则额外传JournalId字段传入自定义的日记账编号。
    正确的请求示例如下:
    POST [你的D365环境域名]/data/InventoryMovementJournalHeaders
    Content-Type: application/json
    Authorization: Bearer [你的有效AAD访问令牌]
    
    {
      "JournalNameId": "IMV", // 替换为你配置完成的移动类日记账名称ID
      "Description": "OData API批量创建的库存移动日记账"
    }
    
  3. 验证结果
    配置正确的前提下,上述请求会返回201 Created状态码,响应体中会携带系统自动生成的JournalId值,后续可以用这个ID继续调用日记账行实体创建行记录。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:48:13