Коллеги, столкнулся со следующей неполадкой.
В одном из проектов под crm 4.0 следующий код работал идеально, а теперь возвращает Generic SQL error.
Проблема именно в поле TO - как только убираю его из запроса, он отрабатывает корректно. Поставил недавно 7 ролап. База SQL 2005.
У кого подобная конфигурация, попробуйте?
Код:
private CrmService myservice;
private CrmService service
{
get
{
if (myservice == null)
{
// connect and authenticate to CrmService
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = OrgName.Text;
myservice = new CrmService();
myservice.Url = @"http://" + CrmServername.Text + "/mscrmservices/2007/crmservice.asmx";
myservice.Credentials = new System.Net.NetworkCredential("USER", "PASS", "DOMEN"); ;
myservice.CrmAuthenticationTokenValue = token;
}
return myservice;
}
}
...
private void DeleteDupActivities()
{
try
{
#region запрос к сущности email
QueryExpression query = new QueryExpression();
query.EntityName = EntityName.email.ToString();
ColumnSet cols = new ColumnSet();
cols.Attributes = new string[] { "activityid", "description", "statecode", "statuscode", "to", "subject" };
ConditionExpression condition = new ConditionExpression();
condition.AttributeName = "activityid";
condition.Operator = ConditionOperator.NotNull;
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.And;
filter.Conditions = new ConditionExpression[] { condition };
query.ColumnSet = cols;
query.Criteria = filter;
#endregion
BusinessEntityCollection bec_email = service.RetrieveMultiple(query);
}
catch (SoapException ex)
{
textBox1.Text += ex.Detail.InnerText;
}
catch (Exception ex)
{
textBox1.Text += ex.ToString();
}
}
А вот так работает
Код:
...
for (int i = 0; i < bec_email.BusinessEntities.Length; i++) {
email oEmail = (email)service.Retrieve("email", ((email)bec_email.BusinessEntities[i]).activityid.Value, new AllColumns());
textBox1.Text += oEmail.to[0].addressused + "\r\n";
}