0

私が何か悪いことをしているなら、私に我慢してください。C# から Nav の一部のデータを更新しようとしましたが、何をしてもエラーが発生します。

私のコードユニットは次のようになります。これは、更新に使用する必要がある私の方法です:

<operation name="OpdaterVogn">
    <operation soapAction="urn:microsoft-dynamics-schemas/codeunit/BMG:OpdaterVogn"style="document"/>
  <input name="OpdaterVogn">
    <body use="literal"/>
  </input>
  <output name="OpdaterVogn_Result">
    <body use="literal"/>
  </output>
</operation>

コードユニットを介して渡されるオブジェクトも表示されます。

<schema elementFormDefault="qualified" targetNamespace="urn:microsoft-dynamics-nav/xmlports/x78001">
  <complexType name="VognType">
    <sequence>
      <element minOccurs="1" maxOccurs="1" name="Kode" type="string"/>
      <element minOccurs="1" maxOccurs="1" name="RegNr" type="string"/>
      <element minOccurs="1" maxOccurs="1" name="Beskrivelse" type="string"/>
      <element minOccurs="1" maxOccurs="1" default="false" name="Spaerret" type="boolean"/>
    </sequence>
  </complexType>
  <complexType name="Vogn" mixed="true">
    <sequence>
      <element minOccurs="1" maxOccurs="unbounded" name="Vogn" type="tns:VognType"/>
    </sequence>
  </complexType>
  <element name="Vogn" type="tns:Vogn"/>
</schema>

とにかく、C# に移ると、データを C# に渡して確認できます。今、メソッドで「vogn」を更新したいと思います。

現時点で私のコードは次のようになります。

        BMGWS ws = new BMGWS();
        Vogn vogne = new Vogn();
        VognType vogn = new VognType();
        ws.UseDefaultCredentials = true;

        ws.SendVogn("BMG 2013", false, ref vogne);

        vogn = vogne.Vogn1[0];
        string kode = vogn.Kode;
        string beskrivelse = vogn.Beskrivelse;
        string regnr = vogn.RegNr;
        bool spaerret = vogn.Spaerret;

        Vogn vogneNy = new Vogn();
        VognType vognNy = new VognType();
        vognNy.Kode = kode; // string value to update
        vognNy.Beskrivelse = beskrivelse; // string value to update
        vognNy.RegNr = regnr; // string value to update 
        vognNy.Spaerret = spaerret; // Bool value to update 

        List<VognType> list = new List<VognType>();
        list.Add(vognNy);
        vogneNy.Vogn1 = list.ToArray();
        vogneNy.Vogn1[0] = vognNy;


        ws.OpdaterVogn("BMG 2013", vogneNy);

私の最後の方法は機能しません。次のエラーが表示されます。

{"要素<Kode>は、最小発生値で期待されます: 1 回。受信した要素: <>."}

うまくいけば、皆さんがここで私を助けてくれます...

4

1 に答える 1

1

Nav の XmlPorts で Codeunits を使用していると思います。以下のリンクをたどって、MinOccurs と MaxOccurs について少し下にスクロールする必要があります。具体的には、Nav の XMLPort で指定する必要があります。

http://www.kauffmann.nl/blog/index.php/2011/02/24/how-to-use-xmlports-in-web-services-2/

于 2013-10-02T14:25:35.217 に答える