簡単な答え:GPWebサービスを介してクエリを実行することはできません。ウェアハウスキーでさえ、GetSalesOrderListの受け入れられた基準ではありません。やりたいことを行うには、eConnectにドロップするか、テーブルに直接アクセスする必要があります。Microsoft.Dynamics.GP.eConnectおよびMicrosoft.Dynamics.GP.eConnect.Serializationライブラリ(私が強くお勧めします)を使用する場合、eConnectは.Netで長い道のりを歩んできました。ただし、eConnectでも、ラインアイテムの値ではなく、ドキュメントヘッダーに基づいてクエリを実行する必要があるため、テーブルに直接アクセスすることが、それを機能させる唯一の方法である可能性があります。
eConnectで必要となる重要な要素は、有効なRQeConnectOutTypeを生成することです。「ForList=1」の部分に注意してください。それは重要です。私は似たようなことをしたので、これが最初のようになります(WhereClauseの機能を試す必要がありますが、単純な同等以上のことはしていません)。
private RQeConnectOutType getRequest(string warehouseId)
{
eConnectOut outDoc = new eConnectOut()
{
DOCTYPE = "Sales_Transaction",
OUTPUTTYPE = 1,
FORLIST = 1,
INDEX1FROM = "A001",
INDEX1TO = "Z001",
WhereClause = string.Format("WarehouseId = '{0}'", warehouseId)
};
RQeConnectOutType outType = new RQeConnectOutType()
{
eConnectOut = outDoc
};
return outType;
}
テーブルに直接アクセスする必要がある場合は、組み込みのビューの1つを使用することをお勧めします。この場合、ReqSOLineViewには必要なフィールド(warehouseIdsのLOCNCODE、入荷待ちの数量のQTYBAOR、および要求された出荷日のReqShipDate)があるように見えます。SOPNUMBEをプルし、GetSalesOrderByKeyの呼び出しで使用します。
はい、ハイブリッドソリューションはちょっと大変ですが、複雑なものにGP Webサービスを使用する場合は、本当に適応する必要があることがわかりました。個人的には、アクセスタイプごとにライブラリを分離してから、それらを調整するために使用しているプロセスに固有のライブラリを使用します。つまり、Integration.GPWebServices、Integration.eConnect、およびIntegration.Dataライブラリがあり、これらは実際にどこでも使用しており、個々のプロセスライブラリはそれらの上で調整されます。