Usuário com melhor resposta
Como gerar um serviceappointment no CRM, através de uma aplicação C#?

Pergunta
-
Olá,
Estou tentando criar um serviceappointment relacionado com um contrato, no CRM 3.0, mas estou tendo o erro abaixo.
Server was unable to process request.
An unespected error ocurred.
Meu código está abaixo:
crmServiceManager.authenticateUser(false);
CrmService service = crmServiceManager.Service;CRMContract objContract = new CRMContract();
List<contract> selectedContract = objContract.GetContractById(contratoId);
string pacienteId = selectedContract[0].customerid.Value.ToString().ToLower();serviceappointment objAtividade = new serviceappointment();
objAtividade.ownerid = new Owner();
objAtividade.ownerid.type = EntityName.systemuser.ToString();
objAtividade.ownerid.Value = new Guid(proprietarioId);// Relaciona com o contrato
objAtividade.regardingobjectid = new Lookup();
objAtividade.regardingobjectid.type = EntityName.contract.ToString();
objAtividade.regardingobjectid.Value = new Guid(contratoId.ToString());// Coloca o paciente
activityparty activitypartyCustomer = new activityparty();
activitypartyCustomer.partyid = new Lookup();
activitypartyCustomer.partyid.type = EntityName.contact.ToString();
activitypartyCustomer.partyid.Value = new Guid(pacienteId);
objAtividade.customers = new activityparty[] { activitypartyCustomer };objAtividade.subject = "[TopDentSys] Agendamento de Consulta";
CrmDateTime data = new CrmDateTime();
data.date = dtAgendamento;
data.time = horaAgendamento;
data.Value = Convert.ToDateTime(dtAgendamento + " " + horaAgendamento).ToString("yyyy-MM-ddTHH:mmsZ");
// DateTime.Parse(dtAgendamento).Year + "-" + DateTime.Parse(dtAgendamento).Month + "-" + DateTime.Parse(dtAgendamento).Day + "T00:00:00";
objAtividade.scheduledstart = data;
objAtividade.scheduledend = data;List<service> listaServicos = this.getService("Atendimentos Gerais");
Lookup serviceId = new Lookup();
serviceId.Value = new Guid(listaServicos[0].serviceid.Value.ToString().ToLower());
serviceId.name = listaServicos[0].name.ToString();
objAtividade.serviceid = serviceId;Guid ActivityId = service.Create(objAtividade);
Obrigada.
Respostas
-
Simone,
Teste com este código:
P.S.: Eu coloquei os valores de Lookup fixos para teste. Verifique em Debug se seus valores de Lookup estão corretos. Também troque as duas primeiras linhas do seu código pelas linhas do exemplo deste post, que instancia o WS do CRM, adicionando a [Web References] no seu projeto e nomeando esta referência como [wsCrmService] (coloque o namespace no seu código como [ using <seu_projeto>.wsCrmService; ] ).
CrmService service = new CrmService();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;serviceappointment objAtividade = new serviceappointment();
objAtividade.ownerid = new Owner();
objAtividade.ownerid.type = EntityName.systemuser.ToString();
objAtividade.ownerid.Value = new Guid("939E329C-9300-DB11-8860-0003FFFE96CF");// Relaciona com o contrato
objAtividade.regardingobjectid = new Lookup();
objAtividade.regardingobjectid.type = EntityName.contract.ToString();
objAtividade.regardingobjectid.Value = new Guid("A01F500F-E646-DE11-ADEE-0003FF02CF56");// Coloca o paciente
activityparty activitypartyCustomer = new activityparty();
activitypartyCustomer.partyid = new Lookup();
activitypartyCustomer.partyid.type = EntityName.contact.ToString();
activitypartyCustomer.partyid.Value = new Guid("6066F8B6-E9E3-DD11-BA10-0003FF44D03C");
objAtividade.customers = new activityparty[] { activitypartyCustomer };string dtAgendamento = System.DateTime.Now.Date.ToString();
objAtividade.subject = "[TopDentSys] Agendamento de Consulta";CrmDateTime data = new CrmDateTime();
data.Value = Convert.ToDateTime(dtAgendamento).ToString("yyyy-MM-ddTHH:mm:ss");
objAtividade.scheduledstart = data;
objAtividade.scheduledend = data;Lookup serviceId = new Lookup();
serviceId.Value = new Guid("82462F32-E746-DE11-ADEE-0003FF02CF56");
serviceId.type = EntityName.service.ToString();
objAtividade.serviceid = serviceId;try
{
Guid ActivityId = service.Create(objAtividade);
}
catch (System.Web.Services.Protocols.SoapException ex)
{
string x = ex.Detail.InnerText;
}
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Marcado como Resposta Simone Laborda sexta-feira, 22 de maio de 2009 17:53
Todas as Respostas
-
Simone,
Obtenha o detalhe do erro, da seguinte forma:
No lugar de:
Guid ActivityId = service.Create(objAtividade);
Troque por:
try
{
Guid ActivityId = service.Create(objAtividade);
}
catch (System.Web.Services.Protocols.SoapException ex)
{
string x = ex.Detail.InnerText;
}
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
-
Olá Simone,
Executei o seu código e notei o seguinte erro:
ToString("yyyy-MM-ddTHH:mmsZ");
Troque por:
ToString("yyyy-MM-ddTHH:mm:ss");
P.S.: Vc pode tb comentar as linhas que funciona:
data.date = dtAgendamento;
data.time = horaAgendamento;
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
-
Simone,
Teste com este código:
P.S.: Eu coloquei os valores de Lookup fixos para teste. Verifique em Debug se seus valores de Lookup estão corretos. Também troque as duas primeiras linhas do seu código pelas linhas do exemplo deste post, que instancia o WS do CRM, adicionando a [Web References] no seu projeto e nomeando esta referência como [wsCrmService] (coloque o namespace no seu código como [ using <seu_projeto>.wsCrmService; ] ).
CrmService service = new CrmService();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;serviceappointment objAtividade = new serviceappointment();
objAtividade.ownerid = new Owner();
objAtividade.ownerid.type = EntityName.systemuser.ToString();
objAtividade.ownerid.Value = new Guid("939E329C-9300-DB11-8860-0003FFFE96CF");// Relaciona com o contrato
objAtividade.regardingobjectid = new Lookup();
objAtividade.regardingobjectid.type = EntityName.contract.ToString();
objAtividade.regardingobjectid.Value = new Guid("A01F500F-E646-DE11-ADEE-0003FF02CF56");// Coloca o paciente
activityparty activitypartyCustomer = new activityparty();
activitypartyCustomer.partyid = new Lookup();
activitypartyCustomer.partyid.type = EntityName.contact.ToString();
activitypartyCustomer.partyid.Value = new Guid("6066F8B6-E9E3-DD11-BA10-0003FF44D03C");
objAtividade.customers = new activityparty[] { activitypartyCustomer };string dtAgendamento = System.DateTime.Now.Date.ToString();
objAtividade.subject = "[TopDentSys] Agendamento de Consulta";CrmDateTime data = new CrmDateTime();
data.Value = Convert.ToDateTime(dtAgendamento).ToString("yyyy-MM-ddTHH:mm:ss");
objAtividade.scheduledstart = data;
objAtividade.scheduledend = data;Lookup serviceId = new Lookup();
serviceId.Value = new Guid("82462F32-E746-DE11-ADEE-0003FF02CF56");
serviceId.type = EntityName.service.ToString();
objAtividade.serviceid = serviceId;try
{
Guid ActivityId = service.Create(objAtividade);
}
catch (System.Web.Services.Protocols.SoapException ex)
{
string x = ex.Detail.InnerText;
}
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Marcado como Resposta Simone Laborda sexta-feira, 22 de maio de 2009 17:53
-