4

在 php 中向 web 服务发送过滤器时,一切正常,但是当我们需要对日期进行排序时,我们遇到了问题。我们需要在某个日期之后修改所有对象。

在页面中,我们有一个日期元素,如下所示:

<xsd:element minOccurs="0" maxOccurs="1" name="Last_Date_Modified" type="xsd:date"/>

我们已经尝试过这里解释的解决方案:

Dynamics Nav (Navision) webservice ReadMultiple 日期过滤器

但是我们的日期格式有点不同,我们的看起来像:2013-01-01

在我们的过滤器中,我们尝试了以下方法:

array(
    'Field' => 'Last_Date_Modified',
    'Criteria' => '20130101..'
)

还有一些其他的变化,但它不返回任何东西。如果我们将其留空,它将返回所有内容。有人知道我们能做什么吗?如果我们以某种方式将 last_modified_date 存储为像 unix 时间戳这样的 bigint 会有所帮助吗?

4

1 回答 1

7

我已经用 SOAPui 测试了类似的设置,这就是我所拥有的:

传出消息:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:obj="urn:microsoft-dynamics-schemas/page/objlist">
<soapenv:Header/>
  <soapenv:Body>
       <obj:ReadMultiple>
         <obj:filter>
            <obj:Field>Date</obj:Field>
            <obj:Criteria>&gt;=01012013</obj:Criteria>
         </obj:filter>
         <obj:bookmarkKey></obj:bookmarkKey>
         <obj:setSize></obj:setSize>
      </obj:ReadMultiple>
   </soapenv:Body>
</soapenv:Envelope>

01012013..它会导致正确的响应(自 1 月以来我在我的基础中更改了 3 条记录)如果我输入或01.01.2013..什至响应也是正确的,01/01/2013..但将返回错误以响应20130101..

作为响应,该字段具有这样的值<Date>2013-05-15</Date>,但对于我的位置来说这是不正确的格式。

因此,您的导航服务器正在等待您的请求中的其他日期格式。检查 Nav Server 的CustomSettings.config文件以查看它是否有<add key="ServicesCultureDefaultUserPersonalization" value="true"/>密钥。如果将其设置为“false”,服务器将以 en-us 日期和数字格式工作。

还要检查User Personalization导航中的表格。如果先前的键设置为 true,那么 Nav 将尝试使用在此表中为用户定义的语言设置。

如果没有任何帮助,请尝试使用 SOAPui 来确定导航响应是否对直接消息正确(请参阅上面的格式或使用您的 wsdl 文件提供 soapui)。

于 2013-05-14T19:04:01.733 回答