19.11.2009, 12:53 | #32 |
Чайный пьяница
|
Цитата:
Сообщение от 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 |
|