4

PHP でフィルターを Web サービスに送信すると、すべて正常に動作しますが、日付で並べ替える必要がある場合に問題が発生しました。特定の日付以降に変更されたすべてのオブジェクトを取得する必要があります。

ページには、次のような日付要素があります。

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

そして、ここで説明した解決策を SO で試しました。

Dynamics Nav (Navision) Web サービス 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 サーバーはリクエストで他の日付形式を待機しています。Nav サーバーのCustomSettings.configファイルをチェックして、キーがあるかどうかを確認し<add key="ServicesCultureDefaultUserPersonalization" value="true"/>ます。「false」に設定すると、サーバーは en-us の日付と数値の形式で動作します。

User Personalizationナビで表もチェック。前のキーが true に設定されている場合、Nav はこのテーブルでユーザーに対して定義された言語設定を使用しようとします。

何も解決しない場合は、SOAPui を試して、Nav 応答がダイレクト メッセージに正しいかどうかを確認してください (上記の形式を参照するか、soapui に wsdl ファイルをフィードしてください)。

于 2013-05-14T19:04:01.733 に答える