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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2009, 09:22   #1  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Доброе утро! Стал проверять передались ли параметры из CRM. Добавил код создания файла, и чтобы туда загонялся переданный параметр:
Код:
namespace BP_CRMScaner
{
    [CrmWorkflowActivity("Выполнить сканирование1", "Сканирование WEB-ресурсов")]
    public class Activity1 : SequenceActivity
    {
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            //получение контекста
            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;
            //Получили необходимые атрибуты записи
            string url = retrievedEntity.Properties.Contains("new_url") ? (string)retrievedEntity["new_url"] : string.Empty;
            
 StreamWriter Sw = new StreamWriter("\\\\Uch5\\SHARE\\1.txt");
            Sw.WriteLine(url);
            Sw.Close();
        
            //Здесь выполняется пользовательская логика
            
            return base.Execute(executionContext);
        }
Никакого файла на диске я не получил. Или так делать нельзя?

Последний раз редактировалось Tarasov E; 02.11.2009 в 10:04.
Старый 02.11.2009, 10:36   #2  
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 Посмотреть сообщение
Доброе утро! Стал проверять передались ли параметры из CRM. Добавил код создания файла, и чтобы туда загонялся переданный параметр:
Код:
namespace BP_CRMScaner
{
    [CrmWorkflowActivity("Выполнить сканирование1", "Сканирование WEB-ресурсов")]
    public class Activity1 : SequenceActivity
    {
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            //получение контекста
            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;
            //Получили необходимые атрибуты записи
            string url = retrievedEntity.Properties.Contains("new_url") ? (string)retrievedEntity["new_url"] : string.Empty;
            
 StreamWriter Sw = new StreamWriter("\\\\Uch5\\SHARE\\1.txt");
            Sw.WriteLine(url);
            Sw.Close();
        
            //Здесь выполняется пользовательская логика
            
            return base.Execute(executionContext);
        }
Никакого файла на диске я не получил. Или так делать нельзя?
У учётной записи, под которой выполняется создание/модификация файлов - есть доступ за создание/редактирование в том сетевом каталоге?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 03.11.2009, 10:31   #3  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Цитата:
Сообщение от a33ik Посмотреть сообщение
У учётной записи, под которой выполняется создание/модификация файлов - есть доступ за создание/редактирование в том сетевом каталоге?
Да, доступ есть...
Старый 03.11.2009, 10:36   #4  
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 Посмотреть сообщение
Да, доступ есть...
А шаг Workflow удачно выполнился?

Попробуйте создавать файл на сервере для начала.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 03.11.2009, 10:58   #5  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Цитата:
Сообщение от a33ik Посмотреть сообщение
А шаг Workflow удачно выполнился?

Попробуйте создавать файл на сервере для начала.
Может проблема крыться в том что бизнес-процесс создан одним пользователем, а регистрировал его другой?
Старый 03.11.2009, 11:33   #6  
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 Посмотреть сообщение
Может проблема крыться в том что бизнес-процесс создан одним пользователем, а регистрировал его другой?
Врядли. С точки зрения работы с файловой системы - все работы выполняются в контексте учётной записи под которой запущен асинхронный сервис CRM.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 03.11.2009, 11:43   #7  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Цитата:
Сообщение от a33ik Посмотреть сообщение
Врядли. С точки зрения работы с файловой системы - все работы выполняются в контексте учётной записи под которой запущен асинхронный сервис CRM.
Перезапустил асинхронный сервис 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, время: 17:25.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.