1

更新、注文、投稿操作が登録されているプラ​​グインがあります。プラグインでは、salesorderdetail で複数の取得を実行します。私が抱えている問題は、注文を構成する 3 つの製品があることですが、検索操作から 5 行を返しています。テスト中に同じ製品を何度も追加および削除しましたが、それが問題の原因であるかどうかはわかりません。注文から製品を削除した後、フラグが設定されて削除される可能性があると考えていましたが、属性としてステータス コードまたは状態コードが表示されません。返される行が多すぎるのはなぜですか?

これが私のコードです...

// Set the properties of the QueryExpression object.
orderDetailQuery.EntityName = "salesorderdetail";
orderDetailQuery.ColumnSet = orderDetailColumnSet;

EntityCollection salesOrderDetail = service.RetrieveMultiple(orderDetailQuery);

orderProductQuery.EntityName = "product";
orderProductQuery.ColumnSet = orderProductColumnSet;

foreach (var orderDetail in salesOrderDetail.Entities)
{
     if(orderDetail.Attributes.Contains("productid"))
     {
         productGuid = ((EntityReference)orderDetail["productid"]).Id;
         Entity product = service.Retrieve("product", productGuid, orderProductColumnSet);
      }
 }

お手伝いありがとう!!

4

2 に答える 2

1

投稿したコードは、特定の .xml のフィルタリングを示していませんOrder

システム内のそのタイプのすべてのエンティティを取得することを期待しています。

を使用していると仮定してQueryByAttributeフィルタリングするには、次の行に沿ってフィルタを追加します。

var query = new QueryByAttribute();
query.EntityName = "salesorderdetail";
query.AddAttributeValue("orderid", orderId);//orderId is the Id of the parent Order 
orderDetailQuery.EntityName = "salesorderdetail";
orderDetailQuery.ColumnSet = orderDetailColumnSet;
var results = service.RetrieveMultiple(query);

そうすれば、クエリを特定の注文の製品だけに制限できます。

于 2013-03-16T09:55:13.457 に答える
0

フィルタリングが実装されているかどうかわかりません。これは、 GUID orderIdで注文にリンクされている場合に、 fieldName1およびfieldName2フィールドの値を取得して、SalesOrderDetailエンティティのインスタンスをクエリする方法に関するヒップからのショットです。

QueryExpression query = new QueryExpression
{
  EntityName = "salesorderdetail",
  ColumnSet = new ColumnSet("fieldName1", "fieldName2"),
  Criteria = new FilterExpression
  {
    Conditions = 
    {
      new ConditionExpression 
      {
        AttributeName = "orderid",
        Operator = ConditionOperator.Equal,
        Values = { orderId }
      }
    }
  }
};
于 2013-03-16T12:36:56.640 に答える