|
![]() |
#1 |
Чайный пьяница
|
Зависит от того каким образом Вы будете данное поле лукапа заполнять...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#2 |
Участник
|
Тоесть? При изменении значения поля какой либо записи из сущности new_web у меня запускается бизнес процесс. Как нужно заполнить поле лукапа, чтобы в экшэне я получал значения полей именно записи на которую сработал бизнес-процесс?
|
|
![]() |
#3 |
Чайный пьяница
|
Цитата:
Код: IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService)); IWorkflowContext workflowContext = contextService.Context; Guid _entityid = workflowContext.PrimaryEntityId; string _entitytype = workflowContext.PrimaryEntityName;
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#4 |
Участник
|
Эх...Ну может в будущем пригодится
![]() Цитата:
Сообщение от a33ik
![]() Запись, инициировавшую бизнес процесс можно получить из контекста плагина. При помощи такого кода можно получить тип и идентификатор записи, которая вызвала запуск Workflow:
Код: IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService)); IWorkflowContext workflowContext = contextService.Context; Guid _entityid = workflowContext.PrimaryEntityId; string _entitytype = workflowContext.PrimaryEntityName; Код: IMetadataService metadataService = workflowContext.CreateMetadataService(); RetrieveEntityRequest req = new RetrieveEntityRequest(); req.LogicalName = "new_web"; RetrieveEntityResponse resp = (RetrieveEntityResponse)metadataService.Execute(req); string myString = resp.EntityMetadata.PrimaryField; Я так понял данный код дает доступ ко всем полям записи new_web, но как получить значение конкретного поля? |
|
![]() |
#5 |
Чайный пьяница
|
Цитата:
Сообщение от Tarasov E
![]() Эх...Ну может в будущем пригодится
![]() А если использовать такой метод, то каким образом выцепляются значения полей скажем сущности new_web. В SDK откопал следующее: Код: IMetadataService metadataService = workflowContext.CreateMetadataService(); RetrieveEntityRequest req = new RetrieveEntityRequest(); req.LogicalName = "new_web"; RetrieveEntityResponse resp = (RetrieveEntityResponse)metadataService.Execute(req); string myString = resp.EntityMetadata.PrimaryField; Я так понял данный код дает доступ ко всем полям записи new_web, но как получить значение конкретного поля? Всё на самом деле проще...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от a33ik
![]() Метадата сервис Вам не за чем. Вам неоходимо RetrieveRequest использовать, а в качестве таргета использовать TargetRetrieveDynamic.
Всё на самом деле проще... Код: //получение контекста IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService)); IWorkflowContext workflowContext = contextService.Context; //Без этой строки не работало RetrieveResponse)service.Execute(retrieve); 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.EntityId = _entityid; //устанавливаем свойства метода RetrieveResponse RetrieveRequest retrieve = new RetrieveRequest(); retrieve.Target = targetRetrieve;//из какой записи берем retrieve.ColumnSet = cols;//что берем retrieve.ReturnDynamicEntities = true;//о_О RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve); 1. Не уверен в этой строке:ICrmService service = contextService.Context.CreateCrmService(false);. Точнее говоря не совсем понял зачем она, но без нее не работало (RetrieveResponse)service.Execute(retrieve); 2. Как я понял значение поля "new_url" будет хранить переменная retrieved? Или я еще ничего не получил? ![]() 3. Можно ли писать так cols.AddColumns(new string[] {"new_url", "new_comment"}); для передачи сразу всех атрибутов, и если да, то как потом поотдельности их выдирать? |
|
![]() |
#7 |
Чайный пьяница
|
Пара корректив:
Код: ColumnSet cols = new ColumnSet(); cols.AddColumns(new string[] {"new_url"}); Код: ColumnSet cols = new AllColumns(); Код: TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic(); targetRetrieve.EntityId = _entityid; Код: targetRetrieve.EntityName = _entitytype;
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|