RetrieveDuplicatesRequest для динамического объекта - PullRequest
0 голосов
/ 22 августа 2011

Нужен совет, я получаю GUID для дубликатов записей для созданного мной объекта настройки. Однако код, который я исследовал и обнаружил, использует бизнес-объект CRM:

RetrieveDuplicatesRequest request = new RetrieveDuplicatesRequest();
request.BusinessEntity = lead;
request.MatchingEntityName = EntityName.lead.ToString();
request.PagingInfo = new PagingInfo();

, может кто-нибудь предоставить мнессылка или помощь для динамического объекта?

Спасибо

1 Ответ

1 голос
/ 01 ноября 2011

Первое, что нужно проверить, это то, что в вашем пользовательском объекте включено обнаружение дубликатов на экране настройки объекта.Если этого не произойдет, включите его и опубликуйте объект, затем перейдите к этому коду из SDK.Этот код будет искать дубликат учетной записи на основе имени учетной записи.

// Set up the CRM service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = 0; 
token.OrganizationName = "AdventureWorksCycle";

CrmService service = new CrmService();
service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Create the account instance and set the name property.
account acct = new account();
acct.name = "Microsoft";

// Create the request object.
RetrieveDuplicatesRequest Request = new RetrieveDuplicatesRequest();
Request.BusinessEntity = acct;
Request.MatchingEntityName = EntityName.account.ToString();
Request.PagingInfo = new PagingInfo();

// Execute the request.
RetrieveDuplicatesResponse Response = 
    (RetrieveDuplicatesResponse) Service.Execute(Request);

Если вы хотите использовать динамический объект с приведенным выше кодом, просто создайте экземпляр динамического объекта вместо строк, составляющих учетную запись,и установите для ReturnDynamicEntities значение true для объекта Request.Если вы искали способ начать поиск дубликатов во всей базе данных, а не спрашивать, является ли конкретная запись дубликатом, вот код:

// Set up the CRM Service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
// You can use enums.cs from the SDK\Helpers folder to get the enumeration for Active     Directory authentication.
token.AuthenticationType = 0; 
token.OrganizationName = "AdventureWorksCycle";

CrmService service = new CrmService();
service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Create a query expression for the bulk duplicate detection.
QueryExpression query = new QueryExpression();
query.EntityName = EntityName.account.ToString();

// Create the request (do not send an e-mail).
BulkDetectDuplicatesRequest request = new BulkDetectDuplicatesRequest();
request.JobName = "Detect Duplicate Accounts";
request.Query = query;
request.RecurrencePattern = string.Empty;
request.RecurrenceStartTime = new CrmDateTime();
request.RecurrenceStartTime.Value = DateTime.Now.ToString("s");
request.SendEmailNotification = false;
request.ToRecipients = new Guid[0];
request.CCRecipients = new Guid[0];
request.TemplateId = Guid.Empty;

// Execute the request.
BulkDetectDuplicatesResponse response = (BulkDetectDuplicatesResponse)service.Execute(    request);
Guid jobId = response.JobId;

Это использует сообщение BulkDetectDyplicates.Это должно привести вас на правильный путь.

...