同じプラグイン内のさまざまなエンティティからデータを返すために一般的に使用されるクエリがあります。クエリでは、new ColumnSet(true) を使用してすべての列を返すことを選択しました。
ほとんどの場合、これは問題なく機能しますが、いくつかのフィールドを元に戻すことができないエンティティが 1 つあります。これらのフィールドは別のプラグインを使用して計算されますが、値はフォームとビューに表示されるため、レコード自体に保持されているように見えます。ただし、クエリでは返されません。
私はロングショットとして、プラグインではなく自分で値を設定するインポートを介して独自のレコードを作成しようとしました。これらの値は、この方法で実行すると見つかりますが、他のレコードについてはまだ欠落しています。
誰かが何か問題を見つけた場合に備えて、以下にクエリをコピーしました。
//set up query for entity
QueryExpression query;
query = new QueryExpression();
query.EntityName = entityName;
query.ColumnSet = new ColumnSet(true);
query.PageInfo.ReturnTotalRecordCount = true;
//get the results
EntityCollection SourceRecords = new EntityCollection();
int pageNumber = 1;
RetrieveMultipleRequest req;
RetrieveMultipleResponse resp = new RetrieveMultipleResponse(); ;
do
{
query.PageInfo.Count = 5000;
query.PageInfo.PagingCookie = (pageNumber == 1) ? null : resp.EntityCollection.PagingCookie;
query.PageInfo.PageNumber = pageNumber++;
req = new RetrieveMultipleRequest();
req.Query = query;
resp = (RetrieveMultipleResponse)SourceOrgService.Execute(req);
SourceRecords.Entities.AddRange(resp.EntityCollection.Entities);
}
while (resp.EntityCollection.MoreRecords);