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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2014, 10:29   #1  
Lavdislav is offline
Lavdislav
Участник
 
34 / 10 (1) +
Регистрация: 28.02.2014
Заполнение идентификатора с помощью плагина
Доброе утро!

Как в CRM 2011 сделать crmService.Retrieve на поле string? Тоесть, в этом поле просто написано слово, которое с помощью плагина заполнить идентификатор с этим словом и вопросом, но вот там где вопрос, там EntityReference, что я уже сделал, а вот с полем string не хватает мысли как реализовать.
Старый 05.03.2014, 10:47   #2  
Lavdislav is offline
Lavdislav
Участник
 
34 / 10 (1) +
Регистрация: 28.02.2014
И так, вот мой код, собственно сам вопрос добавляется в идентификатор и после того если изменить его на другой через lookup, то он меняется и в идентификаторе, но нужно ещё взять ответ (ранее упомянал как слово) с поля string и при изменении этого ответа на другой, в идентификаторе нужно чтобы тоже менялся.

Схема идентификатора: Идентификатор = Ответ (Вопрос)

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xrm.Sdk;
using Bitforit.Survey.CRM.Plugin.BaseLib;
using Microsoft.Xrm.Sdk.Query;

namespace CRM.Plugin
{
    public class AnswerBIU : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            var process = new SurveyAnswerBIUProcess(serviceProvider);
            process.LoadEntity();
            if (!process.ValidateEntityName("answertest")) return;
            if (!process.ValidateMessage(MessageName.Create, MessageName.Update)) return;
            process.Run();
        }
    }

    class AnswerBIUProcess : cf_PluginProcess
    {
        public override void Execute()
        {
            Entity self = new Entity();

            foreach (var key in TargetEntity.Attributes)
                self[key.Key] = TargetEntity[key.Key];

            if (executionContext.MessageName != MessageName.Create)
            {
                Entity record = crmService.Retrieve(TargetKey.LogicalName, TargetKey.Id, new ColumnSet("textvalue", "answer_question"));

                foreach (string field in record.Attributes.Select(m => m.Key))
                {
                    if (!self.Contains(field))
                        self[field] = record[field];
                }
            }

            if (TargetEntity.Contains("answer_question") || TargetEntity.Contains("textvalue"))
            {

                string uniq = "";

                int uniqLength = 1024;

                if (self.GetAttributeValue<string>("textvalue") != null)
                {
                    Entity answer = crmService.Retrieve(self.GetAttributeValue<EntityReference>("textvalue").Name, self.GetAttributeValue<EntityReference>("textvalue").Id, new ColumnSet("textvalue"));

                    if (answer.Contains("textvalue"))
                    {
                        uniq += answer.GetAttributeValue<string>("textvalue") + " ";
                    }
                }

                if (self.GetAttributeValue<EntityReference>("answer_question") != null)
                {
                    Entity qquestion = crmService.Retrieve(self.GetAttributeValue<EntityReference>("answer_question").LogicalName, self.GetAttributeValue<EntityReference>("answer_question").Id, new ColumnSet("question_identifikator"));

                    if (qquestion.Contains("question_identifikator"))
                    {
                        uniq += qquestion.GetAttributeValue<string>("question_identifikator") + " ";
                    }
                }

                uniq = string.Format("{0}", uniq.Length > uniqLength ? (uniq.Substring(0, uniqLength - 3) + "...") : uniq);

                TargetEntity["identifikator"] = uniq;
            }
        }
        public AnswerBIUProcess(IServiceProvider serviceProvider)
            : base(serviceProvider)
        {
        }

    }  
}

Последний раз редактировалось Lavdislav; 05.03.2014 в 10:56.
Старый 05.03.2014, 13:20   #3  
Lavdislav is offline
Lavdislav
Участник
 
34 / 10 (1) +
Регистрация: 28.02.2014
Решено... Всё оказалось просто... Я новичок, так что не судите строго.

Заменил эту часть кода:
Код:
if (self.GetAttributeValue<string>("textvalue") != null)
                {
                    Entity answer = crmService.Retrieve(self.GetAttributeValue<EntityReference>("textvalue").Name, self.GetAttributeValue<EntityReference>("textvalue").Id, new ColumnSet("textvalue"));

                    if (answer.Contains("textvalue"))
                    {
                        uniq += answer.GetAttributeValue<string>("textvalue") + " ";
                    }
                }
На:
Код:
if (self.Contains("textvalue"))
                    uniq += self.GetAttributeValue<string>("textvalue") + " (";
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Все о Microsoft Dynamics CRM: Оценка эффективности с помощью CRM – часть 3 Blog bot Dynamics CRM: Blogs 0 14.05.2012 17:11
Некорректная работа плагина в Microsoft Dynamics CRM 2011 Online Omalinka Dynamics CRM: Разработка 1 25.02.2011 16:34
выполнение функции с помощью плагина Dekan Dynamics CRM: Разработка 2 22.01.2010 12:19
Задачи, примечания и наследование createdby и modifiedby с помощью workflow в них Dissident Dynamics CRM: Функционал 0 27.10.2009 15:08
Модификая контекста плагина ZooY Dynamics CRM: Разработка 3 28.09.2008 13:52

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:43.