我可以在XMLPort中以我想要的方式使用NAV表记录中的Key字段吗?

时间:2014-04-25 15:38:00

标签: web-services dynamics-nav

特别是在NAV 2013中。当我使用Page webservice查找记录时,我收到如下响应:

<Soap:Envelope xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/">
    <Soap:Body>
        <ReadMultiple_Result xmlns="urn:microsoft-dynamics-schemas/page/[PAGENAME]">
            <ReadMultiple_Result>
                <[RECORDNAME]>
                    <Key>##;[KEYSTUFF KEYSTUFF KEYSTUFF];[OTHER KEYSTUFF];</Key>
                    <[OTHERFIELD]>[OTHERDATA]</[OTHERFIELD]>
                </[RECORDNAME]>
            </ReadMultiple_Result>
        </ReadMultiple_Result>
    </Soap:Body>
</Soap:Envelope>

...然后,如果我想通过网络服务与该记录进行交互以执行UpdateDelete,我必须使用Key字段来引用它直接

我想知道的是,我是否可以通过Codeunit Web服务公开XMLPort,并且仍然直接导出Key字段,或者如果我必须进行单独查找以将其添加到导出中每一行?或者,如果将此信息作为页面公开可能更有意义,因为我计划与记录进行交互?

1 个答案:

答案 0 :(得分:1)

this question中,一个人声明

  

至少部分密钥是构成主键的列的Base64编码字符串

因此密钥的第一部分是某种salt或时间戳,用于避免在通过公开页面进行更新时覆盖记录。

Nav中没有允许为某些记录计算Web服务密钥的功能,也无法在C / AL中使用此密钥来获取记录。

如果您打算使用公开的codeunit进行读取和写入,则可以使用XML port Direction属性设置为Both作为过程参数来读取和更新记录表(一个或多个)。当然,在这种情况下,您必须使用XML端口中的所有主键字段来标识记录。