1

SalesAgreementHeaderこんにちは、 as テーブルのみを使用してクエリを作成しました。次に、ウィザードを使用してドキュメント aif Web サービスを作成しました。Web サービスは正常に動作しますが、更新では常に " Invalid xml document." エラーが報告されます。moveToNextElementこのエラーは、クラスのメソッドによってスローされますAxdBaseCreate

例外の理由は、

reader.fieldName() = AgreementClassification 

_expectedElementName = AgreementRelationType.

どうすればこれを修正できますか? または、これをデバッグする良い方法はありますか?

のみでクエリを作成する前SalesAgreementHeaderは、より複雑なクエリがあり、同じエラーが発生していました。次に、新しいものを作成し、SalesAgreementHeader.

更新:SalesAgreementHeader Aは まだ問題を解決していませんが、AOS でAgreementHeaderフィールドRelationTypeが表示されず、DB を直接見た場合に問題が発生する可能性があると思います。

更新 2: これはコール スタックです。

[s] \Classes\AxdBaseCreate\moveToNextElement 9

[s] \Classes\AxdBaseCreate\readSurrogateForeignKeyValue 37

[s] \Classes\AxdBaseCreate\readProperty 14

[s] \Classes\AxdBaseCreate\readProperties 122

[s] \Classes\AxdBaseUpdate\deserializeTopEntity 25

[s] \Classes\AxdBaseUpdate\deserializeDocument 131

[s] \Classes\AxdBaseUpdate\updateDocumentList 42

[s] \Classes\AxdBase\updateList 64

[s] \Classes\AifDocumentService\updateList 34

[s] \Classes\SalesAgreementService\update 4

4

1 に答える 1

1

使用しているコードを教えてください。

列挙型に基づいてフィールドを更新しようとしているという仮定があります (AgreementRelationType の名前に基づいて、これは Enim のように見えます)。その場合は、お役に立てれば幸いです。

列挙型を更新する必要がある場合は、次のアプローチを使用します。

//here is an example how to change Status on SalesTable
//as you may see when you change the value of enum you have to set boolean autogenerated field to "true". 
//Name of such fields ends with suffix "Specified"
salesTable.SalesStatus = AxdEnum_SalesStatus.Invoiced;
salesTable.SalesStatusSpecified = true;

事前に、次の try..catch ブロックを使用することをお勧めします (そうしなかった場合に備えて)。これにより、生活が楽になります。

try
{
    //your code here
}
catch (System.ServiceModel.FaultException<SalesOrderDelete.SalesOrderDeleteTcpNet.AifFault> aifFaults) // This code catches error messages even when "Logging mode = Logging is disabled" on Inbound port
{
    SalesOrderDelete.SalesOrderDeleteTcpNet.InfologMessage[] infologMessageList = aifFaults.Detail.InfologMessageList;

    foreach (SalesOrderDelete.SalesOrderDeleteTcpNet.InfologMessage infologMessage in infologMessageList)
    {

        Console.WriteLine("Exception: " + infologMessage.Message + "\n");
    }

    Console.WriteLine("\nPress any key to quit.\n");
    Console.ReadKey();
    cl.Abort();
}
于 2013-11-20T09:46:56.317 に答える