2017-02-15 2 views
0

契約ベースAPIを使用してAcumaticaのCustomer Orderフィールドに基づいて1つの受注を取得しようとしています。下記の私のコードを参照してください。Contract Based Documentation(82ページ)のコードに基づいています。私はこのコードを実行するとAcumatica Customer Orderフィールドで受注を取得

public SalesOrder GetSalesOrder(string orderNumber) 
{ 
    var binding = new System.ServiceModel.BasicHttpBinding() 
    { 
     AllowCookies = true, 
     MaxReceivedMessageSize = 655360, 
     MaxBufferSize = 655360, 
     SendTimeout = new TimeSpan(0, 2, 0) 
    }; 

    var soToBeFound = new SalesOrder() 
    { 
     OrderType = new StringValue { Value = "SO" }, 
     CustomerOrder = new StringValue { Value = orderNumber } 
    }; 

    var address = new System.ServiceModel.EndpointAddress(ConfigurationManager.AppSettings["AcumaticaUrl"]); 


    using (DefaultSoapClient client = new DefaultSoapClient(binding, address)) 
    { 
     client.Login(_acumaticaUid, _acumaticaPwd, _acumaticaCompany, null, null); 

     var existingOrder = (SalesOrder)client.Get(soToBeFound); 

     client.Logout(); 

     return existingOrder; 
    } 
} 

私はこの例外を取得:01:59.9880722 00の後に返事を待っている間に

要求チャネルがタイムアウトしました。 への呼び出しに渡されたタイムアウト値を増やします。バインディングでSendTimeout値を要求または増加します。この操作に割り当てられた時間 は長い タイムアウトの一部であったかもしれない。」あなたが見ることができるように、私はすでに永遠のように思えるれ、2分にタイムアウトを増加しました

。Acumatica APIです実際には、この低速または私はコード内で何か間違ったことをやっている

EDIT:?。

私が代わりに「CustomerOrderが」フィールドの「OrderNbr」フィールドで取得しようとすると、それは完璧に動作を取得していますこのように「CustomerOrder」によって許可されていない場合、「CustomerOrder」はどのように使用できますか?取得リクエストで?

答えて

2

Contract-Based APIで検索する場合、[FieldType] Valueではなく[FieldType] Search typeのインスタンスを検索条件で使用されるすべてのフィールドに割り当てる必要があります。StringValueの代わりにStringSearchを使用する必要がありますケースは):

var soToBeFound = new SalesOrder() 
{ 
    OrderType = new StringSearch { Value = "SO" }, 
    CustomerOrder = new StringSearch { Value = orderNumber } 
}; 

だけStringSearchも契約ベースのドキュメントから82ページのサンプルで使用され、確定します。

+0

これは間違いありません!ドキュメントでは、アイテムが存在しない場合はnullが返されますが、 'PX.Api.ContractBased.NoEntitySatisfiesTheConditionException'が返されることを示しています。例外をスローする代わりにNullを返すように設定できますか? –

+0

残念ながら、例外をスローする代わりにNullを返すようにAPIを設定するオプションはありません。アイテムがアプリケーションに存在しない場合は、 'NoEntitySatisfiesTheConditionException'をスローし続けます。 – RuslanDev

関連する問題