AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.11.2009, 12:17   #61  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Tarasov E Посмотреть сообщение
В случае с Retrieve делал так:
Код:
targetRetrieve.EntityName = _entitytype;
 targetRetrieve.EntityId = _entityid;
,
но в случае в update не знаю как передать айдишник вызвавшей бизнес-процесс записи. Делаю пока только так:
Код:
targetUpdate.Entity.Name = _entitytype;
Есть же поисковые механизмы... Например один из результатов:
http://nishantrana.wordpress.com/200...t-dynamic-crm/
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Tarasov E (1).
Старый 19.11.2009, 12:34   #62  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Воспользовался данным примером, но поле new_scandate не обновилось. Возможно ошибка в настройках CRM сервиса?
Вот код:
Код:
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            //Настройка CRM сервиса
            CrmAuthenticationToken myToken = new CrmAuthenticationToken();
            myToken.OrganizationName = "Keysystems";
            myToken.AuthenticationType = 0;
            CrmService myService = new CrmService();
            myService.Credentials = System.Net.CredentialCache.DefaultCredentials;
            myService.Url = "http://vms:5555/MSCrmServices/2007/CrmService.asmx";
            myService.CrmAuthenticationTokenValue = myToken;
            //получение контекста
            IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
            IWorkflowContext workflowContext = contextService.Context;
            ICrmService service = contextService.Context.CreateCrmService(false);
            //Получаем идентификатор записи, породившей запуск бизнес-процесса
            Guid _entityid = workflowContext.PrimaryEntityId;
            string _entitytype = workflowContext.PrimaryEntityName;
            //указываем, какие атрибуты надо получить из CRM
            //ColumnSet cols = new ColumnSet();
            //cols.AddColumns(new string[] {"new_url"});
            //Указываем ID записи, у которой надо получить атрибуты
            TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
            targetRetrieve.EntityName = _entitytype;
            targetRetrieve.EntityId = _entityid;
            //устанавливаем свойства метода RetrieveResponse
            RetrieveRequest retrieve = new RetrieveRequest();
            retrieve.Target = targetRetrieve;//из какой записи берем
            retrieve.ColumnSet = new AllColumns();//что берем
            retrieve.ReturnDynamicEntities = true;//о_О
            RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve);
            //Получили саму запись
            DynamicEntity retrievedEntity = (DynamicEntity)retrieved.BusinessEntity;
            //Получили необходимые атрибуты записи
            CrmDateTime sdt = retrievedEntity.Properties.Contains("new_scandate") ? (CrmDateTime)retrievedEntity["new_scandate"] : CrmDateTime.Now;
            string period = retrievedEntity.Properties.Contains("new_periodical") ? (string)retrievedEntity["new_periodical"]: string.Empty;
            double hours = Convert.ToDouble(period);
            DateTime time = Convert.ToDateTime(sdt.Value);
            CrmDateTime dateTime = new CrmDateTime();
            dateTime.Value = time.AddHours(hours).ToString("yyyy-MM-ddTHH:mm:ss")+"+03:00";
           
 //Обновление записи в CRM
            DynamicEntity myDEUpdate = new DynamicEntity();
            myDEUpdate.Name = "new_web";
            KeyProperty myContactGuid = new KeyProperty();
            myContactGuid.Name = "new_webid";
            Key myContactKey=new Key();
            myContactKey.Value=_entityid; //идентификатор записи породившей бизнес-процесс
            myContactGuid.Value = myContactKey;
            myDEUpdate.Properties.Add(myContactGuid);
            // Create a StringProperty with the new updated value
            StringProperty myDateU = new StringProperty();
            myDateU.Name = "new_scandate";
            myDateU.Value = dateTime.Value; ;
            myDEUpdate.Properties.Add(myDateU);
            try
                {
                myService.Update(myDEUpdate);
                }
            catch (SoapException ex)
                {
                    MessageBox.Show(ex.Detail.InnerXml);
                }
                        
             return base.Execute(executionContext);
        }
Старый 19.11.2009, 12:53   #63  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Tarasov E Посмотреть сообщение
Воспользовался данным примером, но поле new_scandate не обновилось. Возможно ошибка в настройках CRM сервиса?
Вот код:
Код:
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            //Настройка CRM сервиса
            CrmAuthenticationToken myToken = new CrmAuthenticationToken();
            myToken.OrganizationName = "Keysystems";
            myToken.AuthenticationType = 0;
            CrmService myService = new CrmService();
            myService.Credentials = System.Net.CredentialCache.DefaultCredentials;
            myService.Url = "http://vms:5555/MSCrmServices/2007/CrmService.asmx";
            myService.CrmAuthenticationTokenValue = myToken;
            //получение контекста
            IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
            IWorkflowContext workflowContext = contextService.Context;
            ICrmService service = contextService.Context.CreateCrmService(false);
            //Получаем идентификатор записи, породившей запуск бизнес-процесса
            Guid _entityid = workflowContext.PrimaryEntityId;
            string _entitytype = workflowContext.PrimaryEntityName;
            //указываем, какие атрибуты надо получить из CRM
            //ColumnSet cols = new ColumnSet();
            //cols.AddColumns(new string[] {"new_url"});
            //Указываем ID записи, у которой надо получить атрибуты
            TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
            targetRetrieve.EntityName = _entitytype;
            targetRetrieve.EntityId = _entityid;
            //устанавливаем свойства метода RetrieveResponse
            RetrieveRequest retrieve = new RetrieveRequest();
            retrieve.Target = targetRetrieve;//из какой записи берем
            retrieve.ColumnSet = new AllColumns();//что берем
            retrieve.ReturnDynamicEntities = true;//о_О
            RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve);
            //Получили саму запись
            DynamicEntity retrievedEntity = (DynamicEntity)retrieved.BusinessEntity;
            //Получили необходимые атрибуты записи
            CrmDateTime sdt = retrievedEntity.Properties.Contains("new_scandate") ? (CrmDateTime)retrievedEntity["new_scandate"] : CrmDateTime.Now;
            string period = retrievedEntity.Properties.Contains("new_periodical") ? (string)retrievedEntity["new_periodical"]: string.Empty;
            double hours = Convert.ToDouble(period);
            DateTime time = Convert.ToDateTime(sdt.Value);
            CrmDateTime dateTime = new CrmDateTime();
            dateTime.Value = time.AddHours(hours).ToString("yyyy-MM-ddTHH:mm:ss")+"+03:00";
           
 //Обновление записи в CRM
            DynamicEntity myDEUpdate = new DynamicEntity();
            myDEUpdate.Name = "new_web";
            KeyProperty myContactGuid = new KeyProperty();
            myContactGuid.Name = "new_webid";
            Key myContactKey=new Key();
            myContactKey.Value=_entityid; //идентификатор записи породившей бизнес-процесс
            myContactGuid.Value = myContactKey;
            myDEUpdate.Properties.Add(myContactGuid);
            // Create a StringProperty with the new updated value
            StringProperty myDateU = new StringProperty();
            myDateU.Name = "new_scandate";
            myDateU.Value = dateTime.Value; ;
            myDEUpdate.Properties.Add(myDateU);
            try
                {
                myService.Update(myDEUpdate);
                }
            catch (SoapException ex)
                {
                    MessageBox.Show(ex.Detail.InnerXml);
                }
                        
             return base.Execute(executionContext);
        }
Тяжело чтото сказать вразумительное. Отлаживайте.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 24.11.2009, 08:53   #64  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Доброе утро! Для отладки стал регистрировать стэп на Disk и при регистрации мне вернулась вот такая ошибка:
Код:
Unhandled Exception: System.Web.Services.Protocols.SoapException: Server was unable to process request.
Detail: <detail><error>
  <code>0x80040216</code>
  <description>An unexpected error occurred.</description>
  <type>Platform</type>
</error></detail>
   в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   в PluginRegistrationTool.CrmSdk.CrmService.Create(BusinessEntity entity)
   в PluginRegistrationTool.RegistrationHelper.RegisterPluginType(CrmOrganization org, CrmPlugin plugin)
   в PluginRegistrationTool.PluginRegistrationForm.btnRegister_Click(Object sender, EventArgs e)
Из-за чего может возникать данная ошибка? При регистрации в Database все было нормально...
Старый 24.11.2009, 10:22   #65  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Tarasov E Посмотреть сообщение
Доброе утро! Для отладки стал регистрировать стэп на Disk и при регистрации мне вернулась вот такая ошибка:
Код:
Unhandled Exception: System.Web.Services.Protocols.SoapException: Server was unable to process request.
Detail: <detail><error>
  <code>0x80040216</code>
  <description>An unexpected error occurred.</description>
  <type>Platform</type>
</error></detail>
   в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   в PluginRegistrationTool.CrmSdk.CrmService.Create(BusinessEntity entity)
   в PluginRegistrationTool.RegistrationHelper.RegisterPluginType(CrmOrganization org, CrmPlugin plugin)
   в PluginRegistrationTool.PluginRegistrationForm.btnRegister_Click(Object sender, EventArgs e)
Из-за чего может возникать данная ошибка? При регистрации в Database все было нормально...
1. Для отладки не обязательно регистрировать сборку на файловой системе. Достаточно pdb файл скопировать в bin\assembly каталог.
2. Ошибка нечитабельна. Попытайтесь посмотреть trace CRM. Ответ может быть там.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 24.11.2009, 15:29   #66  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Спасибо, с регистрацией разобрались.
Почему не записывались данные тоже, но как правильно сделать преобразования не могу разобраться.
Делал как описано:
Код:
CrmDateTime dateTime = new CrmDateTime();
dateTime.Value = time.AddHours(hours).ToString("yyyy-MM-ddTHH:mm:ss")+"+03:00";
Но при записи данных в поле "new_scandate" типа DateTime в коде:
Код:
   try
            {
                myService.Update(myDEUpdate);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
ex.Messge = {"Server was unable to process request."}
Если же те же самые данные записываю в текстовое поле "new_url" , то данные записываются нормально.
Хотя как написано здесь:
Цитата:
Property Value
The value of this property is a String type.
и причем следующего формата:
Цитата:
yyyy-MM-ddTHH:mm:ss Offset

Where Offset is one of the following:

+##:##
Старый 24.11.2009, 16:11   #67  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Tarasov E Посмотреть сообщение
Спасибо, с регистрацией разобрались.
Почему не записывались данные тоже, но как правильно сделать преобразования не могу разобраться.
Делал как описано:
Код:
CrmDateTime dateTime = new CrmDateTime();
dateTime.Value = time.AddHours(hours).ToString("yyyy-MM-ddTHH:mm:ss")+"+03:00";
Но при записи данных в поле "new_scandate" типа DateTime в коде:
Код:
   try
            {
                myService.Update(myDEUpdate);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
ex.Messge = {"Server was unable to process request."}
Если же те же самые данные записываю в текстовое поле "new_url" , то данные записываются нормально.
Хотя как написано здесь:

и причем следующего формата:
Для обработки исключений и исознания причины проблем пользуйтесь такой конструкцией:

catch (SoapException ex)
{
Console.WriteLine(ex.Detail.InnerText);
}
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 28.12.2009, 18:16   #68  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Позвольте и мои 5 копеек...
Тоже была аналогичная задача: периодичность запуска, получение данных из базы и всё такое. Воротить код для процесса не стал. Сделал новую сущность под названием "Задание", при создании которой отрабатывает плагин, запускающий серверный скрипт, определяемый параметрами задания. При этом, при создании нового задания запускается воркфлоу, который ждет 20 минут и создает новое задание. Так у меня раз в 20 минут происходит проверка содержимого базы проджекта на предмет появления новых узлов проектов и в базе CRM появляются новые записи возможных сделок.
Элементарное решение вопроса, а запуск серверного скрипта не омрачается контекстом воркфлоу.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Бизнес-процесс висит в состоянии ожидания Evgenia_f Dynamics CRM: Функционал 70 21.12.2009 18:53
Странности бизнес-процесса на изменение атрибутов записи SLK Dynamics CRM: Функционал 6 19.05.2009 08:14
Событие "Назначение записи" для бизнес-процесса Lazarus Dynamics CRM: Функционал 1 22.01.2009 19:54
Работает неопубликованный бизнес-процесс sergeyjb Dynamics CRM: Разработка 1 22.12.2008 09:16
Бизнес-процесс и список ожидания Evgenia_f Dynamics CRM: Разработка 16 07.10.2008 16:22

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:13.