|
![]() |
#1 |
Чайный пьяница
|
Цитата:
http://nishantrana.wordpress.com/200...t-dynamic-crm/
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Tarasov E (1). |
![]() |
#2 |
Участник
|
Воспользовался данным примером, но поле 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); } |
|
![]() |
#3 |
Чайный пьяница
|
Цитата:
Сообщение от 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 |
|
![]() |
#4 |
Участник
|
Доброе утро! Для отладки стал регистрировать стэп на 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) |
|
![]() |
#5 |
Чайный пьяница
|
Цитата:
Сообщение от 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) 2. Ошибка нечитабельна. Попытайтесь посмотреть trace CRM. Ответ может быть там.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#6 |
Участник
|
Спасибо, с регистрацией разобрались.
Почему не записывались данные тоже, но как правильно сделать преобразования не могу разобраться. Делал как описано: Код: CrmDateTime dateTime = new CrmDateTime(); dateTime.Value = time.AddHours(hours).ToString("yyyy-MM-ddTHH:mm:ss")+"+03:00"; Код: try { myService.Update(myDEUpdate); } catch (Exception ex) { Console.WriteLine(ex.Message); } Если же те же самые данные записываю в текстовое поле "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: +##:## |
|
![]() |
#7 |
Чайный пьяница
|
Цитата:
Сообщение от Tarasov E
![]() Спасибо, с регистрацией разобрались.
Почему не записывались данные тоже, но как правильно сделать преобразования не могу разобраться. Делал как описано: Код: CrmDateTime dateTime = new CrmDateTime(); dateTime.Value = time.AddHours(hours).ToString("yyyy-MM-ddTHH:mm:ss")+"+03:00"; Код: try { myService.Update(myDEUpdate); } catch (Exception ex) { Console.WriteLine(ex.Message); } Если же те же самые данные записываю в текстовое поле "new_url" , то данные записываются нормально. Хотя как написано здесь: и причем следующего формата: catch (SoapException ex) { Console.WriteLine(ex.Detail.InnerText); }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|