日期过滤器在Microsoft Dynamics NAV Web服务(Date filter in

2019-09-03 03:08发布

当发送一个滤光器在PHP一切web服务工作正常,但是当我们需要排序的日期,我们遇到了一个问题。 我们需要得到一个特定日期之后修改的所有对象。

在一个页面,我们有一个日期元素,像这样:

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

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

动态NAV(Navision的)Web服务ReadMultiple日期过滤器

但是,我们的日期格式是有点不同,我们是这样的: 2013-01-01

在我们的过滤器,我们已经试过如下:

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

还有一些其他的变化,但它不会返回任何东西。 如果我们将其留空它返回的一切。 没有人有一个想法,我们能做些什么? 它是否有助于如果我们以某种方式保存在LAST_MODIFIED_DATE像Unix时间戳一个BIGINT?

Answer 1:

我测试过类似的设置与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>

它导致正确的响应(月以来有3条我在我的基地更改)同样的反应是正确的,如果我把01012013..01.01.2013..甚至01/01/2013..但错误将在响应中返回为20130101..

在响应此领域有这样值<Date>2013-05-15</Date>这是我的位置不正确的格式虽然。

所以,你的导航服务器是在您的要求等一些其他的日期格式。 检查导航服务器的CustomSettings.config文件,看它是否已<add key="ServicesCultureDefaultUserPersonalization" value="true"/>键。 如果你将其设置为“假”服务器将会工作在EN-US日期和数字格式。

同时检查User Personalization表中导航。 如果以前的密钥设置为true,那么净资产值将尝试使用用户在该表中定义的语言设置。

如果没有什么帮助soapUI的尝试,以找出是否应对资产净值正确的直接消息(见上格式或WSDL文件饲料的soapUI)。



文章来源: Date filter in Microsoft Dynamics NAV webservice