Показать сообщение отдельно
Старый 24.12.2009, 11:17   #3  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Все сделал как в в вашем примере, создалось письмо, но URL в письме не было.
Код:
[CrmWorkflowActivity("Сканировать", "Сканирование WEB-ресурсов")]
    public class Activity1 : SequenceActivity
    {
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
            IWorkflowContext workflowContext = contextService.Context;
            ICrmService service = workflowContext.CreateCrmService();
            Guid _entityid = workflowContext.PrimaryEntityId;
            string _entitytype = workflowContext.PrimaryEntityName;
            TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
            targetRetrieve.EntityName = _entitytype;
            targetRetrieve.EntityId = _entityid;
            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.Normalize();
            string startParse = retrievedEntity.Properties.Contains("new_startparse") ? (string)retrievedEntity["new_startparse"] : string.Empty.Normalize();
            string endParse = retrievedEntity.Properties.Contains("new_endparse") ? (string)retrievedEntity["new_endparse"] : string.Empty.Normalize();
            string folder = retrievedEntity.Properties.Contains("new_history") ? (string)retrievedEntity["new_history"] : string.Empty;
            string filtr = retrievedEntity.Properties.Contains("new_filtr") ? (string)retrievedEntity["new_filtr"] : string.Empty;
            string Code = CreateCode(startParse.Normalize(), endParse.Normalize(), ConnectToSite(url));

            String[] filt_strs = filtr.Split(' ');

            bool flag = false;
            foreach(var str in filt_strs)
            {
                flag = Code.Contains(str);
                if (flag) break;
            }

            if (flag)
            {
               //I need organization name for Url Creation
            organization org = (organization)service.Retrieve(EntityName.organization.ToString(), workflowContext.OrganizationId, new ColumnSet(new string[] { "name" }));

            string orgname = org.name;

            url = string.Format("{0}{1}/CRMReports/viewer/drillopen.aspx?ID={2}&LogicalName={3}", 
                new object[] {
                    //I retrieve url of crm server with MSCRMServices part and clear it
                    ((string)(Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\MSCRM").GetValue("ServerUrl"))).Replace("MSCRMServices", ""),
                    orgname,
                    _entityid,
                    _entitytype});

            return ActivityExecutionStatus.Closed;
            }

            Save(Code, folder);
            
            //Здесь выполняется пользовательская логика
            
            return base.Execute(executionContext);
        }
        //Задание свойства вывода
        public static DependencyProperty urlProperty = DependencyProperty.Register("url", typeof(string), typeof(Activity1));
        [CrmOutput("url")]
        public string url
        {
            get
            {
                return (string)base.GetValue(urlProperty);
            }
            set
            {
                base.SetValue(urlProperty, value);
            }
        }
А так же прикрепляю скрин шаблона сообщения. В чем может крыться ошибка? С шаблоном вроде все нормально, значит не получаем URL,но тогда почему?