Тема: Retrieve Email TO
Показать сообщение отдельно
Старый 30.11.2009, 20:31   #1  
SVK is offline
SVK
Участник
Аватар для SVK
 
36 / 10 (1) +
Регистрация: 20.09.2005
Адрес: Москва
Retrieve Email TO
Коллеги, столкнулся со следующей неполадкой.
В одном из проектов под 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";
                }
__________________
CRM programmer

Последний раз редактировалось SVK; 30.11.2009 в 20:45. Причина: дополнение